上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 38 下一页
摘要: 首先1与i交换,n与i交换,i与i+1交换的可以$O(n)$算出。然后只需要考虑i与x交换(11)。设a[i]=h[i-1]b[i]=h[i+1]f[i]=|h[i-1]-h[i]|+|h[i+1]-h[i]|c[i]=min(a[i],b[i])d[i]=max(a[i],b[i])则交换i与x对... 阅读全文
posted @ 2015-06-30 18:33 Claris 阅读(755) 评论(0) 推荐(0) 编辑
摘要: 将多边形转化为如下的环:1到2的边,角2,2到3的边,角3,...,n-1到n的边,角n,n到1的边,角1然后枚举对称轴,如果i是对称轴,那么[i-n,i+n]是一个回文串用Manacher算法实现即可。时间复杂度$O(n)$。#include#define N 100010typedef long... 阅读全文
posted @ 2015-06-30 12:16 Claris 阅读(500) 评论(0) 推荐(0) 编辑
摘要: 第一问最小割,第二问:设du[i]表示i点的度数,则要最小化$\frac{|1集合的du[i]之和-2集合的du[i]之和|}{2}$,压位01背包即可。#include#includeusing namespace std;const int N=40010,inf=~0U>>2;struct e... 阅读全文
posted @ 2015-06-29 21:21 Claris 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 打表可得结论:1.只有2,3,6,7,8,11,12,15,18,19,...,108,112,128这31个数的k值是无穷大2.当n足够大的时候,即当n>506时,设$f(x)=1^2+2^2+...+x^2=\frac{x(x+1)(2x+1)}{6}$,找到一个t使得$f(t-1)+1\leq... 阅读全文
posted @ 2015-06-29 19:38 Claris 阅读(794) 评论(0) 推荐(3) 编辑
摘要: 状压DP新姿势get√需要注意的是,这题Main上原题的内存限制只有64MB。首先以2到k+1为起点进行k次dijkstra求出:1.dis[i][j]:i到j的最短路2.d1[i]:i到1的最短路3.dn[i]:i到n的最短路用二进制状态a[i]表示走到i之前必须经过的点的集合。设f[z][S][... 阅读全文
posted @ 2015-06-29 16:01 Claris 阅读(528) 评论(0) 推荐(0) 编辑
摘要: $f[i]=\max(a[j]+\lceil\sqrt{|i-j|}\rceil)$,拆开绝对值,考虑ji同理,所以可以用分治$O(n\log n)$解决。#include#include#define N 500010int n,i,l,r,mid,a[N],b[N],f[N],g[N];inli... 阅读全文
posted @ 2015-06-26 18:24 Claris 阅读(582) 评论(0) 推荐(0) 编辑
摘要: 黑掉的一定是一个长度为$\lfloor\frac{n+1}{2}\rfloor$的区间。于是枚举初始点,然后查询包含它的区间的最小值。通过维护前后缀最小值+单调队列$O(n)$解决。#include#define N 500010int n,k,i,a[N='0')&&(c='0')&&(c=s[i... 阅读全文
posted @ 2015-06-25 10:19 Claris 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 活跃区的操作序列的优先级单调不上升,所以每次undo的一定是一段区间。以优先级为权值建立可持久化权值线段树,维护优先级在某区间内的最靠后的位置。#includeconst int N=300010,M=6000000;int n,i,j,x,f[N],root[N],v[M],l[M],r[M],t... 阅读全文
posted @ 2015-06-25 10:17 Claris 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 首先通过hash建树设f[i][j]表示第i个特殊符号从P的第j位开始匹配能到达哪里记忆化搜索,对于底层贪心匹配。#include#includeusing std::strlen;const int N=510,M=2010;char a[10],tmp[10],b[N][10],s[M];int... 阅读全文
posted @ 2015-06-25 10:16 Claris 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 考虑将某线段下方的点取走:将所有点从低到高排序每扫描到一条水平线,对于上面每个点,找到它下面同色的前驱后继,统计中间点的个数然后再把线上所有点插入数据结构中最后再统计相邻的同色的点之间的点个数用动态开点的权值线段树+树状数组维护,时间复杂度$O(n\log n)$。考虑将某线段上方的点取走:把扫描线... 阅读全文
posted @ 2015-06-24 13:49 Claris 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 由于k很小,所以随机一组解的正确率有90%以上。每次随机选取一个没被删除的点,然后将与其相邻的点都删去即可。#include#includeconst int N=1000010,BUF=54000100;int T,n,i,k,m,x,y,ans,q[N],t,loc[N],del[N],have... 阅读全文
posted @ 2015-06-23 22:20 Claris 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 用线段树套链表维护所有边,用set维护未访问过的点然后BFS,每次在线段树上找边,然后在set中查询点一条边使用之后就没有用了,所以在链表中将它删去时间复杂度$O((n+m)\log n+m\log^2n)$。#include#include#include#define N 500010using... 阅读全文
posted @ 2015-06-23 14:19 Claris 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 求出dfs序和每个点的深度将第i个点看成二维点(st[i],d[i])则修改操作等价于将横坐标在[st[x],en[x]]内,纵坐标在[d[x],d[x]+y]范围内的点的颜色都修改为c用支持标记下放的k-d树维护即可,时间复杂度$O(n\log n+q\sqrt{n})$。#include#inc... 阅读全文
posted @ 2015-06-22 23:38 Claris 阅读(930) 评论(0) 推荐(0) 编辑
摘要: 用Manacher可以推出O(n)对相等和不等关系。将相等的用并查集维护,不等的连边。然后从1到n,如果该等价类还没被考虑过,则ans*=26-与它不等的考虑过的等价类个数。#include#include#define N 1000010int n,m,i,r,p,f[N>=1)==F(y>>=1... 阅读全文
posted @ 2015-06-22 18:45 Claris 阅读(638) 评论(0) 推荐(0) 编辑
摘要: 首先将坐标离散化,考虑从左往右扫描线碰到插入操作则插入碰到删除操作的:当前包含i的矩形数=y1在[1,y2[i]]之间的矩形数-y2在[1,y1[i]-1]之间的矩形数用两棵树状数组维护即可,时间复杂度$O(n\log n)$。#include#include#define N 500010int ... 阅读全文
posted @ 2015-06-22 12:32 Claris 阅读(327) 评论(0) 推荐(0) 编辑
摘要: S向每头奶牛连边,容量1每个防晒霜向T连边,容量cover每头奶牛向SPF在自己范围内的防晒霜连边,容量inf用线段树优化建图跑最大流即可。#includeconst int N=7010,inf=~0U>>2;struct edge{int t,f;edge*nxt,*pair;}*g[N],*d... 阅读全文
posted @ 2015-06-21 20:33 Claris 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 观察单词表可以发现:对于长度为3的单词,前两个字母相同的单词不超过7个对于长度为4的单词,前两个字母相同的单词不超过35个于是首先$O(26*26*nm)$预处理出s1[x][i][j]表示(i,j)右上角里面字母x的出现次数s2[x][y][i][j]表示(i,j)右上角里面单词xy的出现次数枚举... 阅读全文
posted @ 2015-06-20 09:19 Claris 阅读(613) 评论(0) 推荐(0) 编辑
摘要: 直接BFS貌似复杂度飞起来了,于是我们用k-d tree优化找点的过程即可。时间复杂度$O(n\sqrt{n})$。#include#includeconst int N=10010,H=1000,R=1000000;int n,m,i,root,cmp_d,h=1,t,q[N],f[N],mx,m... 阅读全文
posted @ 2015-06-19 14:08 Claris 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 从以每一位为中心的回文串长度可以用Manacher倒推出$O(n)$对相等和不等关系。将相等的用并查集维护,不等的连边。然后输出方案时若还没被染过色,则求一个mex。#include#define N 200010int n,m,i,x,r,p,f[N],g[N],fa[N],a[N],v[30];... 阅读全文
posted @ 2015-06-19 13:03 Claris 阅读(575) 评论(0) 推荐(1) 编辑
摘要: [AMPPZ2014]The Lawyer 记录每天结束的最早的会议以及开始的最晚的会议即可。 [AMPPZ2014]Petrol 一遍spfa求出d[x]表示离x最近的加油站到x的距离。 对于每条边(x,y,w),将边权重置为d[x]+d[y]+w。 然后将边和询问按照权值从小到大排序,每次将所有 阅读全文
posted @ 2015-06-17 11:55 Claris 阅读(2224) 评论(0) 推荐(0) 编辑
上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 38 下一页