ACM-ICPC
文章平均质量分 78
qwe20060514
这个作者很懒,什么都没留下…
展开
-
1004_History_repeat_itself
题目:hdu_4342_History_repeat_itself官方题解:1)To solve the N-th non-square number:There is a number K: K^2Thus : K^2+1So: (K-1/2)^2+3/4=K^2-K+1 That is to say: K-1/2 the N-th non-square原创 2012-08-11 21:45:33 · 361 阅读 · 0 评论 -
解同余式
#include #include using namespace std;#define MP make_pairpair > func1(int a,int b) { int g; if(!g) return MP(0,MP(0,0)); pair c(MP(1,0)),d(MP(0,1)),tmp; while(a%b) { in原创 2012-10-12 14:08:33 · 738 阅读 · 0 评论 -
RMQ——ST算法
templateclass RMQ{ T **f; int n1; int n2; bool (*cmp)(const T &a,const T &b); bool compare(const T &a,const T &b) { if(cmp==NULL) return a < b; return cmp(a,b); } void原创 2012-10-12 15:40:09 · 449 阅读 · 0 评论 -
hdu 1598 枚举+并查集
联通起始点的边权范围就是这些边权的最大最小值,而边数为1000,所以可以枚举这个范围,然后判断对于每一个范围是否联通。进一步的,可以枚举最小值并依此加入更长边,直到起始点联通,得到该最小值下的最优解。#include #include #include #include #include #include #include using namespace std;#d原创 2012-11-02 10:13:24 · 425 阅读 · 0 评论 -
hdu 3926 特殊同构图+并查集
关键是注意到,每个点的度至多为2,所以整个图是由一些独立的链和环构成的。然后统计某种链或是环的个数,如果同种链或环的数目相同,则是同构图。#include #include #include #include using namespace std;#define maxn 10010struct bcj { int fa,num; boo原创 2012-11-02 11:07:03 · 676 阅读 · 0 评论 -
图论500题
转载出处:http://blog.csdn.net/ffq5050139/article/details/7832991=============================以下是最小生成树+并查集======================================【HDU】1213 How Many Tables 基础并查集★1272 小希的迷宫转载 2012-10-25 19:34:32 · 6749 阅读 · 0 评论 -
hdu 3721 树的直径
空占位置 待补完原创 2013-07-18 20:41:50 · 696 阅读 · 1 评论 -
hdu 3721 划分树应用
空占位置 待补完原创 2013-07-18 20:36:09 · 487 阅读 · 0 评论 -
hdu 3722 最大权匹配
空占位置 待补完原创 2013-07-18 20:42:36 · 607 阅读 · 0 评论 -
catalan数
空占位置 待补完http://baike.baidu.com/view/2499752.htm?fromId=1163998hdu 3723原创 2013-07-18 20:30:41 · 431 阅读 · 0 评论 -
POJ 1635 Subway tree systems
有关树的同构问题。基本思想是通过树的遍历结果获得树的一种唯一表示,所以要确定子树的相对顺序。一开始想通过子树大小来确定,但同大小的子树就没法确定顺序了。而题目实际上给出了树的一种表示方法,一种基于字符串的表示方法,自然可以通过字典序确定唯一的子树相对顺序。一开始TLE,因为在每当构造子树的唯一表示时,我都会创建一个新的字符串。参考了别人的代码后,发现可以直接用下标定位原串的子串。这里实际上也是原创 2015-04-17 18:40:06 · 468 阅读 · 0 评论 -
POJ 1015 Jury Compromise ---- DP
把p-d作为约束,p+d最大作为优化目标。 倒序枚举m以在空间上压缩掉n。普遍流传的解法恐怕根本就不是dp,也无法证明正确性,否则0/1背包就多了一种从未有过的解法。而且其记录路径的做法我也觉得是错的,我用的是更保守的做法,用一个三维数组,包含了n这一维的信息来记录路径debug个了一个下午,问题基本上都出在C中多维数组的使用上。比如说你定义了dp[n][m],但你把它当dp[m][n]用,也原创 2015-04-17 17:58:57 · 531 阅读 · 0 评论 -
大数模板——来自jxy师兄
#include #include #include #define MAX 1300#define base 10000#define baselen 4using namespace std;//int countnub = 0;//此大整数类用数组 digital[MAX]表示一个大整数;//一个 digital表示最大为 9999;//len 表示目前整数的用到最大di转载 2012-10-10 18:49:10 · 350 阅读 · 0 评论 -
后缀数组(模板)——来自MovingforACM
转载自:http://blog.sina.com.cn/s/blog_9ddf28c5010119e1.html后缀数组(模板) 今天学习了后缀数组,感觉只有排序部分比较纠结,整个算法还是比较好懂的,把排序跳过来理解这个算法,其实它比kmp还要简单,下面贴一段排序和求最长公共前缀的模板,以后还会更新,把对整个算法应用的理解写上去。 排序主要有两种:倍增法和DC3,求lcp的转载 2012-10-10 18:21:32 · 401 阅读 · 0 评论 -
hdu 2296 AC自动机+dp+路径记录
Ring#include #include #include #include #include #include using namespace std;#define pb push_back#define INF (1<<30)struct node{ int son[26],fail; int cnt; char key; node(原创 2012-10-10 18:13:47 · 545 阅读 · 0 评论 -
1007_Permutation
题目:hdu_4345_Permutation 官方题解: 循环节的长度为各独立置换环长度的最小公倍数。问题即求相加和为N的正整数的最小公倍数的可能数。由于1不影响最小公倍数,问题转化为相加小于等于N的若干正整数的最小公倍数的可能数。如果这些正整数包含大于一个质因子,只会使得正整数的和更大。因而问题再次转化为相加小于等于N的若干质数的最小公倍数的可能数。N于是原创 2012-08-11 19:33:18 · 569 阅读 · 2 评论 -
1001_Capturing_a_country
题目:hdu_4340_Capturing_a_country官方题解:树dp。显然题中给图的是一颗树。问题可以抽象成对树的每个点都染色,有两中颜色可以选择。我们可以知道,如果某一个连通的点集染的是同一种颜色,则这个集合中只要而且必须有一个点取完整的费用,其他的点都只需要对应费用的一半。状态:dp[i][j][k] (0 若选取1为根节点,则最后需要的结果为:原创 2012-08-12 07:04:34 · 604 阅读 · 0 评论 -
1003_Gold_miner
题目:hdu_4341_Gold_miner官方题解:显然,必须先拿走前面的金子才能拿后边的,所以排序处理共线情况。然后进行背包即可个人理解:有两种方法处理共线情况。但都以将点按斜率排序为前提。方法一:将统一斜率的N个点看做N个物品,第一个是第一个点,第二个是前两个点的和……第N个是前N个点的和。前后指的是靠近原点的程度。方法二:递推方程在原0/1背包的原创 2012-08-11 21:08:32 · 513 阅读 · 0 评论 -
1011_Xiao_Ming's_Hope
题目:hdu_4349_Xiao_Ming's_Hope 官方题解:本题为Lucas定理推导题,我们分析一下 C(n,m)%2,那么由lucas定理,我们可以写成二进制的形式观察,比如 n=1001101,m是从000000到1001101的枚举,我们知道在该定理中C(0,1)=0,因此如果n=1001101的0对应位置的m二进制位为1那么C(n,m) % 2==0,因此m原创 2012-08-11 20:38:50 · 731 阅读 · 0 评论 -
hdu_1100_Trees_Made_to_Order
Trees Made to OrderTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 465 Accepted Submission(s): 271Problem DescriptionWe can n原创 2012-08-13 18:29:35 · 949 阅读 · 0 评论 -
划分树——求区间第k大值
题目:K-th Number虽说是第一次就AC,但到网上去搜罗更优代码时,却幸运的发现,我的AC代码是错误的,只不过数据太水。我考虑掉一种情况,当有多个数和中位数相同时,如果从左到右一次将小于等于中位数的数划入左子树,可能导致区间右端的哪些比中位数小的数被划入右子树。例如,数据为1 2 2 2 1时,第二个2应划入右子树,最后一个1应划入左子树。#include #include原创 2012-10-06 18:34:46 · 1343 阅读 · 0 评论 -
hdu 2243 AC自动机+矩阵快速幂
考研路茫茫——单词情结题意:这题和poj2778没有本质区别,都是通过AC自动机得到递推矩阵,然后矩阵快速幂。递推的状态都是长度和单词结尾在trie树上的位置(最长公共字串,trie上是前缀,在递推的单词上则是后缀)。但这题会多些线性代数的技巧,例如求26^1+……+26^n要用二阶矩阵,还要用长度恰好为l的矩阵去构造长度小于等于l的递推矩阵。#include #include #原创 2012-10-07 15:05:22 · 605 阅读 · 0 评论 -
poj 2778 AC自动机+矩阵快速幂
题目:DNA Sequence这题做了一晚上,即使大体的思路明白了,但还是纠缠与各种细节的实现#include #include #include #include #include #include using namespace std;#define mod 100000#define pb push_backstruct node { int son原创 2012-10-06 22:43:05 · 431 阅读 · 0 评论 -
矩形面积和矩形周长并的模板——来自notonlysuccess
矩形面积并hdu1542 Atlantis题意:矩形面积并思路:浮点数先要离散化;然后把矩形分成两条边,上边和下边,对横轴建树,然后从下到上扫描上去,用cnt表示该区间下边比上边多几个,sum代表该区间内被覆盖的线段的长度总和这里线段树的一个结点并非是线段的一个端点,而是该端点和下一个端点间的线段,所以题目中r+1,r-1的地方可以自己好好的琢磨一下线段树操作:update转载 2012-10-10 17:38:06 · 1151 阅读 · 0 评论 -
线段树——区间合并
题目:Hotel题意:区间初始全0。两种操作:将区间某一段置0;查询超过指定长度的区间的最左端点(多个区间则取最左)第一次做错,错在查询时,只是查询整个区间的最长连续子区间,可题目要求的只是超过一定长度的子区间,而不一定是最长的,所以应按左区间,跨左右区间,右区间的顺序递归查找满足要求的子区间。#include #include #include using namespac原创 2012-10-06 15:38:42 · 1041 阅读 · 0 评论 -
hdu 3341 AC自动机+五维dp
Lost's revenge#include #include #include #include #include #include #include using namespace std;#define pb push_backstruct node { int son[4],fail; int cnt; node(){cnt=0,fail=0原创 2012-10-10 18:09:47 · 628 阅读 · 0 评论