- 博客(19)
- 收藏
- 关注
原创 法法塔的奖励
题目大意给定一颗树,求任意结点子树内任意叶子节点到其路径包括该节点的最长不下降子序列的长度的最大值。水你可以搞dfs序 你可以搞Treap的启发式合并 你可以搞线段树合并#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=10000
2016-02-27 16:34:36 710
原创 ZOO
题目大意M个询问询问区间K小值。整体二分我们用K大数查询这道题的思路整体二分。 这道题直接套用K大数查询需要带两个log。 我们把询问l~r拆为两个询问1~r和1~l-1,那么每个询问都变成一个前缀,于是我们想着搞一波线性作法。 观察到对于答案区间为l~r,我们只需要扫描在这个区间内的数。 也就是说对于l~r中的数,<=mid的数继续归到左区间其余归到右区间。 一个区间内的询问按照右端点排
2016-02-25 18:32:09 1228
原创 GDKOI2016总结
DAY1过程: 我先看了一遍题。t1涉及区间问题,然后80%是四个0的令我想到这道题可能有什么分块做法,有分块做法那么会比较容易继续想到线段树于是坚信可以切。t2看了一遍题居然是期望题,模拟了一遍样例然后觉得不可做。t3要求最优化的目标一眼看出可以01分数规划,可是规划后就不知道怎么做了。t4一眼插头DP然而没打过于是确定了这题只能打暴力。 然后列了个表,第一题首先可以拿下30分,然后50分是什
2016-02-24 20:22:56 853
原创 [bzoj3110]K大数查询
题目大意现在有N个盒子,初始为空。有M个操作,每个操作要么为编号范围在l~r的盒子都放入一个球上面的数为a,要么是询问编号范围在l~r的盒子所有球上的数的第k大值。 n,m<=50000离线大法好是不是很容易想到树套树? 我们这题是可以用整体二分或cdq分治的(我并不能分清它们) 具体做法如下: 用solve(l,r,S)表示现在处理S集合,S集合是操作集合按照时间排序,所有插入操作满足插入
2016-02-24 18:53:58 957
原创 最大权闭合图
现在有一个有向图,每个点有点权,点权可正可负。对于任意一条有向边i和j,选择了点i就必须选择点j,你需要选择一些点使得得到权值最大。 这个问题可以用网络流解决。 建图方法:对于任意点i,如果i权值为正,s向i连容量为其权值的边,否则i向t连容量为其权值的绝对值德尔边。原图所有边容量为正无穷。则最大权=正权和-最大流。 如何证明呢?我们把最大流理解成最小割,那么割掉的边一定不可能是正无穷的边。
2016-02-23 21:58:48 624
原创 压力
题目大意有一张联通无向图,还有许多点对,你需要输出每个点是多少点对的必经点(即如果点对为u,v,那么如果u到v无论如何都要经过x,那么x是该点对的必经点)建一颗富榄树富爷:这个叫割点树,是我命名的 那么我们暂且称他为富榄树 富榄树是什么?我们清楚,如果是一张有向图,如果一提到必经点,我们脑海中可以跳出来一个东西——抖M树(dominator tree),它对每个节点保留了一个最近支配点,然后让每
2016-02-19 09:25:50 455
原创 [bzoj3876]支线剧情
题目大意给定一张DAG,1是唯一一个入度为0的点。每条边都有经过费用,你每次可以从1走到任意节点,每条边需要经过至少一次求最小费用。最小费用可行流建立s和t,然后s向1连下限0上限inf费用0的边,除1外所有节点向t连下限0上限inf费用0的边,对于每条边下限为1上限为inf费用为经过费用,然后我们只有做上下界网络流构出新图,跑最小费用可行流即可。参考程序#include<cstdio>#incl
2016-02-19 08:56:31 967
原创 [bzoj3455]供电网络
题目描述阿狸和桃子居住的世界里, 只有一个国家, 这个国家有很多城市, 每个城市直接由中央政府管辖. 电力是这个国家的唯一能源, 但是每个城市的发电能力都不一样, 于是就产生了某些城市电力不足, 而某些城市却电力过剩的情况. 阿狸作为国家的首席工程师, 阿狸的一项重要工作就是均衡整个国家的电力, 使得每个城市的电力都恰好没有剩余或不足. 好在一些城市之间有电线可以输送电力, 这些电线都有自己的
2016-02-18 21:50:07 849
原创 上下界网络流学习小记
可行流首先添加超级源ss和超级汇tt 对于u到v一条下限为l上限为r的边,拆成三条边:ss到v连容量为l,u到tt连容量为l,u到v连容量为r-l。 如果原图是有源汇的,则t到s需要连一条下限为0上限为正无穷的边。 做ss到tt的最大流,如果ss的出边都满流,则原图存在可行流。 那如何做s到t最大流和最小流呢?有一种好理解的是,如果做最大流,那么你二分答案x,然后让t到s的边上限为x,然后判
2016-02-18 21:29:48 1908
原创 Burnside引理
引理内容对于等价类计数问题,即存在若干种置换方案,每一种置换方案使得某些状态等价,现在问你总共有多少不同的状态。 Burnside引理:对于每种置换方案(不动也算一种置换方案)不动点的平均数为不同状态数(一个状态经过该置换方案后如果与自身相同则该状态在该置换方案下为不动点)。 至于证明,嘿嘿嘿我不会一个例子详见SDOI2013项链,现在我们需要求珠子的种类数。 假若我们求出三元组数量为ans3
2016-02-18 21:19:25 779
原创 贸易
题目大意一共有m个结点,每个结点有一个权值a[i]。初始n个结点练成一颗树,有若干操作每次操作要么把一个结点加入树中要么询问u到v的路径上,a[x]-a[y]的最大值(u到v存在方向,先经过y再经过x)。 m<=10^5倍增倍增维护最小值、最大值、正着走的答案和反着走的答案,为了实现方便可以定义个类型存储然后打一个merge函数。merge中通过两条路径的信息得到合并后路径的信息,最小值和最大值容
2016-02-16 20:37:12 479
原创 [bzoj3757]苹果树
题目大意有一颗N个节点的树和M个询问,每个点有一种颜色。每次询问u到v路径上把颜色s和颜色t当作同一种颜色后路径上不同颜色的数目。 n<=5*10^4,m<=10^5树上莫队注意到这题符合莫队算法特征。 于是直接树上莫队即可,用num[x]表示颜色x出现的次数,那么对于把颜色s和t当作同一种颜色只需要看num[s]和num[t]是否都大于0,注意考虑s=t的情况。#include<cstdio>
2016-02-16 20:17:02 1028
原创 小纪的作业题
题目描述莫队算法他符合莫队算法的特征! 于是用g[x]表示x这类数对答案的贡献,然后用num[x]记录x出现的次数即可。预处理一下每个数的逆元。注意num[x]<=0时g[x]应当为0。参考程序#include<cstdio>#include<cmath>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespac
2016-02-16 19:57:01 630
原创 莫队算法学习小记
前言我还是太弱了samjia都打出树上莫队了我还没打过序列上的莫队算法。一定是我对GDKOI2014的题目没有钻研导致我很长一段时间都没有接触莫队算法。 莫队算法可以使用,通常符合以下特点:1、允许离线。2、进行区间询问,并且我们已知区间l~r的答案,可以得到l-1~r或l+1~r或l~r-1或l~r+1这四个区间的答案。3、没有修改操作。序列上的莫队算法莫队算法改变了询问的顺序。 我们对原序列
2016-02-16 19:53:47 710
原创 [bzoj3173][TJOI2013]最长上升子序列
题目大意共n次操作,第i次操作在第xi个数后插入数字i并询问当前最长上升子序列。 n<=100000。离线大法好我们可以先处理出最终序列,然后做一次最长上升子序列。假设数字i最终位置为a[i],那么对于第i次询问答案就是f[a[i]]。Treap如果强制在线该怎么办? 那就是一道Treap裸题了。#include<cstdio>#include<algorithm>#include<cstd
2016-02-14 11:30:16 838
原创 [WC2016]鏖战表达式
前言出题人傻逼题目大意是一道交互题。 初始给你一个表达式,运算符编号越大优先级越高。你可以调用F(a,b,x)表示把元素a与b做x运算符运算得到的值。 现有三种操作,修改一个元素的值、修改一个运算符、翻转一个区间,每个操作后需要返回表达式的值。 不能调用F超过10^7次。 要求在线并可持久化。Treap大法好一个显然的想法,每次找到优先级最小的运算符,然后分成两部分递归求解。我们需要维护一颗
2016-02-04 16:40:28 1697
原创 [WC2016]挑战NPC
前言这是WC2016的第一题,在场上迅速能发现60分可做。要分成四个部分。最后由于没发现最多只能放三个球就0分了。还有这题不是NPC问题出题人傻逼题目大意给定你e个关系第i个关系表明编号为ai的球可以放到编号为bi的筐子里。每个筐子最多放三个球。请你安排方案,让每个球放进一个筐子里,且所装球数不超过1的箱子数最多。 球的个数n<=3*m,筐子的个数m<=100。巧妙建模我们将一个筐子拆为三个点,并
2016-02-02 21:12:13 1397
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人