04 2017 档案

摘要://By SiriusRen #include #include #include using namespace std; const int N=200050; int n,q,cnt,dfn[N],last[N],tree[N*16],lson[N*16],rson[N*16]; int first[N],next[N],v[N],w[N],tot,root[N],fa[N]... 阅读全文
posted @ 2017-04-30 13:18 SiriusRen 阅读(197) 评论(0) 推荐(0)
摘要:思路: 1. 二分+后缀数组 2.SAM 阅读全文
posted @ 2017-04-26 21:07 SiriusRen 阅读(234) 评论(0) 推荐(0)
摘要:思路: 一个串建SAM 另一个串在SAM上跑 阅读全文
posted @ 2017-04-26 20:51 SiriusRen 阅读(109) 评论(0) 推荐(0)
摘要:思路: 注意到len<=10 按照权值max-min<=sqrt(n)*len 分块 记一下前缀和 每修改sqrt(n)次以后重新分块 修改的时候整块打标记 两边重构 (这题常数卡得要死 找同学要来fread才过) 修改的时候整块打标记 两边重构 (这题常数卡得要死 找同学要来fread才过) 查询 阅读全文
posted @ 2017-04-26 11:51 SiriusRen 阅读(544) 评论(0) 推荐(0)
摘要:思路: $(m%k+n%k>=k) *phi(k)$ $我们不妨设n=q_1k+r_1 m=q_2k+r$2 $n+m=(q_1+q_2)k+r1+r2$ ${\lfloor}\frac{n+m}{k}{\rfloor}-{\lfloor}\frac{m}{k}{\rfloor}-{\lfloor} 阅读全文
posted @ 2017-04-25 15:07 SiriusRen 阅读(163) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2017-04-24 08:17 SiriusRen 阅读(202) 评论(0) 推荐(0)
摘要:思路: $\Pi_{i=1}^n\Pi_{j=1}^m f[gcd(i,j)]$ $=\Pi_{d=1}^n\Pi_{i=1}^{\lfloor\frac{n}{d}\rfloor}\Pi_{j=1}^{\lfloor\frac{m}{d}\rfloor}f[d]*(gcd(i,j)==1)$ $\ 阅读全文
posted @ 2017-04-13 11:20 SiriusRen 阅读(368) 评论(0) 推荐(0)
摘要:⑤(BZOJ 3560) $\Sigma_{i_1|a_1}\Sigma_{i_2|a_2}\Sigma_{i_3|a_3}\Sigma_{i_4|a_4}...\Sigma_{i_n|a_n}\phi(i_1i_2i_3i_4...i_n)$$\phi()$是积性函数$\phi(p^k)=p^{k 阅读全文
posted @ 2017-04-12 23:58 SiriusRen 阅读(409) 评论(0) 推荐(0)
摘要:思路: 后面nlogn的部分是伪证... 大家可以构造数据证明是这是nlog^2n的啊~ 吉老司机翻车了 阅读全文
posted @ 2017-04-10 10:15 SiriusRen 阅读(2310) 评论(1) 推荐(0)
摘要:思路: 先copy一下百度百科 作为预备知识吧多重全排列定义:求r1个1,r2个2,…,rt个t的排列数,设r1+r2+…+rt=n,设此排列数称为多重全排列,表示为$P(n;r1,r2,…,rt)$$P(n;r1,r2,…,rt)=\frac{n!}{(r1!r2!...rt!)}$ 题目是让求s 阅读全文
posted @ 2017-04-09 22:05 SiriusRen 阅读(386) 评论(0) 推荐(0)
摘要:思路: 首先求出后缀数组和height数组,这样能得到本质不同的子串数目 这里利用:本质不同的子串=∑(Len−SA[i]−height[i])=∑(Len−SA[i]−height[i])利用SA[],height[]的定义很好想 然后要求最大值最小,显然二分,二分一个mid,求出第mid大的子串 阅读全文
posted @ 2017-04-09 17:22 SiriusRen 阅读(306) 评论(0) 推荐(0)
摘要:思路: 杜教筛裸题 阅读全文
posted @ 2017-04-09 17:19 SiriusRen 阅读(173) 评论(0) 推荐(0)
摘要:思路: 感觉这题也可神了.. (还是我太弱) 首先发现每一位不会互相影响,可以把每一位分开考虑,然后用树链剖分或者LCT维护这个树 修改直接修改,询问的时候算出来每一位填0,1经过这条链的变换之后得到的值 考虑贪心,从高往低,如果这一位填0可以得到1,那么填0一定是最优的 否则如果可以填1,就把这一 阅读全文
posted @ 2017-04-09 17:17 SiriusRen 阅读(915) 评论(0) 推荐(0)
摘要:思路: 看完这道题根本没有思路啊.... 然后我就膜拜了一波题解... 这神tm乱搞思路 维护两个bitset 第一个bitset代表当前区间哪些数出现过 第二个bitset是 maxp-p出现过 差为x的时候 就用第一个bitset与一下它右移x就好了 和为x的时候 就第一个bitset与一下第二 阅读全文
posted @ 2017-04-09 17:11 SiriusRen 阅读(418) 评论(0) 推荐(0)
摘要:自然数幂求和 1. 高斯消元 (观察)可得肯定是一个多项式 推出来前几项 消元就行了 2. 倍增 (from http://blog.csdn.net/werkeytom_ftd/article/details/50741165#reply) O(k2lognlogk) 阅读全文
posted @ 2017-04-08 00:13 SiriusRen 阅读(289) 评论(0) 推荐(0)
摘要:思路: $\Sigma_{i=1}^n\Sigma_{j=1}^mgcd(i,j)==p(p是素数)$ $\Sigma_{p是素数}^{p<=n}\Sigma_{i=1}^{\lfloor \frac{n}{p} \rfloor}\Sigma_{j=1}^{\lfloor \frac{m}{p} \ 阅读全文
posted @ 2017-04-07 23:32 SiriusRen 阅读(177) 评论(0) 推荐(0)
摘要:题意:求出每个前缀的最长周期之和(等于本身的算0) 思路: 求出来next数组 建出next树 找到不为0的最小的 n减去它就是答案 阅读全文
posted @ 2017-04-05 09:28 SiriusRen 阅读(253) 评论(0) 推荐(0)
摘要:思路: 设$sum[i]表示i的子树中a[i]的和$ $b[1]=\Sigma a[i]*dis[i] = \Sigma _{i=2} ^n sum[i]$ $b[x]-b[fa[x]]=sum[1]-2*sum[x]$ $sum[1]={\Sigma_{i=2}^n (b[x]-b[fa[x]]) 阅读全文
posted @ 2017-04-05 08:57 SiriusRen 阅读(215) 评论(0) 推荐(0)
摘要://By SiriusRen #include #include using namespace std; const int N=555; struct Node{int a,p;}node[N]; bool operator<(Node a,Node b){return a.p<b.p;} char pr[]={2,3,5,7,11,13,17,19}; int n,p,f[N][N... 阅读全文
posted @ 2017-04-01 08:52 SiriusRen 阅读(151) 评论(0) 推荐(0)
摘要:思路: f[i][j]表示i位数乘积为j的方案数 j的取值最多5000多种,那就开个map存一下好了 阅读全文
posted @ 2017-04-01 08:34 SiriusRen 阅读(231) 评论(0) 推荐(0)
摘要:思路: 水题 竟然不会做 尴尬 比b大的数=1 比b小的数=-1 找到b 统计一下左边比b大x的数有多少 扫右边的时候就查左边的表 就可以了 阅读全文
posted @ 2017-04-01 08:25 SiriusRen 阅读(143) 评论(0) 推荐(0)
摘要:思路: 二分+哈希 Manacher改一下条件 0只能匹配1 1只能匹配0 #匹配# (长度从0开始匹配 这样就相当于只能从#开始走了 也就是长度为偶数) 阅读全文
posted @ 2017-04-01 08:20 SiriusRen 阅读(182) 评论(0) 推荐(0)
摘要:思路: 对所有序列差分一下 公共串的长度+1就是答案了 二分 扫一遍height即可,.. 阅读全文
posted @ 2017-04-01 08:18 SiriusRen 阅读(395) 评论(0) 推荐(0)
摘要:思路: 直接上A* 阅读全文
posted @ 2017-04-01 08:16 SiriusRen 阅读(186) 评论(0) 推荐(0)
摘要:思路: 我们可以算不合法的 如果三个点都在同一侧 就不合法.. 用总方案数减掉就可以了 (有神奇的实现方法...) 阅读全文
posted @ 2017-04-01 08:13 SiriusRen 阅读(290) 评论(0) 推荐(0)
摘要:思路: 满足二分性质... 二分一下 就完了 阅读全文
posted @ 2017-04-01 08:11 SiriusRen 阅读(156) 评论(0) 推荐(0)
摘要:思路: f[i][j][S]表示从i到j压成S状态 j-m是k-1的倍数 $f[i][j][S<<1]=max(f[i][j][S<<1],f[i][m-1][S]+f[m][j][0]),$$f[i][j][S<<1|1]=max(f[i][j][S<<1|1],f[i][m-1][S]+f[m] 阅读全文
posted @ 2017-04-01 08:10 SiriusRen 阅读(241) 评论(0) 推荐(0)
摘要:思路: 移至iwtwiioi http://www.cnblogs.com/iwtwiioi/p/4986316.html 阅读全文
posted @ 2017-04-01 08:06 SiriusRen 阅读(125) 评论(0) 推荐(0)
摘要:思路: 统计入度&出度 每搜到一个点 阅读全文
posted @ 2017-04-01 08:03 SiriusRen 阅读(190) 评论(0) 推荐(0)
摘要:思路: 把障碍移到对角线 就发现 这是个错位排列问题 用错排公式即可解 s[i]=(s[i-1]+s[i-2])*i 阅读全文
posted @ 2017-04-01 07:59 SiriusRen 阅读(165) 评论(0) 推荐(0)
摘要:思路: 数位DP f[i][j][k]表示走到第i位 开头位j 数字k 出现的次数 $f[i][j][k]+=f[i-1][l][k];$$f[i][j][j]+=base[i]$ calc的时候要有特殊的技巧...(我看题解学会的) 阅读全文
posted @ 2017-04-01 07:57 SiriusRen 阅读(150) 评论(0) 推荐(0)
摘要:思路: 预处理错排 然后C(n,m)*s[n-m-1]就是答案了 特判n-m-1<0 阅读全文
posted @ 2017-04-01 07:52 SiriusRen 阅读(162) 评论(0) 推荐(0)
摘要:思路: 维护两个指针pointer_1和pointer_2 代表用算法一走到的位置 和算法2走到的位置 若 算法一<算法2 数组后面就插入算法一的解 pointer_1++ (记得判重) (这题卡不住heap什么鬼) 阅读全文
posted @ 2017-04-01 07:51 SiriusRen 阅读(143) 评论(0) 推荐(0)
摘要:思路: 把它拆成两半 分别搜一发 两部分分别排好序 用two-pointers扫一遍 就可以了. (读入也要用long long) 阅读全文
posted @ 2017-04-01 07:47 SiriusRen 阅读(272) 评论(0) 推荐(0)
摘要:思路: 状压一下 就完了... f[i]表示选了的集合为i 转移的时候判一判就好了.. 阅读全文
posted @ 2017-04-01 07:46 SiriusRen 阅读(431) 评论(0) 推荐(2)
摘要:思路: 棋盘是个二分图 那就把一个可以走的白点 向所有可以走的黑点连边 跑一个最大匹配 (匹配上了就代表这两个点不能共存) 最大独立集=sum-最大匹配 阅读全文
posted @ 2017-04-01 07:44 SiriusRen 阅读(736) 评论(0) 推荐(1)