Processing math: 0%

02 2016 档案

摘要:首先答案一定是包含直径某个端点的一个连通块里所有边权值之和,设直径为AB,以AB分别为根进行处理。 首先按照最长路法则将这棵树进行树链剖分,那么每个叶子的贡献为它与它所在链顶端的点的距离。 将叶子按贡献从大到小排序,并求出h[x]表示x子树内叶子排名的最小值。 对于询问$(x, 阅读全文
posted @ 2016-02-29 23:09 Claris 阅读(565) 评论(0) 推荐(0) 编辑
摘要:考虑从左往右填数,维护当前数字权值与A权值的差值,如果差值大于9,那么以后无论怎么填,都不会改变大小关系。 所以设f[i][j][k]表示填了前i位,差值为j,是否卡住B上限为k的方案数,然后DP即可。 #include<cstdio> #include<cstring> # 阅读全文
posted @ 2016-02-28 17:05 Claris 阅读(334) 评论(0) 推荐(0) 编辑
摘要:将I转置,设G=OI,则ans=G^0+G^1+...+G^d。 注意到G^d=O(IO)^{d-1}I,而IO是大小为k\times k的矩阵,可以通过倍增在O(k^3\log d)的时间内求出,然后依次与OI的一行一列相乘即可。 时间复杂度$O(nk^2+m 阅读全文
posted @ 2016-02-28 02:38 Claris 阅读(779) 评论(0) 推荐(0) 编辑
摘要:考虑DP,设f[i][j]表示考虑了a[1..i]b[1..j]的最小代价。 若a[i]==b[j],则f[i][j]=\min(f[i-1][j],f[i][j-1])+1。 否则找到最大的t,满足xy往前t个均不相等,此时$f[i][j]=f[i-t-1] 阅读全文
posted @ 2016-02-26 21:03 Claris 阅读(700) 评论(0) 推荐(1) 编辑
摘要:枚举答案长度L,设AB分别为第一个循环节和反串的第一个循环节。 1.坏点不在A,那么可以暴力匹配检验。 2.坏点不在B,那么把串翻转后不在A中,转化为1。 3.坏点在AB的交里面,那么只要长度为n-L+1的前后缀相同,那么就存在长度为L的循环节。 通过扩展 阅读全文
posted @ 2016-02-20 16:42 Claris 阅读(516) 评论(2) 推荐(0) 编辑
摘要:首先求出区间前k大数中奇数的个数和偶数的个数。 如果都是偶数,那么答案就是前k大数的和。 否则,要么去掉最小的偶数,加上最大的奇数,要么去掉最小的奇数,加上最大的偶数。 主席树维护即可。 时间复杂度O((n+m)\log n)。 #include<cstdio> #include<alg 阅读全文
posted @ 2016-02-19 21:49 Claris 阅读(439) 评论(0) 推荐(0) 编辑
摘要:记忆化搜索,设f[i][j]表示符号i一开始kmp指针为j,中间匹配了多少次,g[i][j]则表示匹配结束后kmp指针的位置。 时间复杂度O(nl^2)。 #include<cstdio> #include<cstring> const int N=26,M=105,P=1000 阅读全文
posted @ 2016-02-19 20:43 Claris 阅读(597) 评论(0) 推荐(0) 编辑
摘要:因为是一个排列,所以可以用n位二进制数来表示O(n\log n)求LIS时的单调栈。 首先通过O(n^22^n)的预处理,求出每种LIS状态后面新加一个数之后的状态。 设f[i][j]表示已选数字集合为i,LIS状态为j的方案数。 转移时枚举不在i里的数t,如果t 阅读全文
posted @ 2016-02-19 18:52 Claris 阅读(1774) 评论(0) 推荐(2) 编辑
摘要:求出左上角到每个需要保护的点左上角的最短路树,那么最优解一定圈住了它们。 然后将每个点拆成四个点,四个点之间如果没跨越最短路树的树边,那就连0权边。 每个需要保护的点四周4个点都不可通行,求出最短路即为答案。 时间复杂度O(nm\log(nm))。 #include<cstdio> #inclu 阅读全文
posted @ 2016-02-17 21:42 Claris 阅读(1020) 评论(0) 推荐(0) 编辑
摘要:x^k=\sum_{i=1}^k Stirling2(k,i)\times i!\times C(x,i)f[i][j]=\sum_{k=1}^n C(dist(i,k),j)。 则可以利用C(i,j)=C(i-1,j-1)+C(i-1,j),通过树形DP求出f。 时间复杂度$O 阅读全文
posted @ 2016-02-16 13:52 Claris 阅读(1028) 评论(0) 推荐(0) 编辑
摘要:\[\begin{eqnarray*}&&\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^k\\&=&\sum_d d^k\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=d]\\&=&\sum_d d^k\sum_{i=1}^{\lfloor\frac{n} 阅读全文
posted @ 2016-02-15 23:06 Claris 阅读(1320) 评论(0) 推荐(0) 编辑
摘要:设c[i]=g[i]+\frac{i(i+1)}{2}-a[i]\times i-a[i]d[i]=a[i]-if[i]表示以i为结尾最多保留多少个建筑,则 f[i]=\max(f[j])+1j<i且d[j]\leq d[i] g[i]表示以i为结尾的最小代价, 阅读全文
posted @ 2016-02-14 20:00 Claris 阅读(524) 评论(0) 推荐(1) 编辑
摘要:树链剖分+线段树,每个节点维护以下信息: (1)单独在某个点分配i个人的最大收益。可以O(m)合并。 (2)分配i个人的最大收益。可以用O(m^2)合并。 时间复杂度O(c(m^2\log n+m\log^2n))。 #include<cstdio> #include<algor 阅读全文
posted @ 2016-02-13 02:07 Claris 阅读(583) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示