上一页 1 2 3 4 5 6 7 8 9 10 ··· 21 下一页
摘要: AC自动机,树上莫队,树状数组。。 比赛的时候完全看不出来...赛后去膜了一波网上题解才明白= = 离线,先把AC自动机建出来,把fail边反向建出fail树。 发射言弹,就是将言弹结束节点的fail子树内点权+1; 查询证言受的伤害,就是查询证言的每个前缀的结束节点的点权和。 前缀的结束节点的点权 阅读全文
posted @ 2016-06-29 09:32 czllgzmzl 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 数位DP。 比较蛋疼的是,设a[i]表示第i位上数字,比方说a[1]<a[2]>a[3],且a[1]==a[3]时,这两位上的数可以放在一起搞掉。 所以就在正常的f数组里多开一维,表示后面那些位组成的不增的单调栈中,包含的数字集合。 f[i][j][k][a]表示i位,首位为j,单调栈数字集合为k, 阅读全文
posted @ 2016-06-29 09:16 czllgzmzl 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 一开始想拆位。。但显然没法应对进位啊什么的。 所以维护每一个长度的后缀。 查询有多少个a&2^i>0,也就是长度为(i+1)的后缀里,值为2^i...2^(i+1)-1的数有多少个。 前缀和一波就好了。。整体加就开个变量记着,查询的时候再分一下类。 1 #include<cstdio> 2 #inc 阅读全文
posted @ 2016-06-28 14:49 czllgzmzl 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 弦图判定。。MCS算法。 先选一个点,然后每次拿 相邻已选点最多 的未选点。 选完之后判断一下是否是完美消除序列。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 #define 阅读全文
posted @ 2016-06-28 14:28 czllgzmzl 阅读(199) 评论(0) 推荐(0) 编辑
摘要: AC自动机+树状数组。 先把fail边反向建出fail树来。。 第x个字符串在第y个字符串中出现了多少次。对于y的每个前缀,如果它结尾可以通过fail跳到x的结尾的话,那么就出现了x。。 也就是查询x的fail子树中,有多少个y的节点。 在trie上暴力跑,在树状数组上加入根到当前节点路径上的点(将 阅读全文
posted @ 2016-06-28 14:07 czllgzmzl 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 莫队+暴力。。 对于>100的模数p,每次暴力查k,p+k,2p+k.....就好了。 对于<=100的模数,就在莫队的时候处理出来就好了。。。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algori 阅读全文
posted @ 2016-06-28 09:31 czllgzmzl 阅读(140) 评论(0) 推荐(0) 编辑
摘要: AC自动机。 是否存在无限长的不存在非法子串的串。。。也就是询问trie图上有没有不经过非法点的环。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 using namespace 阅读全文
posted @ 2016-06-28 09:24 czllgzmzl 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 第一眼:这好像是数位DP? 然后看了下来源......银组题?...肯定是我想多了 妈呀银组题竟然出数位DP.... 处理出f[i][j]表示i位,0比1至少多j个的方案数。 但因为涉及负数什么的。。所以预处理一下组合数,每次用到的时候再强行枚举算出来。。 1 #include<cstdio> 2 阅读全文
posted @ 2016-06-28 09:22 czllgzmzl 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 平面图判定。。好高大上的东西。。 然而题目保证有个n元环= =。。。所以只要判断一下,非环边能否做到不相交。 接下来有各种姿势。。。 可以将边看成点,不能放在环的同一侧(会相交)的边之间连边,判断新图是否为二分图(没有奇环); 还可以上2-sat。。。。 或者可以用并查集...其实就是因为这题2-s 阅读全文
posted @ 2016-06-28 09:19 czllgzmzl 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 还是膜网上题解QAQ 从低到高考虑,这样就不会影响后挪的草了。 每次把草贪心地挪到代价较小的一边。位置为i的草,花费为min( 1..i-1中更高的草的数目,i+1..n中更高的草的数目 ) 因为更小的草已经被挪到两边了..所以代价就是更高的草的数目。 拿个树状数组统计一下就好了。 1 #inclu 阅读全文
posted @ 2016-06-28 09:07 czllgzmzl 阅读(208) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 21 下一页