上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 38 下一页
摘要: 记忆化搜索,设$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 阅读(610) 评论(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 阅读(1816) 评论(0) 推荐(2)
摘要: 求出左上角到每个需要保护的点左上角的最短路树,那么最优解一定圈住了它们。 然后将每个点拆成四个点,四个点之间如果没跨越最短路树的树边,那就连0权边。 每个需要保护的点四周4个点都不可通行,求出最短路即为答案。 时间复杂度$O(nm\log(nm))$。 #include<cstdio> #inclu 阅读全文
posted @ 2016-02-17 21:42 Claris 阅读(1030) 评论(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 阅读(1039) 评论(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 阅读(1330) 评论(0) 推荐(0)
摘要: 设$c[i]=g[i]+\frac{i(i+1)}{2}-a[i]\times i-a[i]$,$d[i]=a[i]-i$,$f[i]$表示以$i$为结尾最多保留多少个建筑,则 $f[i]=\max(f[j])+1$,$j<i且d[j]\leq d[i]$ $g[i]$表示以$i$为结尾的最小代价, 阅读全文
posted @ 2016-02-14 20:00 Claris 阅读(533) 评论(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 阅读(596) 评论(0) 推荐(0)
摘要: 把环倍长,设$w(i,j)$表示对于$i$,决策$j$的价值,如果$j$在$[i,i+n]$,那么$w(i,j)=dis(i,j)$,否则$w(i,j)=-dis(i,j)$。 则$w$满足四边形不等式,最优决策满足完全单调性,分治求解即可。 时间复杂度$O(n\log n)$。 #include< 阅读全文
posted @ 2016-01-31 22:36 Claris 阅读(935) 评论(0) 推荐(0)
摘要: 对于一个所选任务集合,如果对于任意时刻$i$,$i$前面所选任务数都不超过i的话,那么这些任务可以全选。 维护一棵线段树$T$,第$i$个位置一开始为$i$,每使用一个任务,$[t,T]$都要减$1$。 插入一个任务: 首先查询$[t,T]$的区间内第一个$0$的位置,记为$k$。 如果没有$0$, 阅读全文
posted @ 2016-01-30 01:35 Claris 阅读(830) 评论(2) 推荐(0)
摘要: 设$f[i]$表示长度为$i$的不下降子序列的个数。 考虑容斥,对于长度为$i$的子序列,如果操作不合法,那么之前一定是一个长度为$i+1$的子序列,所以答案$=\sum_{i=1}^n(f[i]\times (n-i)!-f[i+1]\times (n-i-1)!\times (i+1))$。 时 阅读全文
posted @ 2016-01-28 23:41 Claris 阅读(723) 评论(0) 推荐(0)
摘要: 对于一个合法的十进制数,它的所有后缀也是合法的。于是按位BFS,保留前导零,每次往前添加一个$0$或者$1$,直到找到第$n$个不含前导零的合法数为止即可。时间复杂度$O(nl)$。#include#define N 400struct Num{ int len,v[N]; Num(){for(... 阅读全文
posted @ 2016-01-25 01:03 Claris 阅读(842) 评论(0) 推荐(0)
摘要: 考虑给定每个数字的个数,构造出这个序列:肯定是1 2 1 2 3 2 3 2 3 4 3 4 ... 最大值,或者1 2 1 2 3 2 3 2 3 4 3 4 ... 最大值 最大值-1。本质不同的情况只有这两种,且互相不交。设最大值为$m$,那么$1$到$m$都要有$1$个,剩下的数每多一个$i... 阅读全文
posted @ 2016-01-21 23:02 Claris 阅读(1270) 评论(0) 推荐(2)
摘要: 如果两个矩形相交且不是包含关系,那么完全可以让它们不相交。将坐标离散化后,设$f[i][j][k]$表示区间$[i,j]$纵坐标不小于$k$的部分的最优解。对于$f[i][j][k]$,要么枚举分割线,分成两部分分别DP,要么放入一个尽量大的矩形,转化为子区间的问题。时间复杂度$O(n^4)$。#i... 阅读全文
posted @ 2016-01-21 00:23 Claris 阅读(619) 评论(0) 推荐(1)
摘要: 将所有点极角排序,建立线段树,线段树每个节点维护该区间内所有点组成的上下凸壳。对于一个查询,二分查找出相应区间的左右端点,在线段树上得到$O(\log n)$个节点,在相应凸壳上三分查找出与斜边叉积最大的那个点,看看是否为正即可。时间复杂度$O(n\log^2n)$。#include#include... 阅读全文
posted @ 2016-01-20 21:42 Claris 阅读(327) 评论(0) 推荐(0)
摘要: 将所有权值离散化,建立权值线段树,维护区间内数字个数以及对数的和,用于比较乘积大小。对于每个连通块维护一棵权值线段树,合并时用线段树合并。对于操作3和4,暴力删除所有不合法节点,然后一并修改后插入线段树即可。时间复杂度$O(m\log m)$。#include#include#includeusin... 阅读全文
posted @ 2016-01-20 01:05 Claris 阅读(880) 评论(0) 推荐(0)
摘要: 杨氏图表,维护若干个单调不下降队列。每次新加入一个数时,先考虑第一个队列:如果可以放在最后,则放在最后。否则找到最小的可以替换的替换掉,再将替换的数放入第二个队列,以此类推。最后$ans_i=\sum_{j=1}^i t_j$。时间复杂度$O(n^2\log n)$。#include#define ... 阅读全文
posted @ 2016-01-19 23:54 Claris 阅读(366) 评论(0) 推荐(0)
摘要: 因为$a$与$n$互质,所以对于$0$到$n-1$里每个$i$,$ai\bmod n$的值互不相同。设匹配成功的起点为$i$,那么可以得到$3m$段$ai\bmod n$的值不能取的禁区,每段都是连续区间。再枚举$n-m+1$到$n-1$的起点,这些单点也是禁区。找出所有禁区后,答案就是这些禁区的并... 阅读全文
posted @ 2016-01-14 22:36 Claris 阅读(893) 评论(5) 推荐(0)
摘要: 首先将$n$的约数从小到大排序,设$dfs(x,y,z)$表示当前可以选第$x$个到第$m$个约数,还要选$y$个,之前选的乘积为$z$是否可能。爆搜的时候,如果从$x$开始最小的$y$个相乘也超过了$n$,那么就不合法,加上这个剪枝即可。#include#include#define N 2000... 阅读全文
posted @ 2016-01-12 23:35 Claris 阅读(719) 评论(0) 推荐(0)
摘要: 对于每个询问,首先可以通过扫描线+线段树求出四个方向的第一个点,询问范围等价于框住这些点的最小矩形。对于一个点$i$,预处理出:$A[i][j]$:$i$往左下角按凸壳走到$j$时,凸壳上相邻两点的叉积和。$B[i][j]$:$i$往右下角按凸壳走到$j$时,凸壳上相邻两点的叉积和。$C[i][j]... 阅读全文
posted @ 2016-01-12 22:09 Claris 阅读(465) 评论(0) 推荐(4)
摘要: 首先对所有单词建立AC自动机,$S$是$T$的子串等价于$T$的某个前缀通过$fail$链可以走到$S$的终止节点,即$S$的终止节点是$T$某个前缀在$fail$树上的祖先。设$f[i]$表示考虑了前$i$个单词,且第$i$个单词必选时子序列价值的最大值,则$f[i]=\max(单词i每个前缀的贡... 阅读全文
posted @ 2016-01-12 18:40 Claris 阅读(634) 评论(0) 推荐(0)
上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 38 下一页