摘要: 1 线段树小结篇: 2 基本是按着HH专辑来练的:http://www.notonlysuccess.com/index.php/segment-tree-complete/ 3 按分类为单点更新,成段更新,区间合并,扫描线; 4 做了一些题目,显然对于明显的操作如单纯的单点更新,敲出代码是不成问题的; 5 但对于稍微麻烦一点的操作,如果没有很好的代码能力和平时的积累,就很难在比赛时一气呵成写出代码; 6 因此写本文在于总结线段树代码的一些细节之处,给自己以后遗忘复习用; 7 8 1:lazy标记; 9 lazy标记主要运用于成段更新时,这也是线段树经常用到的,因为... 阅读全文
posted @ 2012-09-13 13:34 Rabbit_hair 阅读(228) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1883转载:给出平面上N个点,问一个单位圆最多能覆盖多少个点。方法一:O(n^3),枚举两个点,确定过这两个点的两个圆的的圆心,循环N个点看有多少个点在这个圆里。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #include<cstdlib> 5 using namespace std; 6 const int MAX=2010; 7 struct node 8 { 9 阅读全文
posted @ 2012-08-06 22:37 Rabbit_hair 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 树形DP小结: 1:n个点,n-1条边; 2:无环,根结点可由子结点推出; 3:一般的状态都是以某一个结点为根的子树代表什么, 然后通过递归,由一个一个子结点推出根结点状态; 递推关系:Dp[i][j]=max(dp[i][j],dp[i][k]+dp[son[i][j-k]); 说明递推的含义,首先dp[i][j]的第一个值肯定从dp[son[i]][k]来,当换另一个son2[i],dp[i][j]就是由俩个son推出,其他son同理;4:对于一棵树,可以随意选一个点为根,开一个vis[]数组,记录该结点是否访问过; http://acm.hdu.edu.cn/showp... 阅读全文
posted @ 2012-08-04 02:06 Rabbit_hair 阅读(555) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3518trieView Code 1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<iostream> 5 #include<algorithm> 6 using namespace std; 7 const int MAX=1001; 8 char s[MAX]; 9 int sz,len;10 int trie[MAX*MAX][26];11 int min 阅读全文
posted @ 2012-05-16 16:48 Rabbit_hair 阅读(171) 评论(0) 推荐(0) 编辑