上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 38 下一页
摘要: 论文题。随便取个关键点,求出最短路树。求出所有关键点组成的虚树,将两端都在虚树上的边保留。对剩下的边求出最小生成树即可得到一组可行解。#include#includeconst int N=5010,M=500010,inf=~0U>>1;int n,m,p,i,x,f[N],id[N],ans,c... 阅读全文
posted @ 2015-07-01 22:05 Claris 阅读(435) 评论(2) 推荐(0) 编辑
摘要: 砝码从小到大放最优,二分答案mid,转化为判定前mid小的砝码能否放完。从大到小考虑砝码,依次扫描每个容器,能放就放。由于砝码重量都成倍数关系,所以最多只有$O(\log n)$种不同的数字,所以总复杂度为$O(n\log^2n)$。#include#include#define N 100010i... 阅读全文
posted @ 2015-07-01 21:32 Claris 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 考虑把所有石头翻到直线y=x同侧,此时可以保证篱笆长度最短。这种最短的篱笆一共有4种可能,枚举每种可能然后$O(n)$检验求出答案即可。#includeconst int N=1000000,inf=~0U>>1;int n,i,x[N],y[N],w[N],lx=inf,rx,ly=inf,ry,... 阅读全文
posted @ 2015-06-30 21:35 Claris 阅读(581) 评论(0) 推荐(0) 编辑
摘要: 从小到大枚举高度i:对于所有高度为i的点x,将它与它四周相邻的高度不超过i的点所在的集合合并对于所有高度为i的城市x,如果它所在集合没有放置水泵,则需要放置并查集维护,时间复杂度$O(nm)$。#include#define N 1010int n,m,i,j,k,x,y,a[N][N],id[N]... 阅读全文
posted @ 2015-06-30 20:07 Claris 阅读(607) 评论(2) 推荐(0) 编辑
摘要: 首先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 阅读(761) 评论(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 阅读(503) 评论(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 阅读(553) 评论(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 阅读(797) 评论(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 阅读(542) 评论(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 阅读(588) 评论(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 阅读(347) 评论(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 阅读(260) 评论(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 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 考虑将某线段下方的点取走:将所有点从低到高排序每扫描到一条水平线,对于上面每个点,找到它下面同色的前驱后继,统计中间点的个数然后再把线上所有点插入数据结构中最后再统计相邻的同色的点之间的点个数用动态开点的权值线段树+树状数组维护,时间复杂度$O(n\log n)$。考虑将某线段上方的点取走:把扫描线... 阅读全文
posted @ 2015-06-24 13:49 Claris 阅读(395) 评论(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 阅读(293) 评论(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 阅读(509) 评论(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 阅读(934) 评论(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 阅读(647) 评论(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 阅读(332) 评论(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 阅读(285) 评论(0) 推荐(0) 编辑
上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 38 下一页