摘要:
从左到右处理,设到当前数R的前缀和为cnt[i],则以i为右端点的合法的区间左端点j必然是L<=cnt[i]-cnt[j-1]<=R,即cnt[i]-R<=cnt[j-1]<=cnt[i]-L。 问题相当于每次单点在cnt[i]处计数器加1,然后区间询问[cnt[i]-R,cnt[i]-L]中的数之 阅读全文
摘要:
D1T1:铺设道路 回忆NOIP2013D2T1 积木大赛,发现这两题唯一的区别就是一个是造山一个是填坑,而把填坑的操作反序就是造山,所以可以直接使用那道题的方法。 具体方法是,从左到右每次考虑新的一列,若这一列的坑比左边一列浅,那么可以在填左边一列的时候顺便填好这个坑(只要把所有右端点为i-1的操 阅读全文
摘要:
考虑到K很小,于是可以暴搜每次用的是哪种操作,跳过AB相等的字符可以用SA求LCP加速。 主要流程就是,枚举B的每个后缀,对每个后缀统计合法前缀个数。DFS搜索每次决策,用SA跳过相同字符,当A或B匹配到结尾时统计答案。 每次某个串匹配到结尾时,B中的某个区间的前缀都会合法,注意到这些合法的前缀长度 阅读全文
摘要:
先求出式子$P_{C_{K+m-1}^{m}}^{n}$,然后对于排列直接$O(n)$求解,对于组合用扩展Lucas求解。 但这题数据并没有保证任何一个模数的质因子的$p^k$在可线性处理的范围内,于是并不会标准解法,只会面向数据编程。 数据中保证了如果某个质因子p的次数不为1,则它的$p^k$一定 阅读全文
摘要:
树链剖分,对每个叶子用multiset记录前K大士兵,其余节点通过从儿子归并维护前K大士兵。过于模板。 1 #include<set> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #define ls (x<<1) 6 阅读全文
摘要:
考虑要让复杂度和操作数同阶,每次删除时统计下与对方成为好友的时刻到现在对方一共发了多少条微博即可,set维护,最后将所有仍为好友的全部处理掉。 考虑不用set,操作倒序即可,类似差分思想。 阅读全文
摘要:
推荐讲解:https://www.cnblogs.com/Tunix/p/4561493.html 首先考虑树的情况,就是经典的树上概率DP。先DP出down表示从这个点向儿子走能走的期望长度,再DP出up表示向父亲走的期望长度,注意算up的时候要注意消除原先此点对父亲的down的影响。 再考虑环的 阅读全文
摘要:
同NOI2013快餐店(NOI出原题?),下面代码由于BZOJ栈空间过小会RE。 大致是对每个连通块找到环,在所有内向树做一遍DP,再在环上做两遍前缀和优化的DP。 阅读全文
摘要:
先用KMP求出所有可以放的位置,然后两个值分别处理。 最大值: 贪心,4!枚举放的先后位置顺序,2^3枚举相邻两个串是否有交。 若有交,则后一个的起始位置一定是离前一个的结束位置最近的位置,无交也一样。 最小值: 首先去掉被其它串包含的串,因为肯定可以和其它串放同样的位置。 将所有串从长到短排序方便 阅读全文
摘要:
显然离线可以分治并查集,在线可以LCT,单都没用到只有两行的性质。 线段树,每个点记录一个矩形的四个角的连通情况,合并时讨论各种情况即可。 参考:https://www.cnblogs.com/MashiroSky/p/5973686.html 阅读全文