摘要: 思路: http://www.cnblogs.com/exponent/archive/2011/08/14/2137849.html f[i,i+len]=sum[i,i+len]-min(f[i+1,i+len],f[i,i+len-1]); 但题目把n出到5000,内存卡到64M,二维的状态存 阅读全文
posted @ 2017-03-21 08:37 SiriusRen 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 思路: 这好像是我刚学单调性的时候做的题 (我是不会告诉你 我被这题教做人了的...) 阅读全文
posted @ 2017-03-21 08:32 SiriusRen 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 思路: (抄一波公式) $$ans=min(dep[x],k)×(size[x]-1)+\sum_{y在x的子树中,且dis(x,y)<=k}(size[y]-1)$$ 顺着DFS序 按照deep往线段树里插就好了... 阅读全文
posted @ 2017-03-21 08:29 SiriusRen 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 思路: 因为有深度的限制,并且我们是在线段树上维护权值,所以我们把点按照dep排序,然后一个一个修改...主席树的下标就是dfs序,子树的查询就是区间查询... 但是发现这样怎么去维护LCA呢...因为要求有序,所以我们可以用set来维护相同颜色的节点...如果把一个点加入集合之后这个点前驱为x,后 阅读全文
posted @ 2017-03-21 08:26 SiriusRen 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 思路: 若a,b是整数,且(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。 它的一个重要推论是:a,b互质的充要条件是存在整数x,y使ax+by=1. 设a1,a2,a3......an为n个整数,d是它们的最大公约数,那么存在 阅读全文
posted @ 2017-03-21 08:22 SiriusRen 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 思路: $x^2=kn+1$ $x^2-1=kn$ $(x+1)(x-1)=kn$ 令$x+1=k1n1$,$x-1=k2n2$,其中$k1k2=k$,$n1n2=n$ 枚举n约数 >=$\sqrt{n}$的,代入验证 去重 阅读全文
posted @ 2017-03-21 08:19 SiriusRen 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 思路: 放个题解好吧. http://www.cnblogs.com/zyfzyf/p/4114774.html //By SiriusRen #include <queue> #include <cstdio> #include <algorithm> using namespace std; c 阅读全文
posted @ 2017-03-21 08:14 SiriusRen 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 思路 : 先对b 的所有后缀建立trie树 第一问 暴力枚举a串的起点 在trie树上跑 找到最短的 第二问 也是暴力枚举a串的起点 a和b顺着暴力匹配就好 第三问 求出来a在第i个位置 加一个字母j 能够到的最近的位置 f[i][j] 到最后就是inf 从f[0][j]DFS 在trie上跟着跑找 阅读全文
posted @ 2017-03-21 08:09 SiriusRen 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 思路: 普通的DP很好想吧 f[i][j]+=f[i-1][j*s[k]] 前i个数 mod m=j 的个数 m是质数 模数是质数 这就很有趣了 那么我们就求出来原根 所有的数都取指数 搞出生成函数乘法就变成了加法 快速幂+$NTT$就好了 (注意特判零) 阅读全文
posted @ 2017-03-21 08:00 SiriusRen 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 思路: 1.最裸的线段树合并 2. 我们可以观察到子树求一个东西 那我们直接DFS序好了 入队的时候统计一下有多少比他大的 出的时候统计一下 减一下 搞定~ 线段树合并代码: 阅读全文
posted @ 2017-03-21 07:53 SiriusRen 阅读(1264) 评论(0) 推荐(0) 编辑
摘要: 思路: 跟POJ有一道时限挺长的题一模一样 哦 POJ 1904 题解可以看这个(捂脸) http://blog.csdn.net/qq_31785871/article/details/52963278 阅读全文
posted @ 2017-03-21 07:50 SiriusRen 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 思路: 把询问离线下来,查询max和查询min相似,现在只考虑查询max 令sum[l,r,x]表示l到r内的数为左端点,x为右端点的区间询问的答案 那么询问就是sun[l1,r1,r2]-sum[l1,r1,l1-1] 从1到n枚举x,维护区间线段树表示sum[l,r,x],发现从x-1转移到x的 阅读全文
posted @ 2017-03-21 07:47 SiriusRen 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 思路: 通过打表观察 这是个卡特兰数 但是它mod的数不是质数 怎么办呢 把所有数分解质因数好了 线性筛出mindiv 顺着mindiv分解质因数 复杂度$O(nlogn)$ 阅读全文
posted @ 2017-03-21 07:43 SiriusRen 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 思路: 先跑一遍Floyd 更新的时候map[i][j]=map[i][k]+map[k][j] k需要小于i或j 正常建边: 把所有点 拆点-> i,i+n add(x,y,C,E)表示x->y建边 话费为C 容量为E add(S,0,0,k) add(i,j+n,map[i][j],1) add 阅读全文
posted @ 2017-03-21 07:40 SiriusRen 阅读(376) 评论(0) 推荐(0) 编辑