Processing math: 33%

07 2014 档案

摘要:题目没有强制在线!考虑离线做法。把操作建立成一棵树的结构,然后按照欧拉序遍历,每次转移要么是一次合并操作,要么是一次撤销合并操作,可以看成是分离操作。用LCT维护集合,合并就是加边,分离就是删边。时间复杂度O(mlogn)#include#define N 20010int n,m,i,op... 阅读全文
posted @ 2014-07-31 10:08 Claris 阅读(439) 评论(0) 推荐(0) 编辑
摘要:同[ZJOI2012]网络,把每个点拆成C个点然后用LCT维护。#include#include#define P make_pair#define N 800002using namespace std;int f[N],d[8002][102],son[N][2],a[N],n;bool rev... 阅读全文
posted @ 2014-07-28 16:28 Claris 阅读(262) 评论(0) 推荐(0) 编辑
摘要:设d[x]表示x到根的距离 size[x]表示x的子树大小(不含自己)求出dfs序后按dfs序建主席树,线段树中区间[a,b]表示深度在[a,b]范围内的size[]的和查询x,y的答案=size[x]*min(d[x],y)+dfs序在st[x]+1到en[x]之间且深度在d[x]+1到d[x]+... 阅读全文
posted @ 2014-07-28 15:34 Claris 阅读(283) 评论(0) 推荐(0) 编辑
摘要:求环套外向树上节点数不小于K的路径数。首先树的话直接点分治+树状数组O(n\log^2n)搞定环套树的话,先删掉多余的边(a,b)然后变成了一棵树,直接点分治然后在树上找到a到b的路径,将每一棵子树中的点的“所有权”(要么从a出发到达,要么从b出发到达)改变一下,然后计算贡献即可。总时间复杂度$... 阅读全文
posted @ 2014-07-23 16:50 Claris 阅读(475) 评论(0) 推荐(0) 编辑
摘要:设delta表示翻转后的增量,flip表示是否翻转,第x个位置对应原来位置为(flip?n+2-x+delta:x-delta)%n再根据x,y的大小关系以及flip的是否讨论出现在作用的区间用线段树维护最左端最右端的颜色和块数这种神级码农题我居然一遍AC…#include#define N 500... 阅读全文
posted @ 2014-07-16 16:33 Claris 阅读(210) 评论(0) 推荐(0) 编辑
摘要:若一条边的v小于等于u,则贡献为l*w/v,否则贡献为l*w/u将边按v从小到大排序,将询问按u从小到大排序用树链剖分维护链上和,val[0]表示第一种情况下的贡献,val[1]表示第二种情况下的贡献一开始val[0]都是0,val[1]=l*w,然后每到一个询问(s,t,u),就把所有v小于等于u... 阅读全文
posted @ 2014-07-11 19:39 Claris 阅读(392) 评论(0) 推荐(0) 编辑
摘要:rank[i]表示第i美味的是哪块left[i]表示在k左边美味度为i的是哪块right[i]表示在k右边美味度为i的是哪块用3棵线段树分别维护d序列的区间最大值、left序列的区间最大值、right序列的区间最小值修改:把第x块改成第y美味把第y+1到第9美味的全部后移一位然后把第x块美味度改成最... 阅读全文
posted @ 2014-07-11 15:51 Claris 阅读(430) 评论(0) 推荐(0) 编辑
摘要:求[l,r]内所有点与z的lca的深度之和= 求z所有祖先子树中在[l,r]内的点的个数之和由于数据不是随机的,所以祖先个数可能很大。按编号分成\sqrt{n}块设ans[i][j]表示第i块内所有点与j的lca的深度之和计算ans[i][]时,把在[l,r]内所有点的cnt设为1,其它的设为0... 阅读全文
posted @ 2014-07-09 20:45 Claris 阅读(438) 评论(0) 推荐(0) 编辑

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