自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

原创 L2-016 愿天下有情人都是失散多年的兄妹 (25分)-DFS

呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚?输入格式:输入第一行给出一个正整数N(2 ≤ N ≤10​4​​ ),随后N行,每行按以下格式给出一个人的信息:本人ID 性别 父亲ID 母亲ID其中ID是5位数字,每人不同;性别M代表男性、F代表女性。如...

2020-04-30 16:54:01 869

原创 二叉树的镜像输出

L2-011 玩转二叉树 (25分)给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树反转后的层序遍历...

2020-04-30 15:41:28 295

原创 L2-010 排座位 (25分) - 模拟+并查集

布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。输入格式:输入第一行给出3个正整数:N(≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:宾客1 宾客2 关系...

2020-04-30 11:49:32 429

原创 GPLT-L2-006-树的遍历

给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6...

2020-04-29 23:02:15 194

原创 字符串之间的距离 - 简单二维DP

问题描述:编辑距离(Edit Distance)是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数,编辑操作包括增、删、改操作。例如将kitten一字转成sitting:sitten (k→s)sittin (e→i)sitting (→g),最短编辑距离为3.样例:kittensitting3思路:和查找最长公共子序列有点类似,利用dp[i][j]表示字符串1的i位置和字...

2020-04-29 17:57:39 235

原创 离散化优化树状数组--解决数据过大问题

首先,引入一个问题:题目描述:对序列中的每个数,求出序列装哪个他左边比他小的数的个数比如:2 5 1 3 4比如5的左边比他小的就只有2,也就是只有1个比他小 ;那么,本题可以利用树状数组来解决,只需要当当前数字出现的时候,更新树状数组即可,代码如下:/*题目描述:对序列中的每个数,求出序列装哪个他左边比他小的数的个数比如:2 5 1 3 4比如5的左边比他小的就只有2,也就是只有...

2020-04-28 19:38:28 346

原创 PAT-A1076-Forwards on Weibo-BFS

Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may follow many other users as well. Hence a social network is formed with followers relations. When a ...

2020-04-27 22:58:23 93

原创 PAT -A1032 Sharing (25分)

题目大家可以搜到,意思就是查找两个链表第一个共有的那个节点,如果没找到的话就输出-1,找到的话就输出那个节点的地址,解法很简单,就是利用一个数组来保存两个链表即可,因为一个节点智能保存一个下地址,所以用一个数组保存地址即可。代码如下://@author:hairu,wu//@from:ahut#include<iostream>#include<memory.h>...

2020-04-27 16:48:26 100

原创 树状数组的简单介绍和C++实现

有关树状数组,大家可以参考网上介绍,这里,我简单介绍一下树状数组的实现:树状数组作用:可以用于区间查询和单点更新:比如,查询数组中从下标为2到4的值的和,那么就可以用到区间查询,这里的区间查询函数可以计算从1-n的值,根据个人的需要,就可以利用区间查询来计算出自己需要的值;那么单点更新就是说:可以在某一位加上或者减去某一个数字,同时更新树状数组的值即可。以上的功能实现都取决于这个树状数组C的...

2020-04-27 11:30:23 203

原创 判断是否是DAG-利用拓扑排序

//输入:n:0-n-1点,m:m条有向边//输出:是否是DAG//@author:hairu,wu#include<iostream>#include<vector> #include<queue>using namespace std;const int max_n=100;vector<int> edge[max_n]; //...

2020-04-25 17:16:48 249

原创 整除问题,给定n和a,求最大的k,使n!可被a^k整除但不能被a^(k+1)整除

整除问题,给定n和a,求最大的k,使n!可被ak整除但不能被a(k+1)整除,其实就是素数问题和模运算问题的提升版:比如输入:n=6,a=10,输出:1;因为n!很大,所以不能用普通的int或者long long 去存储,这里介绍一种方法,利用赵公共素因子的方式去解决即可。比如n=6,那么6的阶乘所含有的因子为:2222335;10的因子有:25;所以如果n!要整除10,我们可以看出如果1010,...

2020-04-23 19:44:11 616

原创 BST的C++实现

//@author:hairu,wu#include<iostream>using namespace std;struct Tree{ int data; Tree *lchild,*rchild;};void Insert(Tree* &tree,int x){ if(tree==NULL){ tree = new Tree(); tree-&g...

2020-04-23 17:30:57 566

原创 中缀表达式转为后缀表达式-C++实现

这个思路知识点相信大家都可以搜到,我直接放出C++实现的代码,用电栈和队列,为了区别放入队列的是符号还是数字,我们用一个结构体去标识即可#include<iostream>#include<map> #include<stack>#include<queue> using namespace std;//设置优先级 map<cha...

2020-04-23 16:50:28 250

原创 根据二叉树的中序和后序来且先序序列

比如:中序为BADC,后序为BDCA,输出先序序列为ABCD,可以利用递归实现://@author:hairu,wu#include<iostream>using namespace std;string instr,laststr; //中序和后序序列 int len=0;//输出先序序列 void fun(int inbegin,int inend,int las...

2020-04-21 21:25:38 158

原创 计蒜客-A1005-淘汰赛车-(模拟)

本题题目较长,乍一看起来不太好明白,确实,也不是太好些,但是我们自习分析一下,首先是存储的问题,如何存储?首先我们可以将小车 设一个结构体,然后保存其起点和终点,同时保存其来回跑的长度;然后我们对于每一次询问,遍历每辆车,如果符合条件,也就是在t时间的时候,如果这两车跑了t距离,且正好在范围之内,那么ans++;如何判断在范围内,这里注意一点,如果直接取模,肯定不对,因为他不是到了终点之后,...

2020-04-21 19:40:15 241

原创 计蒜客A1004-非递归树的中序遍历(数组模拟二叉树)

本题,先用getline获取一行数据,然后对每一组数据进行处理,用两个数组分别保存某个节点的左孩子以及右孩子,那么保存的是ascii码值,这样在中序遍历的时候,可以采用递归的方式,代码如下://@author:hairu,wu#include<iostream>using namespace std;const int max_n=1e4;int lchild[max_n...

2020-04-21 18:49:22 207

原创 计蒜客-A1003-合并两个飞有序的链表(C++vector实现)

本题测试用例比较坑,一开始我是按照两两按照序号对比,然后每次添加两个,发现过不了,然后就看了一下网上大神写的,发现应该是如果第一个小于等于第二个数,那么第一个指针偏移,只能说明用例不清楚,然后输入的时候用cin输入可以输入整数,然后char ch,用ch接收字符判断即可,用vector存储。//@author:hairu,wu#include<iostream>#includ...

2020-04-21 17:46:42 177

原创 推荐几个工具-实现前端页面数据的可视化

1:可以绘制数据的多种图表的显示,比如折线图,柱状图,等等,很实用,只需要在script中引入即可,这个就是Chart.js库,学习地址如下:https://chartjs.bootcss.com/docs,很不错。效果如下:2:实现数据在中国地图上的显示,也很不错eChart.js,学习地址为:,效果为:...

2020-04-19 21:23:17 1484

原创 大整数相加(C++实现)

求两个不超过 200200 位的非负整数的和。输入格式有两行,每行是一个不超过 200200 位的非负整数,可能有多余的前导 00。输出格式一行,即相加后的结果。结果里不能有多余的前导 00,即如果结果是 342342,那么就不能输出为 03420342。输出时每行末尾的多余空格,不影响答案正确性样例输入复制2222222222222222222233333333333333333...

2020-04-19 18:18:18 3351

原创 计蒜客1223-踩方格(DP)

有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:a. 每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;b. 走过的格子立即塌陷无法再走第二次;c. 只能向北、东、西三个方向走;请问:如果允许在方格矩阵上走 nn 步,共有多少种不同的方案。22 种走法只要有一步不一样,即被认为是不同的方案。输入格式允许在方格上行走的步数 n(n \le 20)n(n≤20)。输出格式...

2020-04-18 21:49:42 449

原创 计蒜客-1231-冷血格斗场(set,map)

本题利用map打标记,利用set存储力量值,利用set的lower_bound来查找和输入的力量值接近力量,然后通过set输出id值即可,注意用printf优化//@author:hairu,wu//@from:ahut#include<iostream>#include<map>#include<cmath>#include<set&gt...

2020-04-14 16:44:31 231

原创 lower_bound()和upper_bound()函数

1:lower_bound()和upper_bound()都是利用二分查找的方法实现的.1:lower_bound(begin,end,val);该函数可以在一个已经排序好的序列中,从begin位置一直到end位置前一个来查找第一个大于等于val值的位置,返回这个位置的指针,同时,这个指针减去begin,即可得到偏移值offset,也就是数组的下标。upper_bound(begin,end,...

2020-04-13 18:36:28 524

原创 最长连续不重复子串

此问题就是寻找一个序列当中最长不重复的子串长度,我们利用双指针,维护一个子序列,保持其中数字不重复,我们将右指针每次向右边移动,就将标记+1,所以,如果右指针遇到重复数字,那么此处的标记就是2.所以,此时需要将做指针右移,将这个重复元素消去,也就是减1,那么这个while循环判断的条件就是右指针的值是否大于1,这个判断循环结束的时候,能够保持这个子串内部的数字都是不重复的#include&l...

2020-04-13 17:47:54 1089 1

原创 奇技淫巧之“差分”思想---前缀和

1:首先解释差分思想比如我们现在要给[3,5]区间内的数字都加1,那么现在的序列为:0 0 0 0 0 0 0 0 0 0 ,那么则只需要在3位置打上+1标记,在5+1位置,也就是6位置打上-1标记,那么标记之后的序列为:0 0 +1 0 0 -1 0 0 0 0 ;此时,我们利用前缀和即可进行遍历[3,5]的值了,那么到第六个位置,值就又变为0了。以上是一位数组,那么如果是二位数组...

2020-04-10 16:46:16 145

原创 归并排序-计蒜客-1566-最少的交换

现在给你一个由 nn 个互不相同的整数组成的序列,现在要求你任意交换相邻的两个数字,使序列成为升序序列,请问最少的交换次数是多少?输入格式输入包含多组测试数据。每组输入第一行是一个正整数 nn(n<500000n<500000),表示序列的长度,当 n=0n=0 时。接下来的 nn 行,每行一个整数 a_iai​ (0 \le a_i \le 9999999990≤ai...

2020-04-10 13:46:18 432

原创 单调队列和单调栈例题

1:单调队列/*给出一个长度为n的序列和区间长度k,从左向右对每一个长度为k的区间询问最大值和最小值。思路:对于最小值,考虑维护一个递增的双端队列,每次入队时将队尾比当前入队元素的全部删除,每次取队首并且判断是否在当前区间内即可*/ //@author:hairu,wu//@from:ahut#include<iostream>#include<queue...

2020-04-09 18:38:09 178

原创 单调队列(利用C++容器deque实现)原理解析

1:关于deque*deque是C++中的一个容器,其底层原理是双端队列(学过数据结构的应该知道,就是对比于普通的队列而言,可以在双端队列的两端进行插入和删除操作,所以用它来操作数据比较方便,但是注意:其底层存储结构并不是连续的存储单元,所以不能用指针加偏移地址去操作)。* 其头文件为#include< queue >2:关于单调队列单调队列其实是一种思想,也就是维护一个...

2020-04-09 16:14:39 1411

原创 计蒜客-1290-对局匹配

本题就是枚举这三个人即可,并且同时设置标记数组vis,如果这个人之前没有被访问过,并且符合条件,就加入到结果集中,ans++;那么这里可以把vis同时加到结构体中进行标记即可’//@author:hairu,wu//@from:ahut#include<iostream>#include<cmath>#include<algorithm> usi...

2020-04-09 14:40:18 170

原创 计蒜客-1565-出栈合法性

本题可以利用栈作为中间工具,就是判断从1-n的序列经过栈处理之后是否能够变成c序列,所以将1-n一次入栈,如果栈顶数字等于c序列的数字,就出栈,这样遍历之后,如果两个序列都能遍历完成,那么就可以,否则,不可以//@author:hairu,wu//@from:ahut#include<iostream>#include<stack>using namespac...

2020-04-09 11:58:51 218

原创 卡特兰数的C++代码实现

#include<iostream>using namespace std;typedef long long ll;ll dp[100];void fun(){ dp[0]=dp[1]=1; for(int i=2;i<=20;i++){ dp[i]=dp[i-1]*(4*i-2)/(i+1); }} int main(){ fun(); int...

2020-04-09 11:25:29 1323

原创 计蒜客-1884-奶牛晒衣服(priority_queue)

熊大妈决定给每个牛宝宝都穿上可爱的婴儿装。于是,为牛宝宝洗晒衣服就成了很不爽的事情。熊大妈请你帮助完成这个重任,洗完衣服后,你就要弄干衣服。衣服在自然条件下用 11 的时间可以晒干 AA 点湿度,抠门的熊大妈买了 11 台烘衣机 。使用烘衣机可以让你用 11 的时间使 11 件衣服除了自然晒干 AA 点湿度外,还可以烘干 BB 点湿度,但在 11 的时间内只能对 11 件衣服使用。NN 件衣服...

2020-04-06 22:13:12 341

原创 计蒜客1872-中位数(堆)

给出一个长度为奇数 NN 的非负整数序列 A_iAi​ ,对于所有 1 \le k \le {(N + 1)\over 2}1≤k≤2(N+1)​ ,输出 A_1, A_3, \ldots, A_{2k - 1}A1​ ,A3​ ,…,A2k−1​ 的中位数,即前 1,3,5,\ldots1,3,5,… 个数的中位数。输入格式第一行一个奇数 N\ (1\le N...

2020-04-06 21:30:22 549 2

原创 计蒜客1883-切绳子(二分)

有 nn 条绳子,它们的长度分别为 L_iLi​ ,如果从它们中切割出 mm 条长度相同的绳子,这 mm 条绳子每条最长能有多长?输入格式第一行两个整数 nn 和 mm。接下来 nn 行,每行一个实数,描述了每条绳子的长度 L_iLi​ 。数据范围:1\le n\le m\le 10^41≤n≤m≤104,1\le L_i \le 10^51≤Li​ ≤105。...

2020-04-06 19:54:48 373

原创 计蒜客-1891-砍树(二分)

伐木工人米尔科需要砍倒 MM 米长的木材。这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林。不过,米尔科只被允许砍倒单行树木。米尔科的伐木机工作过程如下:米尔科设置一个高度参数 HH(米),伐木机升起一个巨大的锯片到高度 HH,并锯掉所有的树比H高的部分(当然,树木不高于 HH 米的部分保持不变)。米尔科就获得树木被锯下的部分。例如,如果一行树的高度分别为 ...

2020-04-06 18:50:57 1014

原创 计蒜客-1664-口袋的天空(MST)

小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖。给你云朵的个数 NN,再给你 MM 个关系,表示哪些云朵可以连在一起。现在小杉要把所有云朵连成 KK 个棉花糖,一个棉花糖最少要用掉一朵云,小杉想知道他怎么连,花费的代价最小。输入格式第一行有三个数 N,M,KN,M,K (1 \le N \le 1000,1 \le ...

2020-04-06 18:47:51 197

原创 计蒜客-1877-数列分段-二分

典型的二分题目,需要主意的一个坑点在代码中~~//@author:hairu,wu//@from:ahut#include<iostream>using namespace std;int n,m;int a[100010];bool check(int x){ int cnt=0; int now=x; for(int i=0;i<n;i++){ ...

2020-04-05 23:20:55 231

原创 C++的next_permutation函数

C++ 的next_permutation函数,将会根据当前的序列,按照字母序的顺序,生成下一个比当前序列大的序列。函数使用:next_permutation(序列起始地址,序列结束地址),如果下一个序列比当前的大,就返回true,否则就返回false,比如,接下来的这一题:#include<iostream>#include<algorithm>using na...

2020-04-05 21:17:22 1432

原创 计蒜客-2134-数列(数论)

本题需要找规律,首先,我们观察这个形式,发现和二进制的计算有点类似,我们将他们的指数分别写出来为:0,10,11,100,101,110,我们发现这些二进制数字就是按照1,2,3,4,5,6这样的顺序依次排列下去的,所以,我们可以推断,其实第一百项就是一百的二进制,然后按照底数是k这样去解释成十进制数字的,所以,,,大家应该都明白了。。//@author:hairu,wu//@from:a...

2020-04-05 19:12:23 319

原创 计蒜客-2109-乘积最大(dp)

本题的题意就是在一串数字中插入k个乘号,使分隔开的数字之间乘积最大,其实我们可以考虑这样一个关系,f(i,j)表示从0-i之间插入j个乘号所表示最大的值,那么边界就是当j=0时,f(i,j)就等于从0-i之间的值,所以我们可以得到:见代码:#include<iostream>#include<memory.h>using namespace std;int m...

2020-04-04 14:19:21 263

原创 计蒜客-2118-过河卒(dp)

本题因为只能从左上走到右下,所以比较能容易想到dp,同时注意初始化的一个点,就是碰到不可走的点的时候,就面就全部不能走了//@author:hairu,wu//@from:ahut#include<iostream>using namespace std;typedef long long ll;int go[][2]={ -2,-1, -2,1, -1,-2...

2020-04-04 11:56:07 149

digits.zip

利用k-近邻算法实现手写数字的识别,两个文件夹一个是训练的,一个是测试的,两个文件夹数据不重合,而且都是32*32的

2020-03-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除