HDU
文章平均质量分 75
BehappyXiang
这个作者很懒,什么都没留下…
展开
-
SG函数(HDU1848)
#include #include #include #include using namespace std;int k,fibo[100],f[10001];int mex1(int p){ int i,t; bool g[101]= {0}; for(i=0; i<k; i++) //注意 i从0开始,别动i {转载 2013-04-17 09:33:44 · 677 阅读 · 0 评论 -
POJ1001&HDU1063
ExponentiationTime Limit: 500MS Memory Limit: 10000KTotal Submissions: 107685 Accepted: 26199DescriptionProblems involving the computation of exact values of ve原创 2012-09-18 14:31:28 · 664 阅读 · 0 评论 -
HDU 4305 Lightning (矩阵行列式求生成树个数+高斯逆元求行列式模板)
LightningTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 999 Accepted Submission(s): 333Problem DescriptionThere are N robots原创 2013-05-29 13:50:54 · 1003 阅读 · 0 评论 -
HDU 4307 Matrix (最小割)
MatrixTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 823 Accepted Submission(s): 210Problem DescriptionLet A be a 1*N matrix原创 2013-05-29 13:34:56 · 1093 阅读 · 0 评论 -
HDU 4358 Boring counting (树状数组)
Boring countingTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 98304/98304 K (Java/Others)Total Submission(s): 1584 Accepted Submission(s): 440Problem DescriptionIn this pro原创 2013-07-20 10:52:26 · 696 阅读 · 0 评论 -
HDU 4351 (线段树)
#include #include #include using namespace std;#define MAX 100005int add[1025][11],res[1025][1025];int val[MAX];bool flag;struct node{ int lsta,rsta,sta; int root;} tree[MAX<<2];inl原创 2013-07-21 14:54:31 · 649 阅读 · 0 评论 -
2013 Multi-University Training Contest 1 Occupy Cities HDU 4606
题意:给你N个城市,M个线段障碍,P个士兵,所有城市和士兵都是建立在平面坐标系上,士兵身上都有一个一定容量的资源背包,每次占领一个城市,中间消耗的资源为移动到那个星球之间的最短距离,当然不能穿过障碍。一个士兵占领一个城市后可以填满背包然后继续去占领其他城市。求最少背包容量为多少,使得最后p个士兵可以占领N个城市。题解:把平面上所有可以沿直线到达的点连边 (与所给的线段判相交),然后求一遍任意两原创 2013-07-24 16:13:51 · 738 阅读 · 0 评论 -
HDU 4630 No Pain No Game 树状数组
思路:查询一段区间内所有数字的两两最大的公约数。如果将区间内所有的数字的约数列举出来,那么其中出现过两次或以上的约数,最大的就是所求结果了。对查询按L从大到小排序,每次逆序遍历一个数字时,求出它的所有约数,用pos[s]记录约数s上一次出现的位置,那么当更新到现在这个位置的时候,如果pos非空,说明这时出现两次,将上一次的pos[s]更新到区间内,保证在L一定的情况下,查询R时,若L,R中有s,那原创 2013-07-31 11:00:28 · 707 阅读 · 0 评论 -
2013 Multi-University Training Contest 1 Warm up HDU 4612
思路:用tarjan算出无向连通图的连通分量的个数,那么桥的个数也就是连通分量个数减一,将在同个连通分量内的点进行缩点,最后将不同连通分量之间连边,求一遍新图(是一棵树)的最长路径(树的直径),显然,最长的直径加上头尾一条边形成一个环,可以减少相同长度的桥,也就是加上一条边后,原图能达到最少的桥数。#include #include #include #include using na原创 2013-07-26 19:02:12 · 659 阅读 · 0 评论 -
2013 Multi-University Training Contest 1 Vases and Flowers HDU 4614
题意:给你N个花瓶,M次操作,每次输入K,如果K为1,那么再输入A,F,表示从A+1编号的花瓶开始,只要有空瓶,就插入一支花,如果F只花插完或者没有空瓶可以插了,就停止,输出最左边插入的和最右边插入的花瓶编号,当然,如果一支没插,或者F=0时,输出"Can not put any one.";如果K为2,再输入A,B,这时,将编号从A到B的所有花瓶中的花清空,输出清空的花的数量。思路:明显的线原创 2013-07-26 19:12:38 · 656 阅读 · 0 评论 -
HDU 4633 Who's Aunt Zhang (Polya定理)
设G是p个对象的一个置换群,用m种颜色涂染p个对象,则不同染色方案为: 其中G={g1,…gs} c(gi )为置换gi的循环节数(i=1…s)#include #include #include #include #include using namespace std;#define MOD 10007int quickpow(int a,int b){原创 2013-08-02 15:41:43 · 1139 阅读 · 0 评论 -
HDU 3397 Sequence operation (线段树)
思路:和POJ3225有点像,但是多了那么些操作。对于区间1的个数和翻转情况,这都是可以用懒惰标记解决的。对于连续1的个数,需要区间合并。具体还是看注释吧。#include #include #include #include using namespace std;#define maxn 100005struct SegTree{ int l,r; int o原创 2013-08-07 13:13:54 · 771 阅读 · 0 评论 -
HDU 4115 Eliminate the Conflict (2-SAT)
取i表示为与当前Bi平局,i‘为与当前Bi胜利,完成2-SAT模型。对约束条件进行讨论。#include #include #include using namespace std;const int maxn=20002;const int maxm=40002;struct node{ int to,next;} e[maxm];int head[maxn原创 2013-09-13 11:14:21 · 608 阅读 · 0 评论 -
HDU 1536 (博弈SG)
直接套模板的水题.....#include #include #include #include using namespace std;int k,fibo[100],f[10001];//k为取数规则的个数int mex1(int p){ int i,t; bool g[101]= {0}; for(i=0; i<k; i++) //注原创 2013-04-17 09:51:35 · 555 阅读 · 0 评论 -
HDU 3015 Disharmony Trees (树状数组)
思路:和POJ1990差不多,就是编号和排序变了一下。#include #include #include #include #include using namespace std;#define LL long longconst int maxn=100005;LL c[2][maxn];int n;struct node{ int v,x;} a[max原创 2013-03-26 14:57:36 · 692 阅读 · 0 评论 -
HDU4414
Finding crossesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 394 Accepted Submission(s): 241Problem DescriptionThe Nazca Li原创 2012-10-01 14:29:42 · 661 阅读 · 0 评论 -
2012 ACM/ICPC Asia Regional Chengdu Online(hdu4292)
FoodTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 556 Accepted Submission(s): 247Problem Description You, a part-time dini原创 2012-09-18 14:30:39 · 744 阅读 · 0 评论 -
2012 ACM/ICPC Asia Regional Chengdu Online(hdu4291)
A Short problemTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 591 Accepted Submission(s): 230Problem Description According原创 2012-09-18 14:29:39 · 862 阅读 · 0 评论 -
HDU1176
免费馅饼Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15075 Accepted Submission(s): 4992Problem Description都说天上不会掉馅饼,但有一天gamebo原创 2012-10-21 19:43:02 · 413 阅读 · 0 评论 -
HDU2527
Safe Or UnsafeTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 876 Accepted Submission(s): 316Problem DescriptionJavac++ 一天在看计原创 2012-11-07 20:08:15 · 649 阅读 · 0 评论 -
HDU 2642 Stars (二维树状数组)
StarsTime Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/65536 K (Java/Others)Total Submission(s): 711 Accepted Submission(s): 309Problem DescriptionYifenfei is a romantic原创 2013-03-08 18:14:08 · 761 阅读 · 0 评论 -
HDU 1198 Farm Irrigation
Farm IrrigationTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3374 Accepted Submission(s): 1487Problem DescriptionBenny has原创 2013-02-28 15:57:23 · 459 阅读 · 0 评论 -
HDU 4514 湫湫系列故事——设计风景线 (判环+求最大树直径)
思路:并查集判环,然后bfs求每课树的直径。有个定理,对于一棵树,求它的直径,那么先任意找一点,再求到这个点最远的点为v,然后求到v最远的点的距离就是树的直径。#include #include #include #include using namespace std;const int maxn=100005;const int maxm=2000005;int pre[ma原创 2013-03-29 17:42:51 · 848 阅读 · 0 评论 -
HDU 3450 Counting Sequences (树状数组)
思路:以样例为例, 1 3 7 5 当我们更新到5的时候,设ans[i]表示i这个数有多少种,ans[5]=ans[5-d]+ans[5+d]+1;为什么+1呢,应为最后我们取的是长度大于1的,+1对于之后的更新方便,但在最后要减去n,应为每个数都算了一次+1.当然,这题没有说i最大为多少,显然,我们要离散化,并且每次都要查找i这个数离散化后的下标。这里用了map来维护。当然也可以用二分来场找最小原创 2013-03-24 15:40:02 · 830 阅读 · 0 评论 -
HDU 3874 Necklace (树状数组)
思路:就是将询问的数据保存下来,按照右区间从小到大排序,因为这样排完序后,可以保证在每次查询的时候,比如 1 1 1 2 3 1 这组,我们将重复数字的出现更新在离当前最大查询右区间最近的地方,我们查询[2,6],那么我们就将1更新在6这个位置,这样就能保证每次查询的时候就只加一次1了还有,这题要注意输出,long long 是必须的,我试了cout#include #include原创 2013-03-24 13:58:32 · 675 阅读 · 0 评论 -
HDU 3887 Counting Offspring (树状数组)
思路:对于每个结点深搜,先记录在搜索该结点前已经出现过的比该结点小的结点总数为pre[i],然后搜索并更新该结点的所有子树,最后返回该节点时,再求一次比该结点小的结点总数now[i],则该结点子树中比他小的结点总数就为now[i]-pre[i]。查询出现过比i小的结点总数用树状数组。#include #include #include #include using namesp原创 2013-03-25 11:25:57 · 601 阅读 · 0 评论 -
HDU 1824 Let's go home (2-SAT)
思路:用op数组记录队员i的对立编号,如op[0]=1,op[1]=op[2]=0;,然后用2-SAT来判断#include #include #include using namespace std;const int maxn=3002;const int maxm=12002;int n,m,s;struct node{ int to,next;} e[ma原创 2013-04-09 15:42:08 · 656 阅读 · 0 评论 -
HDU 3062 Party (2-SAT)
题意:给你N对夫妻,从夫妻之间不会矛盾,但非夫妻可能产生矛盾,问能否从每对夫妻之中选出一个,这N个人互不矛盾。思路:很裸的2-SAT,今天也是第一次接触,还不是很明白,打算刷下题再了解一下#include #include #include using namespace std;const int maxn=2002;const int maxm=2000002;int原创 2013-04-09 14:16:13 · 584 阅读 · 0 评论 -
HDU4747 2013 ACM/ICPC Asia Regional Hangzhou Online Mex(线段树)
手算可以发现,当一组数列a[x],去掉a[0]后,那么之后新的数列数列的mex值将会发生变化对于第二组样例 1 0 2 0 1我们一步步算得到mex(i,j)(j>=i)0+2+3+3+3 = 11 //第一次可以得到mex(1,i)(1 1+1+1+3 = 6 0+1+3 = 4 1+2 = 3原创 2013-09-16 13:11:02 · 1061 阅读 · 0 评论