随笔分类 -  题解

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 21 下一页
题解
摘要:首先可以确定是树形DP,但这里存在跨子树的信息传递问题,这里就需要“借”的思想。 f[i][j]表示i子树内所有点都被覆盖到,且i以外j层内的点都能被覆盖到 的方案数。 g[i][j]表示i子树内离i距离不小于j的点都被覆盖到 的方案数。 这里f做了一个前缀和,g做了一个后缀和。 那么f有转移: 1 阅读全文
posted @ 2018-12-03 19:38 HocRiser 阅读(182) 评论(0) 推荐(0)
摘要:结论:固定端点的所有子段GCD只会有$O(\log)$种,因为一个数的质因子个数是这个级别的。 从左到右枚举右端点,用一个数组记录所有GCD相同的子段的第一个位置,每次线性更新与合并。$O(n\log n)$ 阅读全文
posted @ 2018-12-02 20:24 HocRiser 阅读(190) 评论(0) 推荐(0)
摘要:有一个结论:对于边<u,v>,若这是u到v的唯一路径,则这条边显然不可被删去,否则必然可以被删去。 因为若u到v还有其它路径,则必然是从u到某个点x再到v,由于最终答案中连通性不变,也就是最终答案中仍然可以走到x后再走到v,于是可以删去这条边。 于是大致算法就出来了:按拓扑序从后往前做,每次将这个点 阅读全文
posted @ 2018-12-02 20:20 HocRiser 阅读(173) 评论(0) 推荐(0)
摘要:一开始写了7个DP方程,然后意识到这种DP应该都会有一个通式。 三个条件:有色行数为n,有色列数为m,颜色数p,三维容斥原理仍然成立。 于是就是求:$\sum_{i=0}^{n}\sum_{j=0}^{m}\sum_{k=0}^{p}(-1)^{n+m+p-i-j-k}\times C_n^i\ti 阅读全文
posted @ 2018-12-02 19:53 HocRiser 阅读(265) 评论(0) 推荐(0)
摘要:链上是经典贪心问题,将线段全按左端点排序后把点全撒在线段右端点上。这里放到环上,倍长即可。 题目保证不存在区间包含情况,于是有一种暴力做法,先将战士的管辖区间按左端点从小到大排序,对于询问x,从x战士出发,每次走到最远(管辖区间左端点最大)的一个战士,满足这个战士的区间左端点被x的区间右端点覆盖到, 阅读全文
posted @ 2018-12-02 17:57 HocRiser 阅读(171) 评论(0) 推荐(0)
摘要:建出对偶图,删除一条边时将两边的格子连边。一条边两端连通当且仅当两边的格子不连通,直接并查集处理即可。 阅读全文
posted @ 2018-12-02 16:57 HocRiser 阅读(196) 评论(0) 推荐(0)
摘要:怎么也没想到是子集DP,想到了应该就没什么难度了。 首先n>21时必定为NO。 g[i][j]表示位置i后的第一个字母j在哪个位置,n*21求出。 f[S]表示S的所有全排列子序列出现的最后末尾位置,枚举最后一个字母转移。21*2^21 阅读全文
posted @ 2018-12-02 13:32 HocRiser 阅读(242) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/Skyminer/p/6435544.html 先不要急于转化成几何模型,先把式子化到底再对应到几何图形中去。 阅读全文
posted @ 2018-12-02 12:27 HocRiser 阅读(177) 评论(0) 推荐(0)
摘要:根据欧拉函数的定义式可知,可以先算出a[l]*a[l+1]*...*a[r]的值,然后枚举所有存在的质因子*(p-1)/p。 发现这里区间中一个质因子只要计算一次,所以指计算“上一个同色点在区间外”的数。记录pre就是二维数点问题了,套路地用主席树即可。 被卡常。别的OJ过了BZOJ过不了,优化常数 阅读全文
posted @ 2018-12-01 23:26 HocRiser 阅读(294) 评论(0) 推荐(0)
摘要:51nod1434 区间LCM 跟容斥没有关系。首先可以确定的一个结论是:对于任意正整数,有1*2*...*n | (k+1)*(k+2)*...*(k+n)。因为这就是$C_{n+k}^{k}$。 于是这题就有:m最多枚举到2n。 于是有一个做法:对n!分解质因数,然后枚举m的同时统计已获得的所有 阅读全文
posted @ 2018-11-26 19:17 HocRiser 阅读(277) 评论(0) 推荐(0)
摘要:从左到右处理,设到当前数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]中的数之 阅读全文
posted @ 2018-11-19 00:47 HocRiser 阅读(187) 评论(0) 推荐(0)
摘要:D1T1:铺设道路 回忆NOIP2013D2T1 积木大赛,发现这两题唯一的区别就是一个是造山一个是填坑,而把填坑的操作反序就是造山,所以可以直接使用那道题的方法。 具体方法是,从左到右每次考虑新的一列,若这一列的坑比左边一列浅,那么可以在填左边一列的时候顺便填好这个坑(只要把所有右端点为i-1的操 阅读全文
posted @ 2018-11-18 09:18 HocRiser 阅读(2263) 评论(0) 推荐(0)
摘要:考虑到K很小,于是可以暴搜每次用的是哪种操作,跳过AB相等的字符可以用SA求LCP加速。 主要流程就是,枚举B的每个后缀,对每个后缀统计合法前缀个数。DFS搜索每次决策,用SA跳过相同字符,当A或B匹配到结尾时统计答案。 每次某个串匹配到结尾时,B中的某个区间的前缀都会合法,注意到这些合法的前缀长度 阅读全文
posted @ 2018-11-15 19:59 HocRiser 阅读(364) 评论(0) 推荐(0)
摘要:先求出式子$P_{C_{K+m-1}^{m}}^{n}$,然后对于排列直接$O(n)$求解,对于组合用扩展Lucas求解。 但这题数据并没有保证任何一个模数的质因子的$p^k$在可线性处理的范围内,于是并不会标准解法,只会面向数据编程。 数据中保证了如果某个质因子p的次数不为1,则它的$p^k$一定 阅读全文
posted @ 2018-11-15 19:51 HocRiser 阅读(319) 评论(0) 推荐(0)
摘要:树链剖分,对每个叶子用multiset记录前K大士兵,其余节点通过从儿子归并维护前K大士兵。过于模板。 1 #include<set> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #define ls (x<<1) 6 阅读全文
posted @ 2018-11-13 19:58 HocRiser 阅读(236) 评论(0) 推荐(0)
摘要:考虑要让复杂度和操作数同阶,每次删除时统计下与对方成为好友的时刻到现在对方一共发了多少条微博即可,set维护,最后将所有仍为好友的全部处理掉。 考虑不用set,操作倒序即可,类似差分思想。 阅读全文
posted @ 2018-11-10 21:32 HocRiser 阅读(203) 评论(0) 推荐(0)
摘要:推荐讲解:https://www.cnblogs.com/Tunix/p/4561493.html 首先考虑树的情况,就是经典的树上概率DP。先DP出down表示从这个点向儿子走能走的期望长度,再DP出up表示向父亲走的期望长度,注意算up的时候要注意消除原先此点对父亲的down的影响。 再考虑环的 阅读全文
posted @ 2018-11-09 19:41 HocRiser 阅读(227) 评论(0) 推荐(0)
摘要:同NOI2013快餐店(NOI出原题?),下面代码由于BZOJ栈空间过小会RE。 大致是对每个连通块找到环,在所有内向树做一遍DP,再在环上做两遍前缀和优化的DP。 阅读全文
posted @ 2018-11-08 21:30 HocRiser 阅读(275) 评论(0) 推荐(0)
摘要:先用KMP求出所有可以放的位置,然后两个值分别处理。 最大值: 贪心,4!枚举放的先后位置顺序,2^3枚举相邻两个串是否有交。 若有交,则后一个的起始位置一定是离前一个的结束位置最近的位置,无交也一样。 最小值: 首先去掉被其它串包含的串,因为肯定可以和其它串放同样的位置。 将所有串从长到短排序方便 阅读全文
posted @ 2018-11-08 18:14 HocRiser 阅读(407) 评论(0) 推荐(0)
摘要:显然离线可以分治并查集,在线可以LCT,单都没用到只有两行的性质。 线段树,每个点记录一个矩形的四个角的连通情况,合并时讨论各种情况即可。 参考:https://www.cnblogs.com/MashiroSky/p/5973686.html 阅读全文
posted @ 2018-11-07 21:56 HocRiser 阅读(231) 评论(0) 推荐(0)

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 21 下一页