上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 38 下一页
摘要: 首先不考虑翻转,对于两个等长的序列,如果任意两条相邻边的边长比以及夹角都相等,那么就匹配。为了避免实数运算,边长比可以上下平方,然后约分。夹角可以用叉积和点积的最简比值来表示,注意上下符号都要保留。然后将这些信息离散化,转化成数字串匹配问题,建出用Hash表存边的AC自动机后即可解决。对于翻转,可以... 阅读全文
posted @ 2015-12-04 14:03 Claris 阅读(626) 评论(0) 推荐(0)
摘要: 第一问:对B串建立SAM,暴力枚举A的每个子串,在SAM上走,若失配则可行。第二问:设g[i][j]表示B串的第i个字符之后最早出现的字符j的位置,暴力枚举A的每个子串,按照g贪心地走,若失配则可行。第三问:对B串建立SAM,设f[i][j]表示考虑了A的前i个字符,当前在SAM上的状态为j的最小长... 阅读全文
posted @ 2015-12-02 01:44 Claris 阅读(654) 评论(0) 推荐(1)
摘要: 首先用并查集将等号缩点,然后拓扑排序判断有没有环,有环则无解,否则通过增加超级源点$0$,可以得到一棵树。设$f[x][y]$表示$x$子树里有$y$种不同的数字的方案数,由底向上DP。对于当前点$x$,依次遍历它的所有儿子$y$,设以$x$为根的子树里之前已经有了$s[x]$个点,$y$子树里有$... 阅读全文
posted @ 2015-12-01 23:31 Claris 阅读(306) 评论(0) 推荐(0)
摘要: 假设当前询问点为$(A,B)$,那么它在一个以$(x,y)$为圆心的圆里需要满足:$(x-A)^2+(y-B)^2\leq x^2+y^2$$2Ax+2By\geq A^2+B^2$等价于询问所有圆心与$(2A,2B)$的点积的最小值是否小于$A^2+B^2$。考虑将修改操作二进制分组,分成$O(\... 阅读全文
posted @ 2015-11-30 20:33 Claris 阅读(603) 评论(3) 推荐(0)
摘要: 首先特判全部都是A或者全部都是B或者$n=1$的情况。然后把矩阵四周都填充上A,枚举一个块,分以下情况讨论:1.在它四周选两个块扩展,此时平方暴力枚举即可。2.在它四周选定一个方向扩展两步。3.选择一个角落,斜着扩展一步,再扩展另一步。时间复杂度$O(n^2)$。#include#define re... 阅读全文
posted @ 2015-11-30 13:36 Claris 阅读(612) 评论(0) 推荐(0)
摘要: 将石子从小到大排序,然后DP。设$f[i][j][k]$表示考虑了前$i$堆的石子,当前扔掉的堆数模$d$为$j$,没有扔掉的石子的异或和为$k$的方案数。因为石子排过序,所以转移的复杂度为$O(md)$。对于空间的问题,注意到$f[i][j][k]$和$f[i][j][k\ xor\ a[i]]$... 阅读全文
posted @ 2015-11-30 13:35 Claris 阅读(1157) 评论(0) 推荐(0)
摘要: 设$f[x][j]$表示$x$点不放无线,它的儿子里放了$j$个无线,且对$x$的父亲不作要求时的最小代价。$g[x][j]$表示$x$点不放无线,要求$x$的父亲至少放$j$个无线时的最小代价。$h[x][j]$表示$x$点放了$j$个无线时的最小代价。然后从底向上树形DP即可,时间复杂度$O(n... 阅读全文
posted @ 2015-11-30 13:33 Claris 阅读(958) 评论(3) 推荐(0)
摘要: 只考虑第一问,将珠子按照价值从小到大排序,设排序后第$i$小的为$b[i]$,定义二元组$(x,y)$表示当前珠子的总价值为$x$,用的价值最大的珠子为$y$,用一个小根堆来维护所有状态。一开始往堆中加入$(b[1],1)$状态,然后每次取出堆顶元素$(x,y)$,可以扩展出$(x+b[y+1],y... 阅读全文
posted @ 2015-11-30 13:31 Claris 阅读(724) 评论(2) 推荐(0)
摘要: 设$f[x]$为$x$子树里的子游戏的sg值,$h[x]$为$x$所有儿子节点$f[x]$的异或和,则:$f[x]=mex(y到x路径上所有点的h的异或和\ xor\ y到x路径上所有点的f的异或和)$,$y$是$x$子树中的一个白点。考虑一个白点对其祖先的影响,可以发现每往上走一步,一个子树里的贡... 阅读全文
posted @ 2015-11-30 01:33 Claris 阅读(751) 评论(0) 推荐(1)
摘要: 可以发现,每个特殊点可以贡献的部分在树上是一条链。设三元组(v,x,y)表示路径长度,需要更新的端点,与当前点的lca为y。对于每个节点x,通过两遍树形DP可以求出:d[x]:x到x子树内的某个特殊点的最优解。u[x]:x到x子树外的某个特殊点的最优解。pre[x]:x以及x之前的兄弟的d[]的最优... 阅读全文
posted @ 2015-11-25 17:53 Claris 阅读(513) 评论(1) 推荐(0)
摘要: 单路径最大和问题,设f[i][j][S]表示到达(i,j),轮廓线状态为S的最优解。S用4进制m+1位数表示,0表示无插头,1表示左括号,2表示右括号,3表示独立插头。在DP之前先进行一次预处理,剔除无效状态,并预处理出与每个括号匹配的另一个括号的位置,有效状态只有8000个左右。然后分类讨论进行转... 阅读全文
posted @ 2015-11-24 16:27 Claris 阅读(355) 评论(0) 推荐(0)
摘要: 求出最大生成树,则两点间的最大容量为树上两点间的边权的最小值。设$lim[i]$表示第$i$个订单的城市允许携带的黄金上限,则$lim[i]=\min(lim[i+1],a[i]和a[i+1]点间最大容量)+\max(0,-b[a[i]])$然后依次模拟即可,时间复杂度$O(m\log n)$。#i... 阅读全文
posted @ 2015-11-23 17:45 Claris 阅读(447) 评论(2) 推荐(0)
摘要: 建立AC自动机,并求出转移矩阵。再用$\sum E(终止节点)=1$去替换第一个方程,高斯消元即可。时间复杂度$O(n^3l^3)$。注意精度问题,要特判0.00的情况。#include#include#include#define N 110using namespace std;int n,l,... 阅读全文
posted @ 2015-11-23 00:54 Claris 阅读(577) 评论(0) 推荐(0)
摘要: 树的点分治,在分治的时候将所有点到根的距离依次放入一个数组q中。对于一棵子树里的点,合法的路径一定是q[L]..q[R]的某个数加上自己到重心的距离。定义五元组(v,l,m,r,w),表示当前路径长度为v,在[l,r]里选出最大值m,并加上w。用大根堆维护这些五元组,每次取出v最大的元素,并扩展出[... 阅读全文
posted @ 2015-11-22 23:38 Claris 阅读(1123) 评论(0) 推荐(0)
摘要: 考虑分块,每块维护两个标记$ts,td$。那么对于块中一个位置$i$,它的实际值为$i\times td+ts+v_i$。修改的时候,对于整块,直接打标记,对于零散的暴力修改,然后重构凸壳,时间复杂度$O(\sqrt{n})$。查询的时候在凸壳上二分即可,时间复杂度$O(\sqrt{n}\log n... 阅读全文
posted @ 2015-11-21 17:14 Claris 阅读(451) 评论(0) 推荐(0)
摘要: 对于一棵无根树,它的重心个数不超过2。 枚举每个重心,以重心为根求出这棵有根树的最小表示,然后取字典序最大的即可。 对于有根树的最小表示,可以看成括号序列,每次把子树的括号序列按字典序排序后依次串连起来即可。 #include<cstdio> #include<string> #include<al 阅读全文
posted @ 2015-11-21 02:23 Claris 阅读(1263) 评论(0) 推荐(0)
摘要: 对所有询问串建立AC自动机。然后将母串在AC自动机上跑,每走到一个点x,从x点出发沿着fail指针能到的所有前缀都是匹配成功的,暴力向上走,碰到走过的就break,这样每个点最多只会被标记一次。时间复杂度$O(N+100M)$。#include#includeconst int N=10000003... 阅读全文
posted @ 2015-11-21 01:35 Claris 阅读(691) 评论(0) 推荐(0)
摘要: 将每个点看成二维坐标点$(i,a_i)$,那么每次操作的范围都是一个矩形。于是建立KD-Tree,通过打标记支持操作即可。时间复杂度$O(m\sqrt{n})$。#include#includeconst int N=50010,P=536870912;int n,m,i,root,cmp_d,an... 阅读全文
posted @ 2015-11-20 14:51 Claris 阅读(506) 评论(0) 推荐(0)
摘要: 首先通过差分约束系统建图,用Floyed算法求出任意两个砝码差值的上下界。然后暴力枚举放在右边的砝码C,D,通过与A,B差值的上下界分类讨论统计方案。时间复杂度$O(N^3)$。#include#define rep(i) for(i=0;ib)a=b;}inline void umax(int&a... 阅读全文
posted @ 2015-11-17 16:38 Claris 阅读(648) 评论(0) 推荐(0)
摘要: 设出$x,y,z$三个未知量分别表示三种单位的战斗力。那么各种不等式都可以表示成$ax+by+cz\geq 0$的形式。注意到$z>0$,那么两边都除以$z$得到$ax+by+c\geq 0$。然后半平面交求出所有顶点后,对于每次询问将所有顶点带入求值即可。#include#include#incl... 阅读全文
posted @ 2015-11-10 00:50 Claris 阅读(408) 评论(0) 推荐(0)
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 38 下一页