12 2014 档案

摘要:一道比较水的二维树状数组,开100个即可,只有100种颜色还是比较EZ的。 1 Program BZOJ1452; 2 const maxn=308; 3 maxc=108; 4 var a:array[0..maxn,0..maxn,0..maxc] of longint; 5 ... 阅读全文
posted @ 2014-12-27 08:59 rpSebastian 阅读(173) 评论(0) 推荐(0)
摘要:终于写完基础的splay了,嗯,还差个区间翻转没写,下次补上。 1 Program splay; 2 const maxn=2000008; 3 var l,r,fa,data,size:array[0..maxn] of longint; 4 num,i,rt,x,n:longin... 阅读全文
posted @ 2014-12-25 22:26 rpSebastian 阅读(170) 评论(0) 推荐(0)
摘要:先做一遍匈牙利算法。对于已经匹配的边,如果删去之后还能最大匹配数增加,则不符合要求。一遍匈牙利算法是O(n^3)的,对于每一条边做n次,每次O(n^2),总的复杂度是O(n^3)。注意:不要忘记输出none。 1 var a:array[0..1000,0..1000] of boolean; 2 ... 阅读全文
posted @ 2014-12-24 20:36 rpSebastian 阅读(250) 评论(0) 推荐(0)
摘要:先对整幅图进行二分图染色,再跑一遍匈牙利算法。 1 /* CODEVS1022 */ 2 #include 3 #include 4 #include 5 #include 6 7 #define maxn 10008 8 9 struct edge{ 10 i... 阅读全文
posted @ 2014-12-23 20:39 rpSebastian 阅读(238) 评论(0) 推荐(0)
摘要:恶心的题目= = 1 #include 2 #include 3 #include 4 int f[5][5]={{0,3,2,3,2},{3,2,1,2,3},{2,1,4,3,2},{3,2,3,2,3},{2,3,2,3,4}}; 5 int main() 6 { 7 int a... 阅读全文
posted @ 2014-12-22 20:53 rpSebastian 阅读(190) 评论(0) 推荐(0)
摘要:直接跑匈牙利,注意到“只有当选手正确回答一道题后,才能进入下一题,否则就被淘汰”,一旦无法满足就直接退出。 1 #include 2 #include 3 #include 4 #define maxn 2008 5 #define maxm 10008 6 7 struct edge{ 8... 阅读全文
posted @ 2014-12-22 20:09 rpSebastian 阅读(253) 评论(0) 推荐(0)
摘要:/*感谢机房JYW的友情馈赠*/#include #include #include #include #include #include #include #define Orz __attribute__((optimize("-O2")))#define lx 2000using namesp... 阅读全文
posted @ 2014-12-22 20:06 rpSebastian 阅读(408) 评论(0) 推荐(0)
摘要:没想到这是一道省选题。。。 1 /* BZOJ1192 */ 2 #include 3 int main() 4 { 5 int m,num=0; 6 scanf("%d",&m); 7 for (;m>0;m/=2,num++); 8 printf("%d\n",... 阅读全文
posted @ 2014-12-22 19:19 rpSebastian 阅读(153) 评论(0) 推荐(0)
摘要:先对整幅图进行二分图染色,再跑一遍匈牙利算法。如果最大匹配数=点数*2,那么输出WIN。对于任何一个非必须在最大匹配上的点,即为所求的点。 1 Program Test375num2; 2 type arr=record 3 u,v,next:longint; 4 ... 阅读全文
posted @ 2014-12-22 19:07 rpSebastian 阅读(248) 评论(0) 推荐(0)
摘要:。。。怎么优化都是90分,最后一个点一直T掉,有谁过了请告诉我。 1 Program CODEVS3147; 2 const maxn=2008; 3 var a,b:array[-1..maxn,-1..maxn] of longint; 4 n,q,i,j,k,k1,k2,k3,k4,t... 阅读全文
posted @ 2014-12-19 18:20 rpSebastian 阅读(178) 评论(0) 推荐(0)
摘要:基础的矩阵乘法。Program CODEVS1287;const maxn=208;var k1,k2,k3,sum:int64; a,b,c:array[0..maxn,0..maxn] of int64; i,j,k:longint;begin readln(k1,k2); fo... 阅读全文
posted @ 2014-12-18 20:13 rpSebastian 阅读(127) 评论(0) 推荐(0)
摘要:真是道坑题,数据范围如此大。首先构造矩阵 [ f[0] , 1] * [ a,0 ] ^n= [ f[n],1 ] [ c,1 ]注意到m, a, c, x0, n, g0 do begin if y mod 2=1 then ans:=(ans+x)... 阅读全文
posted @ 2014-12-17 21:12 rpSebastian 阅读(194) 评论(0) 推荐(0)
摘要:嗯,,,矩阵乘法最基础的题了。Program CODEVS1250;type arr=array[1..2,1..2] of longint;var T,n,mo:longint; a,b:arr;operator *(a,b:arr) c:arr;var i,j,k,sum:longint... 阅读全文
posted @ 2014-12-17 20:18 rpSebastian 阅读(187) 评论(0) 推荐(0)
摘要:题目链接:http://www.cnblogs.com/frog112111/archive/2013/05/19/3087648.htmlFibonacci数列:F(0)=1 , F(1)=1 , F(n)=F(n-1)+F(n-2)我们以前快速求Fibonacci数列第n项的方法是 构造常系数矩... 阅读全文
posted @ 2014-12-17 19:45 rpSebastian 阅读(141) 评论(0) 推荐(0)
摘要:由于权值是在边上,所以很容易发现一个性质:d(x,y)=d(x,root) xor d(y,root)。 因为有了这个性质,那么就很好做了。对于每一个点统计到root的距离,记为f 数组。 将f数组里的每个值插进按照二进制位插进字典树里面。 枚举每一个点,然后在字典树中搜索最大的xor值就可以了。 阅读全文
posted @ 2014-12-16 20:45 rpSebastian 阅读(285) 评论(0) 推荐(0)
摘要:直接用Trie树即可。 每个节点统计经过该点的单词数,遍历时当经过的单词数为1时即为合法的前缀。 阅读全文
posted @ 2014-12-15 21:02 rpSebastian 阅读(122) 评论(0) 推荐(0)
摘要:真是语死早,题目看了两遍才看懂。 按照题目要求建边,从'Z'开始跑最短路即可。 阅读全文
posted @ 2014-12-14 22:02 rpSebastian 阅读(198) 评论(0) 推荐(0)
摘要:由于m很大,所以不能使用DP。注意到n≤30,直接暴力2^n会TLE。所以,将砝码平均分成两份,对一份进行一次暴力,用哈希表存下可能的结果。对下一份再进行一次暴力,在哈希表中搜索剩余的砝码重量是否存在,若存在则更新答案。输出最小答案即可。Program CODEVS2144;const maxn=1... 阅读全文
posted @ 2014-12-11 22:29 rpSebastian 阅读(194) 评论(0) 推荐(0)
摘要:f[i,0] 表示 第i个人不参加舞会f[i,1] 表示 第i个人参加舞会f[i,1]=sigma(f[j,0])+v[i] j 为 i 的孩子f[i,1]=sigma(max(f[j,0],f[j,1])) j 为 i 的孩子ans=max(f[root,0],f[root,1])Progra... 阅读全文
posted @ 2014-12-11 21:55 rpSebastian 阅读(166) 评论(0) 推荐(0)
摘要:对所有边从大到小排序,枚举最大边,O(m)验证,用并查集维护图是否联通。program CODEVS1001;const maxm=5008; maxn=508; INF=2000000000;type arr=record u,v,w:int64; end;... 阅读全文
posted @ 2014-12-10 20:41 rpSebastian 阅读(213) 评论(0) 推荐(0)
摘要:program LCA(Tarjan);type arr=record u,v,w,next:longint; end;const maxn=100008; maxm=100008;var eg:array[0..maxm*4] of arr; last,lasq,a... 阅读全文
posted @ 2014-12-10 19:48 rpSebastian 阅读(292) 评论(0) 推荐(0)
摘要:一道裸的并查集,练练手不错。 program CODEVS1073;var i,j,m,n,q,x,y,k1,k2,z:longint; f:array[0..10000] of longint;function find(x:longint):longint;var fa:longin... 阅读全文
posted @ 2014-12-08 20:38 rpSebastian 阅读(192) 评论(0) 推荐(0)
摘要:给定一个集合,要求一个最大子集,满足两两之间不互斥。对两个数x,y互斥的定义是,y=p*x。 先对集合中的数从小到大排序后线性扫,若一个数x可以取则取,取完之后p*x这个数不可取。由于数字较大,使用哈希表来判断。 1 Program CODEVS1533; 2 const maxn=100... 阅读全文
posted @ 2014-12-04 19:31 rpSebastian 阅读(212) 评论(0) 推荐(0)
摘要:为了增加冬令营训练时间,经过XXY和年级组的讨论,想出了一个极其逗B的方案== 每天早上照常上课,但是要在晚上之前做完所有作业(可能吗),晚上从6:00到10:30在机房训练。平常9:10是正常的放学时间,现在延迟到了10:30,还”贴心”地说会和宿管说好的。不过,回寝室后不能洗漱,你怎么... 阅读全文
posted @ 2014-12-04 19:05 rpSebastian 阅读(142) 评论(0) 推荐(0)