- 博客(107)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【树链剖分】学习笔记
本文主要是对树链剖分算法的理解(很棒的一篇文章哦)包含例题:【HDU 3966】【SOPJ 375】Query on a tree 【BZOJ 1036】【ZJOI 2008】树的统计
2017-03-26 22:58:46
326
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 线段树操作中的一些预判方法【UOJ 228】【codeforces 438D】
作为一个傻逼题,我……我竟然提交了n次!!!题意给出一个长度为 nn 的数列 AA,接下来有 mm 次操作,操作有三种:区间加,区间开方,区间求和。题解感觉很水。 网上大神们的博客里说,对于一次区间开根: 设最大值为maxn,最小值为minn,如果maxn-minn=sqrt(maxn)-sqrt(minn),就可以看成区间减法。(因为减小的值是一样的) 但是,我以为是在一开始判断一次
2017-03-24 20:33:37
516
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【点分治】的学习笔记和众多例题
包含点分治多道例题:【POJ 1741 & BZOJ 1468 & BZOJ 3365】【BZOJ 2152】【BZOJ 2599】【BZOJ 1316】很详细的一篇文章,20分钟教会你点分治。
2017-03-23 16:45:45
4511
3
原创 【BZOJ 1180】OTOCI【LCT】&【树链剖分+并查集】
Description给出n个结点以及每个点初始时对应的权值wi。起始时点与点之间没有连边。有3类操作: 1、bridge A B:询问结点A与结点B是否连通。如果是则输出“no”。否则输出“yes”,并且在结点A和结点B之间连一条无向边。 2、penguins A X:将结点A对应的权值wA修改为X。 3、excursion A B:如果结点A和结点B不连通,则输出“impossibl
2017-05-07 16:22:14
442
原创 【BZOJ 3306】树【LCA、DFS序、线段树】
Description给定一棵大小为 n 的有根点权树,支持以下操作: 1、 换根 2、 修改点权 3、 查询子树最小值 Input 第一行两个整数 n, Q ,分别表示树的大小和操作数。 接下来n行,每行两个整数f,v,第i+1行的两个数表示点i的父亲和点i的权。保证f < i。如 果f = 0,那么i为根。输入数据保证只有i = 1时,f = 0。 接下来
2017-04-13 20:51:16
486
原创 【BZOJ 1513】Tet-Tetris 3D【二维线段树】
Description在新游戏中你将知道落下的立方体信息以及位置,你的任务就是回答所有立方体落下后最高的方块的高度.所有的立方体在下落过程中都是垂直的并且不会旋转.平板左下角坐标为原点,并且平行于坐标轴.Solution二维线段树板子题 同时两层树之间的信息不能相互传递。Code#include<cstdio>#include<cstring>#include<algorithm>#defin
2017-04-13 17:25:31
397
原创 【BZOJ 4003】【JLOI 2015】城池攻占【可并堆】
Description小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池。 这 n 个城池用 1 到 n 的整数表示。除 1 号城池外,城池 i 会受到另一座城池 fi 的管辖,其中 fi< i。也就是说,所有城池构成了一棵有根树。这 m 个骑士用 1 到 m 的整数表示,其中第 i 个骑士的初始战斗力为 si,第一个攻击的城池为 ci。每个城池有一个防御值 hi,如果一个骑士
2017-04-12 16:01:43
346
原创 【BZOJ 4810】【YNOI 2017】由乃的玉米田【莫队+bitset】
Description给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1,2,3选出的这两个数可以是同一个位置的数Solution 一开始直接想到的是莫队,但莫队归莫队,怎么处理这三个操作呢?看看了大神题解,又听了一番同市神犇的指点,终于学会
2017-04-12 00:40:29
462
原创 【莫队算法】的小例题
【BZOJ 2038】【2009 国家集训队】具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬。 你的任务便是告诉小Z,他有多大的概率抽到两只颜色相同的袜子。当然,小Z希望这个概率尽量高,所以他可能会询问多个(L,R)以方便自己选择。 【题解】 对于L,R
2017-04-09 11:41:16
737
原创 【meet in the middle】的几个例题【BZOJ 4800】&【SPOJ ABCDEF】
题目传送门Solution可以将原式子转化成ab+c=d(e+f)ab+c=d(e+f),用O(n3)O(n^3)来枚举,统计时自己手写一个二分查找(同map果断TLE) 还有,在枚举d时要保证d不为0,否则会WA,不知道为什么。Code#include<cstdio>#include<cstring>#include<algorithm>#define N 110#define rep(i
2017-04-09 10:01:14
845
原创 【51nod 1684】子集价值【DP】【拆括号的技巧】
Description给出⼀种新的按位运算 ‘#’ 的真值表 定义⼀个序列的价值为序列中所有数从左向右进行’#’ 运算得到的值给定⼤小为 n 的序列列 a[],求它的 2^n-1 个⾮空子序列的价值平⽅和 n <= 50000, a[i] < 2^30Soultion 我们考虑一个这样的S2=(ac1S^2=(a_{c1} # ac2a_{c2} #……)2……)^2 将SS表示成二进制
2017-04-07 18:11:30
679
原创 【codeforces 559C】【51nod 1486】大大走格子【容斥】
Description一个棋盘,h*w,n个不能走的格子,从左上走到右下,求方案数。 (h,w < 100000,n < 2000)Solution 先将坏格排个序,然后考虑第i个坏格,用f[i]f[i]表示在不经过其他坏格的情况下,走到第i个坏格的方案数。 假如不存在坏格,从(1,1)(1,1)走到(n,m)(n,m)的共有C(n+m−2,n−1)C(n+m-2,n-1)种方法。
2017-04-06 16:45:07
355
原创 【BZOJ 4455】【ZJOI 2016】小星星【容斥+树型DP】
Description将一棵大小为n的树嵌入一个大小为n的图中,求方案数。(n<=18)Solution【官方题解】 :JudgeOnline/upload/201603/4455.txt【我的理解】: 我们先考虑将树中的点用图中的点来代替,因为共有18个点,每次枚举每个图中的点能不能用,即从图中取出一个点集SS,共有O(2n)O(2^n)种取法。然后我们求出在这个点集映射的树有多少的是合法的
2017-04-06 14:25:05
383
原创 【BZOJ 4710】【JSOI 2011】分特产【计数&容斥】
【前言】 时间所剩不多了,我来大力学点计数的姿势。。。 【题意】 m种特产,每种a[i]个,分给n个同学,要求:1、恰好分完。2、每个同学至少一个。求方案数。(n,m,a[i]<1000) 【题解】 先考虑就是将这么多特产分给n个人,分开来每一种特产,有a[i]个,分给n个人,用隔板法,答案是 C(a[i],n+a[i]-1)。所有的特产合起来就是这些值得乘积。 但是这样
2017-04-05 23:07:55
305
原创 【BZOJ 1049】【HAOI 2006】数字序列【DP】
【前言】这题我看题解都看了几天。。。Description 现在我们有一个长度为n的整数序列A。但是它太不好看了,于是我们希望把它变成一个单调严格上升的序列。但是不希望改变过多的数,也不希望改变的幅度太大。Input 第一行包含一个数n,接下来n个整数按顺序描述每一项的键值。n<=35000,保证所有数列是随机的。Output 第一行一个整数表示最少需要改变多少个数。 第二行一个整数,表示在改
2017-04-05 15:32:45
303
原创 【BZOJ 1130】【POI 2007】大都市meg【树链剖分】
Description 昔日,乡下有依次编号为1..n的n个小村庄,某些村庄之间有一些双向的土路。从每个村庄都恰好有一条路径到达村庄1(即比特堡)。并且,对于每个村庄,它到比特堡的路径恰好只经过编号比它的编号小的村庄。另外,对于所有道路而言,它们都不在除村庄以外的其他地点相遇。现在,越来越多的土路被改造成了公路。 Blue Mary想起了在改造期间她送信的经历。她从比特堡出发,需要去某个村庄,并且
2017-04-04 21:44:13
281
原创 【BZOJ 4491】我也不知道题目名字是什么【差分+线段树维护】
【前言】又来切水题了) -__-。。。Description给定一个序列A[i],每次询问l,r,求[l,r]内最长子串,使得该子串为不上升子串或不下降子串(n < 50000)Input第一行n,表示A数组有多少元素 接下来一行为n个整数A[i] 接下来一个整数Q,表示询问数量 接下来Q行,每行2个整数l,rOutput对于每个询问,求[l,r]内最长子串,使得该子串为不上升子串或不下降子串
2017-04-03 20:21:48
671
原创 【BZOJ 3363】[Usaco2004 Feb]Cow Marathon 奶牛马拉松【树的直径】
【前言】储存一个小知识点 【题意】 告诉你农场的地图(该地图的描述与上题一致),请帮助约翰寻找两个最远农场间的距离. 【题解】 只需求树的直径即可。 从任意一点bfs,找到一个最远点,再从这个点bfs,找到的最远点就是直径。 通过分类讨论和反证法可以证明。
2017-04-03 12:27:39
703
原创 【BZOJ 1208】【HNOI 2004】宠物收养所【treap】|【STL】
好久没写treap,手都生了。Description最近,阿Q开了一间宠物收养所。收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领养的宠物的特点值a(a是一个正整数,a<2^31),而他也给每个处在收养所的宠物一个特点值。这样他就能够很方便的处理整个领养宠物的过程了,宠物收养
2017-04-03 10:19:05
311
原创 【BZOJ 3555】【CTSC 2014】企鹅QQ【hash】
Description小Q定义,若两个账户名称是相似的,当且仅当这两个字符串等长且恰好只有一位不同。例如“Penguin1”和“Penguin2”是相似的,但“Penguin1”和“2Penguin”不是相似的。而小Q想知道,在给定的 个账户名称中,有多少对是相似的。 为了简化你的工作,小Q给你的 个字符串长度均等于 ,且只包含大小写字母、数字、下划线以及‘@’共64种字符,而且不存在两个相同的账
2017-04-02 23:08:15
347
原创 【BZOJ 3626】【LNOI 2014】LCA【树链剖分】
Description给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。 设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。 有q次询问,每次询问给出l r z,求sigma_{l<=i<=r}dep[LCA(i,z)]。 (即,求在[l,r]区间内的每个节点i与z的最近公共祖先的深度之和)Input第一行2个整数n q。
2017-04-02 10:39:35
299
原创 【BZOJ 4034】【HAOI 2015】树上操作【树链剖分】
Description有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。Input第一行包含两个整数 N, M 。表示点数和操作数。接下来一行 N 个整数,表示树中节点的初始权值。接
2017-03-31 23:28:15
224
原创 【BZOJ 3631】【JLOI 2014】松鼠的新家【树链剖分】
Description松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的。天哪,他居然真的住在“树”上。松鼠想邀请小熊维尼前来参观,并且还指定一份参观指南,他希望维尼能够按照他的指南顺序,先去a1,再去a2,……,最后到an,去参观新家。 可是这样会导致维尼重复走很多房间,懒惰的维尼不听地推辞。可是松鼠告诉他,每
2017-03-31 21:53:03
387
原创 【BZOJ 1969】【AHOI 2005】LANE 航线规划【离线、hash、并查集、树链剖分、线段树】
Description星际空间站的Samuel II巨型计算机经过长期探测,已经锁定了Samuel星系中许多星球的空间坐标,并对这些星球从1开始编号1、2、3……。 一些先遣飞船已经出发,在星球之间开辟探险航线。 探险航线是双向的,例如从1号星球到3号星球开辟探险航线,那么从3号星球到1号星球也可以使用这条航线。 例如下图所示: 在5个星球之间,有5条探险航线。 A、B两星球之间,如果某条航线不存
2017-03-31 19:26:10
363
原创 【BZOJ 1607】【Usaco2008 Dec】Patting Heads 轻拍牛头【筛一筛】
Description今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜让N(1≤N≤100000)头奶牛坐成一个圈.除了1号与N号奶牛外,i号奶牛与i-l号和i+l号奶牛相邻.N号奶牛与1号奶牛相邻.农夫约翰用很多纸条装满了一个桶,每一张包含了一个独一无二的1到1,000,000的数字. 接着每一头奶牛i从柄中取出一张纸条Ai.每头奶牛轮流走上一圈,同时拍打所有编号能整除在纸条
2017-03-30 21:23:25
317
原创 【BZOJ 2783】【JLOI 2012】树【STL-set】
题意第一行是两个整数N和S,其中N是树的节点数。 第二行是N个正整数,第i个整数表示节点i的正整数。 接下来的N-1行每行是2个整数x和y,表示y是x的儿子。输出格式:输出路径节点总和为S的路径数量。题解 因为求的路径都是从在包含根的一条链上,而且是从上往下。所以可以考虑直接dfs。记录元素前缀和。 比如搜到x,在set里面查询有没有s[x]-k,有的话ans++,然后继续往下dfs时插
2017-03-29 21:26:12
275
原创 【BZOJ 2724】蒲公英 &【BZOJ 2821】作诗【分块】
今天全是奇妙的分块大法。【BZOJ 2714】蒲公英给一个序列,求一个区间的众数。(强制在线) 【题解】 先分块。 设f[i][j]表示第i块到第j块总的众数。 然后每次对于一个询问[l,r],x到y已经知晓,答案只可能是l~x,y~r,和块x~y的众数之一,所以接下来要做的就是判断l~x和y~r中存不存在数字出现次数比块x到y众数出现更多的数。 不过怎么判断呢?可以先用vec
2017-03-29 20:20:41
320
原创 【BZOJ 1015】【JSOI 2008】星球大战starwar【并查集】
Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球。这些星球通过特殊的以太隧道互相直接或间接地连接。 但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划地摧毁反抗军占领的星球。由于星球的不断被摧毁,两个星球之间的通讯通道也开始不可靠
2017-03-28 19:36:17
259
原创 【BZOJ 2243】【SDOI 2011】染色【树链剖分】
学会树链剖分后的一道练手题。>_<Description给定一棵有n个节点的无根树和m个操作,操作有2类: 1、将节点a到节点b路径上所有点都染成颜色c; 2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”、“222”和“1”。 请你写一个程序依次完成这m个操作。题解 若是你还不会树链剖分,请看这里 本题可以直接上 树链剖分+线段
2017-03-28 16:40:22
235
原创 【BZOJ 3098】Hash Killer II【生日原理】
此题浑浑噩噩不知所措 如果你从n个数里随机选数,那么大约选根号n次就能选到一样的(当然选了n次还没碰上是因为RP太好了- -)。 叫什么“生日原理”代码#include<cstdio> #include<cstdlib> using namespace std; int main(){ printf("%d %d\n",100000,20); for(int
2017-03-24 14:40:40
454
原创 【BZOJ 2946】【POI 2000】公共串【后缀数组】【裸】
Description给出几个由小写字母构成的单词,求它们最长的公共子串的长度。 任务: l 读入单词 l 计算最长公共子串的长度 l 输出结果Input文件的第一行是整数 n,1<=n<=5,表示单词的数量。接下来n行每行一个单词,只由小写字母组成,单词的长度至少为1,最大为2000。 Output仅一行,一个整数,最长公共子串的长度。题解今天遇到
2017-03-22 21:05:35
380
原创 【BZOJ 3884】上帝与集合的正确用法【欧拉定理】&【剧毒题】
Description题解来自出题人的剧毒题解 代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int phi(int x){ int res = x; for(int i = 2;i*i <= x;i++) if(x % i == 0) {
2017-03-21 18:54:03
299
原创 欧拉筛(线性筛)& 欧拉函数
今天又复习了一下欧拉筛法,在这做个笔记。欧拉筛(线性筛)一般情况下,有一种筛法叫埃什么什么的。是O(n log log n),非常接近于O(n),但也会有坑爹的出题人来个10000000故意卡你。原理这可能原理有点妙啊。设pr[i]为i最小质因子,然后从2开始计算如果pr[i]没有在前面得到,就说明i是质数,所以pr[i]=i,prime[++len] = i。对于i,枚举每一个不超过pr[i
2017-03-20 19:38:37
1979
1
原创 【BZOJ 4008】【HNOI 2015】亚瑟王【概率与期望DP】
Description本题中我们将考虑游戏的一个简化版模型。 玩家有一套卡牌,共 n张。游戏时,玩家将 n 张卡牌排列成某种顺序,排列后将卡牌按从前往后依次编号为 1 ~ n。本题中,顺序已经确定,即为输入的顺序。 每张卡牌都有一个技能。第 i 张卡牌的技能发动概率为 pi,如果成功发动,则会对敌方造成di点伤害。也只有通过发动技能,卡牌才能对敌方造成伤害。pi不会为 0,也不会为 1,即
2017-03-19 11:06:20
270
原创 【BZOJ 2733】【HNOI 2012】永无乡【treap启发式合并】
Description永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛。如果从岛 a 出发经过若干座(含 0 座)桥可以到达岛 b,则称岛 a 和岛 b 是连 通的。现在有两种操作:B x y 表示在岛 x 与岛 y 之间修建一座新桥。Q x k 表示
2017-03-17 21:22:58
409
原创 【BZOJ 1503】【NOI 2004】郁闷的出纳员【treap】
DescriptionOIER公司是一家大型专业化软件公司,有着数以万计的员工。作为一名出纳员,我的任务之一便是统计每位员工的工资。这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资。如果他心情好,就可能把每位员工的工资加上一个相同的量。反之,如果心情不好,就可能把他们的工资扣除一个相同的量。我真不知道除了调工资他还做什么其它事情。工资的频繁调整很让员工反感,尤其是集体
2017-03-15 22:23:04
234
原创 【codeforces 734E】Anton and Tree【缩点+DP】
题目链接:codeforces 734E题目大意:来看题解的都是知道题目是什么意思的,我就不多嘴了。题解cf自题解已经非常清楚了。先缩点,再找出该树一条最长的直径d,答案就是(d+1)/2 为什么呐?? 假设树的直径是0,那么答案就是0吧。然后我们就可以看到这个事实: the tree diameter can’t be decreased more than by two per one pa
2017-03-14 22:54:30
299
原创 【POJ 2763】Housewife Wind【LCA】
题目链接:POJ-2763题目大意:一棵树,n个点,每条边有权值w[i],q个操作。 A:求u到v路径上权值之和 B:将第x条边的权值改为t (1<= n,q<= 10^5)题解先考虑图是一条链时,无论是查询还是修改,用BIT(树状数组)的话都可以在O(log n)内完成。 但是对于一棵树怎么搞呢?? 可以将树通过DFS访问的顶点顺序当做一条链。 这样就非常妙了,可以使用BIT做优化了。
2017-03-14 16:57:59
247
原创 【BZOJ 1864】【ZJOI 2006】三色二叉树【树型DP】
DescriptionInput仅有一行,不超过500000个字符,表示一个二叉树序列。Output输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色。题解一道树形dp题(类似《没有上司的舞会》) 对于求最大值f[i][0]表示i这个点不染绿色,i下面的子树最多能取多少个绿色的点 f[i][1]表示i这个点染了绿色,i下面的子树最多能取多少个绿色的点考虑每一个点 如果染
2017-03-12 15:35:40
230
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人