摘要: 终于填上了这个万年巨坑....从初二的时候就听说过这题...然后一直不敢写QAQ 现在感觉也不是很烦(然而我还是写麻烦了 离散化一波,预处理出组合数什么的。。 要维护对于当前行,每列上方和下方节点凑出合法方案的个数。 然后对于当前行上两棵相邻的常青树,求一下左边、右边合法方案数,乘上中间空的列的合法 阅读全文
posted @ 2016-07-05 21:21 czllgzmzl 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 膜了半天ccz大爷的题解...随机调整好神啊。。 大概就是把点随机一下,按随机后的顺序控制,顺便删掉无用点。 做完一次后,把一个已被控制的点丢回去,然后继续随机顺序做下去。。。 为啥我要尝试的次数比ccz大爷多那么多啊QAQ 实测一次丢多个点回去反而不好... 1 #include<cstdio> 阅读全文
posted @ 2016-07-05 21:12 czllgzmzl 阅读(192) 评论(0) 推荐(0) 编辑
摘要: DP。。 f[i][j][k]表示左上结束节点是第i条副对角线上的第j个点,右下结束节点是第n*2-i条副对角线上的第k个点,构成回文的方案数。 i那维滚动一下。时间复杂度O(n^3)空间复杂度O(n^2) 1 #include<cstdio> 2 #include<iostream> 3 #inc 阅读全文
posted @ 2016-07-05 21:06 czllgzmzl 阅读(471) 评论(0) 推荐(0) 编辑
摘要: tarjan、并查集、树状数组、树链剖分。 时间倒流,变删边为加边。 先求一波边双联通分量,缩点。 题目保证最后还是整张图联通的。。所以就是一棵树。 现在的操作就是,将路径上的边权置0(加边时),查询两点间边权和。 可以转换成求根到点路径上边权和,置0的时候,就相当于将子树内的值都减去原边的长度,可 阅读全文
posted @ 2016-07-05 20:58 czllgzmzl 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 每次到达一个点,或者点亮一个房间的灯的时候,检查一下它四周的点能否走。 一开始看错题了..要求的是最多能开多少房的灯。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<cmath> 5 #include<a 阅读全文
posted @ 2016-07-05 20:45 czllgzmzl 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 结论是..把A串中的字符挪到B串里最近的出现这个字符的地方就能最优了。。。 求出A串中的每个位置上的字符,之后要挪到哪个位置。然后求一波逆序对就是答案了。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<a 阅读全文
posted @ 2016-07-05 20:12 czllgzmzl 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 将正方形视为连接字符间的边。比方说正方形上存在A+,B-,就从A-往B+连边,表示字符可以通过这个正方形进行变换。 如果能构成环的话就可以无穷大了。。。判环随便写个拓扑什么的... 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 阅读全文
posted @ 2016-07-05 20:07 czllgzmzl 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 大概是叫倍增Floyd? 显然最多200个点...f[i][j][k]表示从j到k,走2^i步的最小路程。就随便转移了。。 查询的话就是把n二进制位上是1的那些都并起来。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #i 阅读全文
posted @ 2016-07-05 19:50 czllgzmzl 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 旋(xuàn)转(zhuàn)卡(kǎ)壳(qiào)(大雾 抄了黄学长的标程当板子。。 求凸包后,两对平行线卡来卡去..上下一对的直接用单峰性质,左右一对的也是...就看到底边的投影长,这个用数量积除以底边长。 1 #include<cstdio> 2 #include<iostream> 3 # 阅读全文
posted @ 2016-07-05 19:12 czllgzmzl 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 一开始看错题了... 求经过的道路数量就求个lca,把路径上的点置为已经过的话,可以写一个并查集,把某个点往上连续已经过的一段点并起来。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 阅读全文
posted @ 2016-07-05 19:04 czllgzmzl 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 强行上莫队+线段树显然是会T的。 如果莫队没有删除的转移的话...就可以用并查集代替线段树。 所以按照一般姿势将询问排序好后,右端点照常,左端点每次从左端点所属块的末端开始跑,跑完后暴力撤回。 复杂度还是O(m*n^0.5) 为了能够撤回,并查集合并的时候,以临时增加的点为父亲。 1 #includ 阅读全文
posted @ 2016-07-05 18:57 czllgzmzl 阅读(296) 评论(0) 推荐(0) 编辑