HDU
z岁月无声
这个作者很懒,什么都没留下…
展开
-
HDU-4192-Guess the Numbers
地址:http://acm.hdu.edu.cn/showproblem.php?pid=4192思路:首先将中缀表达式转为后缀表达式,然后将数组全排列取计算每一个排列的后缀表达式的值即可Code:#include<iostream>#include<algorithm>#include<stack>using namespace std;int n;int d[55];stack<string> sta;string transfo.原创 2020-12-18 12:53:40 · 325 阅读 · 2 评论 -
HDU-1506.Largest Rectangle in a Histogram
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1506思路:并查集 || 单调栈思路一、并查集:首先对数组以b[]={值,下标}结构按照从小到大排序,然后从大的开始处理,对于b[i]={val,id}, 比较其id位置左右相邻的值是否大于等于val,若大于等于则将其合并成一个集合,同时记录其集合中元素的个数s,那么当前元素的最大值为 val*s,res取所有元素的最大值即可。思路二、单调栈:遍历数组,维护单调递增栈,对于当前元素x,其左边元素x0,当x0&.原创 2020-11-28 20:55:40 · 202 阅读 · 0 评论 -
HDU-1007.Quoit Design
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1007思路:最近点对+分治对于点集a[n]先按x坐标从小到大排序,取中点a[n/2]将其分成左右两边进行分治,那么最近点对分为三种情况:1.最近点对都在左边 resL;2.最近点对都在右边 resR;3.最近点对一个在左边,一个在右边 resH。那么答案res为三种情况中的最小值,前两种情况按照分治思想可以处理,主要是第三种情况的处理。首先分治求出 res=min(resL,resR),对于resH,.原创 2020-11-26 15:43:47 · 136 阅读 · 0 评论 -
HDU-1710 Binary Tree Traversals
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1710思路:通过对先序遍历和中序遍历的遍历顺序,对于先序遍历,第一个节点一定是根节点,再定位到中序遍历中当前根节点的位置,可以将先序遍历拆分成两个子树的先序遍历,这样就可以利用递归将遍历集合一步步缩小,从而得到解。Code:#include<iostream>#include<unordered_map>using namespace std;const int MA..原创 2020-06-04 01:12:38 · 225 阅读 · 0 评论 -
HDU-5536 Chip Factory
地址:http://acm.hdu.edu.cn/showproblem.php?pid=5536思路:题目限时9s,且题目输入数据的范围也提示的很明显,就是枚举 x=a[i]+a[j],建立a[]的01字典树,再去找x的最大异或和,对于i!=j!=z,因此还要排除掉 a[i],a[j]的影响,对于树的搜索中可判断a[i],a[j]是否还在当前路径上,在就需要sum[u]>在的个数s...原创 2018-09-12 18:47:14 · 320 阅读 · 0 评论 -
HDU-3949 XOR
地址:http://acm.hdu.edu.cn/showproblem.php?pid=3949思路:先求出a[]的线性基f[],然后将线性基的每一位进行消除使其只有本身的那一位,在将f[i]中非0的全部移动f[1,m]中,m为非0的个数,这样对于第K个数,就是将K转为二进制中为1的f[]异或起来即可。另外还要处理有0的情况,这时需要将K-=1Code :#include<...原创 2018-09-13 20:15:24 · 258 阅读 · 0 评论 -
HDU-5984-Pocky
地址:http://acm.hdu.edu.cn/showproblem.php?pid=5984思路:dalao博客:https://blog.csdn.net/jay__bryant/article/details/81188557原创 2018-10-08 17:29:39 · 407 阅读 · 0 评论 -
HDU-6223 Infinite Fraction Path(2017ACM/ICPC亚洲区沈阳站)
地址:http://acm.hdu.edu.cn/showproblem.php?pid=6223思路:BFS+剪枝。对于每一层,找其最大值mm,对于小于mm的点和找的可能为同一个点进行剪枝。Code:#include<iostream>#include<cstdio>#include<queue>using namespace std;...原创 2018-10-31 13:17:58 · 315 阅读 · 0 评论 -
HDU-3374 String Problem
地址:http://acm.hdu.edu.cn/showproblem.php?pid=3374思路:最小表示法模板题Code:#include<iostream>#include<cmath>using namespace std;int n;string str;int main(){ ios::sync_with_stdio(fa...原创 2019-01-05 17:16:27 · 352 阅读 · 0 评论 -
HDU-1325 Is It A Tree?
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1325思路:DFS/并查集 对比AC的代码交了40多遍,心态搞炸,结果发现是输入u<0,v<0时退出而不是==-1,ヽ(`Д´)ノ︵ ┻━┻ ┻━┻思路一:DFS,首先判断是否只有一个根节点,再DFS来判断是否有环路,以及有多个块思路二:并查集,1.判断环路Find(u)==F...原创 2019-03-22 23:12:18 · 217 阅读 · 0 评论 -
HDU-吉哥系列故事——完美队形II
地址:http://acm.hdu.edu.cn/showproblem.php?pid=4513思路:Manacher算法,在判断回文的时候一并判断其是否上升Code:#include<iostream>#include<cstring>using namespace std;const int MAX_N=200050;int n,m,T;...原创 2019-05-08 10:40:56 · 227 阅读 · 0 评论 -
HDU-6540-Neko and tree(2019CCPC湖南全国邀请赛(广东省赛、江苏省赛)重现赛)
地址:http://acm.hdu.edu.cn/showproblem.php?pid=6540思路:树状DP参考博客:http://www.cnblogs.com/CJLHY/p/10890357.htmldp[i][j]:表示在点i 为根节点的子树中,距离点i 最远距离为j的方案数,即对于i子树中的方案{ai1,ai2,ai3,...,aik}, ai1-aik都属于i子树...原创 2019-05-20 23:32:46 · 443 阅读 · 0 评论 -
HDU-4825 Xor Sum
地址:http://acm.hdu.edu.cn/showproblem.php?pid=4825思路:01字典树,对于查询的数x,查找树中的最大异或值,同时保存路径的数即可,还有在初始化时记得用num来处理Code :#include<iostream>using namespace std;const int MAX_S=3200005;int n,Q,T...原创 2018-09-12 17:15:52 · 251 阅读 · 0 评论 -
字典树模板题
字典树模板:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;const int MAX_S=400005; //字符串的字符总长度 int Trie[MAX_S][26],sum[MAX_S],num...原创 2018-08-30 11:51:41 · 250 阅读 · 0 评论 -
KMP模板题
KMP模板:#include<iostream>using namespace std;const int MAX_S=1000005;int n,m;string str,st;int Next[MAX_S];void GetNext();int KMP();int main(){ ios::sync_with_stdio(false); while(...原创 2018-08-24 17:36:13 · 359 阅读 · 0 评论 -
HDU-3584-Cube
思路:对于改变A[x1,y1,z1]-A[x2,y2,z2]的值,使0变1,1变0,这个这样都加1,然后查询时 %2即可,关键是如何改变其值,可利用三维树状数组,但要改变的是整个区域的值该如何,例如一维树状数组C[n], 改变A[i]-A[j]的值可以先 Update(i,1),在Update(j+1,-1),这样Query(i->j)的值都加了1,而Query(j+1-->n)的...原创 2018-08-14 21:29:53 · 212 阅读 · 0 评论 -
HDU-1166-敌兵布阵(树状数组|线段树-模板题)
思路:树状数组或线段树 模板题。。。Code ://树状数组 #include<iostream>using namespace std;const int MAX_N=50005;int n,T;int a[MAX_N],c[MAX_N];int Lowbit(int x);void Update(int id,int x);int Sum(int ...原创 2018-08-12 12:15:25 · 223 阅读 · 0 评论 -
HDU-3450-Counting Sequences
思路:设dp[i]:表示第i个元素a[i]对前i-1个的完美子,容易写出转换方程:dp[i]=sum{dp[j]+1} (|a[i]-a[j]|)<=m(m为题中最大差值d))这样的时间复杂度为 O(n^2),会TLE.对于sum{dp[j]+1}我们能够先用d[n]记录a[n],再将d[]由小到大排序,这样的话就可用二分查找找出|a[i]-a[j]|)<=m的j的最左端 l ...原创 2018-08-15 10:08:11 · 230 阅读 · 0 评论 -
HDU-1541-Stars
思路:开始我以为这是一道二维树状数组,结果发现x,y过大会超空间,然后我发现n比较小,于是我就以为把x,y的范围缩小到n就可以了,结果还是超空间,然后看了下别人的博客才发现只要一维就可以了,我真的是脑子秀逗了,就知道套模板。。。由输入可知,x y 是按照 y递增,y相等在x递增输入的,输入的点一定在当前点的下方,因此可以不用考虑y,只需要对前x求和即可,还有注意++x防止x=0;Cod...原创 2018-08-15 12:09:39 · 248 阅读 · 0 评论 -
HDU-1892-See you~
思路:本来以为是个纯模板题,结果发现初始化时利用Update(i,j,1)的话会超时,应该是C[i][j]=Lowbit(i)*Lowbit(j);还有就是求区间和时要将对角线的两个点转换为主对角线的两点。Code :#include<iostream>#include<cstring>#include<cmath>using namespa...原创 2018-08-15 18:16:05 · 331 阅读 · 0 评论 -
HDU-1556-Color the ball
思路:扫描线||树状数组一,扫描线:题目意思为求每一点的线段覆盖数,因此可以将左端点用 1表示线段开始,右端点用-1表示线段结束,然而右端点也属于线段,因此可以将改为 右端点+1用 -1 表示,在将所有点由小到大排序再遍历一遍,sum记录其值,因此遍历到 i点时sum就为 i点的线段覆盖数。二,树状数组:原理和扫描线类似,将 左端点和 右端点+1 分别用1,-1表示,而第i点的覆盖数即...原创 2018-08-13 11:23:32 · 258 阅读 · 0 评论 -
HDU-2838-Cow Sorting
思路:此题求逆序数的同时还要求逆序数的总和,对于s的逆序数个数可以用树状数组来求,再求s的逆序数的总和也可以用树状数组来解决Code :#include<iostream>#include<cstring>using namespace std;typedef long long LL;const int MAX_S=100005;int n;i...原创 2018-08-13 17:27:43 · 179 阅读 · 0 评论 -
HDU-2688-Rotate
思路:利用树状数组求出正序的个数,对于R[S E](数据是S<=E的。。)只要对[S E]区间中 F[S]的逆序数ans++,正序数ans--,然后对其翻转即可。Code :#include<iostream>#include<cstring>using namespace std;typedef long long LL;const int ...原创 2018-08-13 21:39:52 · 162 阅读 · 0 评论 -
HDU-2642-Stars
思路:纯粹的二维树状数组模板题。。Code : #include<iostream>#include<cstring>#include<cmath>using namespace std;const int MAX_N=1005;const int MAX_M=1005;int Q;int C[MAX_N][MAX_M];boo...原创 2018-08-14 02:00:00 · 136 阅读 · 0 评论 -
HDU-2852-KiKi's K-Number
思路:e的范围比较小,因此可以用树状数组来记录前e的个数,在利用二分查找来求出比a大的第k个数。Code :#include<iostream>#include<cstring>using namespace std;const int MAX_S=100005;int Q;int d[MAX_S];int C[MAX_S];int Lowb...原创 2018-08-17 10:23:53 · 234 阅读 · 0 评论 -
AC自动机模板题-HDU-2222-Keywords Search
地址:http://acm.hdu.edu.cn/showproblem.php?pid=2222Code:AC自动机模板:#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;struct node{ i...原创 2018-08-30 19:30:25 · 211 阅读 · 0 评论 -
HDU-1829-A Bug's Life
A Bug's LifeTime Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17337 Accepted Submission(s): 5553Problem DescriptionBackground Professor Hopper...原创 2017-12-22 12:25:38 · 275 阅读 · 0 评论