--------数据结构--------
文章平均质量分 87
Neo__Z
这个作者很懒,什么都没留下…
展开
-
bzoj3694: 最短路【树链剖分+线段树&&最短路】
Description给出一个n个点m条边的无向图,n个点的编号从1~n,定义源点为1。定义最短路树如下:从源点1经过边集T到任意一点i有且仅有一条路径,且这条路径是整个图1到i的最短路径,边集T构成最短路树。 给出最短路树,求对于除了源点1外的每个点i,求最短路,要求不经过给出的最短路树上的1到i的路径的最后一条边。Input第一行包含两个数n和m,表示图中有n个点和m条边。 ...原创 2018-03-04 18:38:39 · 351 阅读 · 0 评论 -
bzoj4942: [Noi2017]整数【线段树+压位】
解题思路:比较容易想到线段树维护二进制数的进退位,然后把加的操作也拆成二进制分log次加减,但这样是O(n∗log230n∗log21e9)O(n∗log230n∗log21e9)O(n*log_230n*log_21e9),显然过不了。 考虑压位,用一个int表示连续30位的01状态,加减也最多会涉及两个int,而且进退位除了这两个,其余只会加减1,也只用记录区间内是否全为230−1230...原创 2018-04-08 21:06:58 · 329 阅读 · 0 评论 -
bzoj4571: [Scoi2016]美味【主席树】
Description一家餐厅有 n 道菜,编号 1…n ,大家对第 i 道菜的评价值为 ai(1≤i≤n)。有 m 位顾客,第 i 位顾客的期 望值为 bi,而他的偏好值为 xi 。因此,第 i 位顾客认为第 j 道菜的美味度为 bi XOR (aj+xi),XOR 表示异或 运算。第 i 位顾客希望从这些菜中挑出他认为最美味的菜,即美味值最大的菜,但由于价格等因素,他只能从第 li...原创 2018-03-27 09:23:38 · 218 阅读 · 0 评论 -
BJ模拟 链上求和【树状数组维护dfs序】
题目描述:给一棵n个节点的带点权的树,求: ∑x=1n∑y=x+1n∑dis(x,y)+1k=1(路径x−y上前k大点的点权和)∑x=1n∑y=x+1n∑k=1dis(x,y)+1(路径x−y上前k大点的点权和)\sum\limits_{x=1}^n\sum\limits_{y=x+1}^n\sum_{k=1}^{dis(x,y)+1}(路径x-y上前k大点的点权和)解题思路:一...原创 2018-04-11 18:05:25 · 284 阅读 · 0 评论 -
bzoj3879: SvT【后缀数组+稀疏表+单调栈】
Description(我并不想告诉你题目名字是什么鬼)有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n].现在有若干组询问,对于每一个询问,我们给出若干个后缀(以其在S中出现的起始位置来表示),求这些后缀两两之间的LCP(LongestCommonPrefix)的长度之和.一对后缀之间的LCP长度仅统计一遍.Input第一行两个正整数n,m,分别表示S的长度以...原创 2018-04-11 21:00:20 · 308 阅读 · 0 评论 -
bzoj1500:[NOI2005]维修数列【无旋treap】
Description 请写一个程序,要求维护一个数列,支持以下 6 种操作: 请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格 Input 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目。 第2行包含N个数字,描述初始时的数列。 以下M行,每行一条命令,格式参见问题描述中的表格。 任何时刻数列中最多含有5...原创 2018-04-05 19:02:07 · 250 阅读 · 0 评论 -
BJ模拟 传送门【KD树+拓扑排序】
题目描述:解题思路:首先想到的肯定是拓扑排序,但直接建边是O(n2)O(n2)O(n^2)的,考虑优化。 注意到这个图的性质:只能往右上方向走,所以我们可以从右上角到左下角倒着拓扑,用KD树去模拟拓扑排序的过程即可。#include<bits/stdc++.h>#define ll unsigned long longusing namespace std...原创 2018-04-13 08:47:15 · 256 阅读 · 0 评论 -
BJ模拟 String【后缀自动机+LCT+可持久化线段树】
题目描述:给你一个长度为n的字符串S,你需要维护这个字符串S并支持两种操作: 1、在字符串S末尾插入一个字符。 2、记字符串T为字符串S从第 l 个字符到第 r 个字符所构成的子串。询问字符串T中最长的子串使得该子串在T中出现过至少两次(例如:T=”ababa”,最长的子串应为aba,长度为3),并输出它的长度。如果不存在这样的子串,则输出0。 强制在线,n,m<=50000。...原创 2018-04-23 10:49:55 · 576 阅读 · 0 评论 -
bzoj5287: [Hnoi2018]毒瘤【虚树+树形dp】
传送门解题思路:首先如果图是一棵树,那么: f[u][0]=∏(f[v][0]+f[v][1]),f[u][1]=∏f[v][0]f[u][0]=∏(f[v][0]+f[v][1]),f[u][1]=∏f[v][0]f[u][0]=\prod(f[v][0]+f[v][1]),f[u][1]=\prod f[v][0]如果多了几条非树边,可以暴力枚举这几条边端点的状态,即强制选A不选...原创 2018-05-09 10:11:19 · 467 阅读 · 0 评论 -
bzoj3729: Gty的游戏【博弈论+splay】
Description某一天gty在与他的妹子玩游戏。 妹子提出一个游戏,给定一棵有根树,每个节点有一些石子,每次可以将不多于L的石子移动到父节点,询问 将某个节点的子树中的石子移动到这个节点先手是否有必胜策略。 gty很快计算出了策略。 但gty的妹子十分机智,她决定修改某个节点的石子或加入某个新节点。 gty不忍心打击妹子,所以他将这个问题交给了你。 另外由于gty十分绅士,所...原创 2018-04-08 14:57:50 · 190 阅读 · 0 评论 -
bzoj4447: [Scoi2015]小凸解密码
Description小凸得到了一个密码盘,密码盘被等分成N个扇形,每个扇形上有一个数字(0~9),和一个符号(“+”或”*”) 密码盘解密的方法如下: 首先,选择一个位置开始,顺时针地将数字和符号分别记在数组A和数组C巾 解密的方法如下 B0=A0 当x>0时: 若Cx为“+”,Bx=(Ax+Ax-1)%10,注意:x-1是下标值 若Cx为“*”,Bx= (Ax×Ax-1...原创 2018-03-23 20:51:41 · 439 阅读 · 0 评论 -
bzoj3545&&3551: [ONTAK2010]Peaks离线&&在线【线段树合并&&kruskal重构树&&主席树】
Description在Bytemountains有N座山峰,每座山峰有他的高度h_i。有些山峰之间有双向道路相连,共M条路径,每条路径有一个困难值,这个值越大表示越难走,现在有Q组询问,每组询问询问从点v开始只经过困难值小于等于x的路径所能到达的山峰中第k高的山峰,如果无解输出-1。Input第一行三个数N,M,Q。 第二行N个数,第i个数为h_i 接下来M行,每行3个数a ...原创 2018-03-04 12:06:14 · 254 阅读 · 0 评论 -
bzoj2288: 【POJ Challenge】生日礼物【贪心+优先队列+链表】
Descriptionftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, …, AN. 她被允许选择不超过 M 个连续的部分作为自己的生日礼物。自然地,ftiasch想要知道选择元素之和的最大值。你能帮助她吗?Input第1行,两个整数 N (1 ≤ N ≤ 105) 和 M (0 ≤ M ≤ 105), 序列的长度和可以选择的部分。第...原创 2018-02-25 20:11:01 · 740 阅读 · 0 评论 -
HihoCoder1145幻想乡的日常【树状数组】
描述幻想乡一共有n处居所,编号从1到n。这些居所被n-1条边连起来,形成了一个树形的结构。每处居所都居住着一个小精灵。每天小精灵们都会选出一个区间[l,r],居所编号在这个区间内的小精灵一起来完成一项任务。特别的,居所相邻的(有边相连的)两个小精灵会自发的组成一队,并且如果a和b相邻b和c相邻,那么a和c也在同一队里面。每天的任务完成之后,队伍就会解散;第二天再根据新的区间组成新的队伍...原创 2018-03-12 13:47:21 · 248 阅读 · 0 评论 -
bzoj2741: 【FOTILE模拟赛】L【可持久化trie树+分块】
DescriptionFOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和。 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 … xor Aj),其中l<=i<=j<=r。 为了体现在线操作,对于一个询问(x,y): l = min ( ((x+lastans) mod N)+1 , ((y+lasta...原创 2018-03-05 15:39:45 · 238 阅读 · 0 评论 -
bzoj4009: [HNOI2015]接水果【整体二分+扫描线】
Description风见幽香非常喜欢玩一个叫做 osu!的游戏,其中她最喜欢玩的模式就是接水果。由于她已经DT FC 了The big black, 她觉得这个游戏太简单了,于是发明了一个更加难的版本。首先有一个地图,是一棵由 n 个顶点、n-1 条边组成的树(例如图 1给出的树包含 8 个顶点、7 条边)。这颗树上有 P 个盘子,每个盘子实际上是一条路径(例如图 1 中顶点 6 到顶点 ...原创 2018-03-12 19:16:34 · 318 阅读 · 0 评论 -
bzoj3166: [Heoi2013]Alo【可持久化线段树】
DescriptionWelcome to ALO ( Arithmetic and Logistic Online)。这是一个VR MMORPG , 如名字所见,到处充满了数学的谜题。 现在你拥有n颗宝石,每颗宝石有一个能量密度,记为ai,这些宝石的能量 密度两两不同。现在你可以选取连续的一些宝石(必须多于一个)进行融合,设为 ai, ai+1, …, a j,则融合而成的宝石的能量...原创 2018-03-05 19:12:27 · 283 阅读 · 0 评论 -
bzoj [Ahoi2013]连通图【cdq分治+并查集】
DescriptionInputOutputSample Input4 51 22 33 44 12 431 52 2 32 1 2Sample OutputConnected Disconnected ConnectedHINTN<=100000 M<=200000 K<=100000解...原创 2018-03-19 10:39:50 · 366 阅读 · 0 评论 -
bzoj3323: [Scoi2013]多项式的运算【无旋treap】
Description某天,mzry1992 一边思考着一个项目问题一边在高速公路上骑着摩托车。一个光头踢了他一脚,摩托车损坏,而他也被送进校医院打吊针。现在该项目的截止日期将近,他不得不请你来帮助他完成这个项目。该项目的目的是维护一个动态的关于x 的无穷多项式F(x) = a0 * x^0 + a1 * x^1 + a2 * x^2 + … ,这个多项式初始时对于所有i有ai = 0。 操...原创 2018-03-29 20:19:17 · 170 阅读 · 0 评论 -
BJ模拟 矩阵【单调栈】
题目大意:给出一个n*m的01矩阵,问有多少个面积大等于k的全0子矩阵。n,m<=4000。解题思路:开始时以为用单调栈处理出以每个点为右下角的极大子矩阵算包含右下角的合法矩阵就行了,但每个点会产生O(n)个极大子矩阵,且会算重。 后来看了题解,可以加入一个高度时不计算贡献,在弹掉该高度时计算以它为高度的极大子矩阵中高度大于周围两个高度的部分的贡献,这样就是O(n2)O(n2)...原创 2018-04-24 20:20:50 · 254 阅读 · 0 评论 -
BJ模拟 第k小和【贪心+优先队列】
题目描述:从n个数中选若干(至少1)个数求和,求所有方案中第k小的和(和相同但取法不同的视为不同方案)。n<=100000,k<=500000解题思路:考虑从下到大选数。 假设当前最小状态为(sum,i),表示和为sum,选的最大数为i,那么它会引出两个状态(sum-a[i]+a[i+1],i+1)或(sum+a[i+1],i+1),用堆维护即可。 这样可以覆盖所有情况...原创 2018-05-09 15:40:33 · 524 阅读 · 0 评论 -
BJ模拟 Period on tree【树状数组+哈希】
题目描述:给定一棵 N 个节点的无根树,每条边上有一个小写英文字母。每次我们选择两个不同的节点 u 和 v,然后依次写下从 u 到 v 的最短路径上每条边上的字母,我们就能得到这条路径对应的字符串。我们称字符串 t 是另一个字符串 s 的循环,当且仅当 s 可由若干份的 t 串拼接而成。 你的任务,则是对于给定的树,处理下面两种操作: • 1 u v,输出从 u 到 v 路径的字符串的...原创 2018-04-25 12:09:20 · 248 阅读 · 0 评论 -
bzoj5286: [Hnoi2018]转盘【线段树】
传送门解题思路:首先有结论:最优方案一定是在某个起点等一会儿,然后一口气走完一圈,即先把原序列倍增: ans=minni=1{maxi+n−1j=i{Tj−(j−i)}+n−1}ans=mini=1n{maxj=ii+n−1{Tj−(j−i)}+n−1}ans=min_{i=1}^n\{max_{j=i}^{i+n-1}\{T_j-(j-i)\}+n-1\} 也等于: ans=min...原创 2018-05-08 17:16:24 · 204 阅读 · 0 评论 -
bzoj5289: [Hnoi2018]排列 排列【贪心+堆】
传送门解题思路:首先要看出题目要求的就是一棵树(有环无解),求一个顺序,父亲必须再儿子前选,选第i个点的价值是i*w[i],求最大价值和。 然后这确实是雅礼集训的原题。 先来考虑一个简单的情况:若v是u的儿子且是所有可选点中最小的。那么选了u之后下一个一定会选v。那么我们可以把u与v合并。 这个结论对于一个连通块也是对的,所以块与块之间也可以比较大小,且比较的是平均值。因为考虑连通...原创 2018-05-08 17:33:41 · 505 阅读 · 0 评论 -
bzoj3637: Query on a tree VI【LCT】
题目大意:有一棵黑白树,要求支持两种操作:1.单点颜色翻转;2.询问某点同色连通块大小。 n,m&lt;=100000解题思路:考虑用LCT维护一棵黑树,一棵白树,维护连通树size。但是还有一个问题没有解决,如果改色时暴力link-cut,显然菊花图时修改的边数可以达到O(n)级别于是就有了一个巧妙的写法,当一个点从白变黑时,只在白树里cut掉它和父亲的边,只在黑树里lin...原创 2018-05-16 09:43:00 · 333 阅读 · 0 评论 -
bzoj5077: [Ctsc2016]时空旅行【线段树+凸包】
Description2045年,人类的技术突飞猛进,已经找到了进行时空旅行的方法。小R得到了一台时空旅行仪,他想用它调查不同 时空中人类的发展状况。根据平行时空理论,宇宙中存在着很多独立的时空,每个时空在下一个时间点还会分化出 若干个不同的时空。宇宙是一个三维空间,人类使用空间直角坐标系来描述空间中的一个位置,三维坐标分别是 x ,y,z。我们假设在初始的时空(编号为 0)中,人类存在...原创 2018-05-22 17:04:55 · 529 阅读 · 0 评论 -
bzoj4103: [Thu Summer Camp 2015]异或运算【可持久化trie树】
Description给定长度为n的数列X={x1,x2,…,xn}和长度为m的数列Y={y1,y2,…,ym},令矩阵A中第i行第j列的值Aij=xi xor yj,每次询问给定矩形区域i∈[u,d],j∈[l,r],找出第k大的Aij。Input第一行包含两个正整数n,m,分别表示两个数列的长度第二行包含n个非负整数xi 第三行包含m个非负整数yj 第四行包含一个正整...原创 2018-05-22 18:21:56 · 294 阅读 · 0 评论 -
bzoj4105: [Thu Summer Camp 2015]平方运算【线段树】
DescriptionInput第一行有三个整数N,M,p,分别代表序列的长度、平方操作与询问操作的总次数以及在平方操作中所要模的数。接下来一行N个数代表一开始的序列{X1,X2,…,XN}。 接下来M行,每行三个整数op,l,r。其中op代表本次操作的类型。若op=0,代表这是一次平方操作,平方的区间为[l,r];如果op=1,代表这是一次询问操作,询问的区间为[l,r]。...原创 2018-05-22 20:56:49 · 396 阅读 · 0 评论 -
bzoj3639: Query on a tree VII【LCT+set】
题目大意:给一棵黑白带点权树,支持单点翻转颜色,单点修改权值,询问某点同色连通块内点权最大值。 n,m<=100000解题思路:同Qtree6,把虚边维护size改为用multiset维护最大点权即可。#include<bits/stdc++.h>#define ll long longusing namespace std;int getint(){...原创 2018-05-16 17:03:08 · 311 阅读 · 0 评论 -
loj#2537. 「PKUWC 2018」Minimax【概率dp+线段树合并】
传送门解题思路:感觉自己当时好菜啊……设 fu,ifu,if_{u,i} 为 uuu 选 iii 的概率,假如是从左子树转移来的,则fu,i=fl,i(p∑fr,j<i+(1−p)∑fr,j>i)fu,i=fl,i(p∑fr,j<i+(1−p)∑fr,j>i)f_{u,i}=f_{l,i}(p\sum f_{r,ji}) 然后想到线段树合并,节点表示选当前区...原创 2018-05-29 07:53:38 · 1122 阅读 · 0 评论 -
AtCoder[ARC073F] Many Moves【动态规划优化+线段树】
题目描述:有N个方格排成一排,它们按从左到右的顺序被编号为1,2,…,N。你有两个硬币,开始时分别被放在格A,B上,接下来你要按照顺序完成Q次操作:给定一个正整数xi,你要选出两枚硬币中的一枚移动到第xi格上。注意,你需要花费1s的时间将硬币移动一格。也就是说,将某一枚硬币从第X格移动到第Y格需要花费|X−Y|秒。你的任务是在最短的时间内完成所有的操作。你只能根据给定的操作...原创 2018-05-12 14:46:53 · 979 阅读 · 0 评论 -
UOJ#205. 【APIO2016】Fireworks【动态规划+折线优化+可并堆】
题目大意:给出一棵树,边有边权,可以花费1的代价把一条边的权值加1或者1,不能减到负的。 要让根到所有叶子的边权和都相等。问最小代价。 n&amp;lt;=600000解题思路:设 fx(i)fx(i)f_x(i) 表示 xxx 的子树中的叶子到 xxx 距离全部搞成 iii 的最小代价。 设 gx(i)gx(i)g_x(i)表示 xxx 的子树中的叶子到 faxfaxf...原创 2018-05-18 11:32:10 · 330 阅读 · 0 评论 -
BJ模拟 相似子串【哈希+并查集】
题目描述:解题思路:把26个字母分开hash,每一位只用0和1表示这一位是否是字母i。 询问时也把26个字母分开比较,把等价类里的hash加起来算。 不同处最多为1,即是最后的hash值只会有一个形如baseibaseibase^i的差,判断一下即可。#include<bits/stdc++.h>#define ll unsigned long long...原创 2018-04-21 21:20:01 · 224 阅读 · 0 评论 -
BJ模拟 巡游计划【线段树】
题目描述:在遥远的精灵世界,有一个神奇的国度。这个国度由N座城市(从1到N编号)构成,其中1号城市是精灵们的首都,N号城市是精灵们的边疆。精灵国王每年都要从首都出发到边疆去巡游,沿途抚恤她的子民们:她每到一个城市i,就会花A[i]天的时间来巡游这个城市。精灵世界分布在不同的次元中,所以精灵们只能通过传送阵出行。他们每个城市有一个空间坐标,第i座城市的坐标为P[i],保证P[i]是[1,M]...原创 2018-04-25 21:25:21 · 171 阅读 · 0 评论 -
bzoj5294: [Bjoi2018]二进制【动态规划+线段树】
Descriptionpupil 发现对于一个十进制数,无论怎么将其的数字重新排列,均不影响其是不是333 的倍数。他想研究对于二进 制,是否也有类似的性质。于是他生成了一个长为n 的二进制串,希望你对于这个二进制串的一个子区间,能求出 其有多少位置不同的连续子串,满足在重新排列后(可包含前导0 )是一个3 的倍数。两个位置不同的子区间指开 始位置不同或结束位置不同。由于他想尝试尽量多的...原创 2018-05-10 15:13:57 · 787 阅读 · 0 评论 -
BJ模拟 Rectangle Query【分块+bitset】
题目描述:平面上有 nnn 个点,你需要回答qqq个询问: 给定 x1,x2,y1,y2x1,x2,y1,y2 x_1,x_2,y_1,y_2 ,在满足 x1≤x≤x2x1≤x≤x2x_1≤x≤x_2 且 y1≤y≤y2y1≤y≤y2 y_1≤y≤y_2 的所有点 (x,y)(x,y) (x,y) 中,有多少个不同的横坐标(x坐标)和不同的纵坐标(y坐标)? 强制在线,n,q≤5000...原创 2018-05-03 18:48:19 · 180 阅读 · 0 评论 -
bzoj4182: Shopping【点分治+单调队列优化多重背包】
题目大意:给定一棵有 n 个点的树,第 i 个点有 di 件商品,价格为 ci,价值为 wi。 你手头有 m 块钱,且你要保证你买过的点在树上互相连通,问买到的物品的总价值最多是多少。 1 ≤ n ≤ 500, 1 ≤ m ≤ 4000, di ≤ 100。 解题思路:如果直接树形dp是O(nm2d)O(nm2d)O(nm^2d)的,显然过不了考虑如果强制要选一个点怎么做。 ...原创 2018-05-17 21:35:18 · 503 阅读 · 0 评论 -
hihoCoder Challenge 29 D. 不上升序列【动态规划+折线+堆】
题目大意:给出一个整数序列,可以花费1的代价把一个数+1或1,求把它变成不上升序列的最小代价。n&lt;=500000;令 fi(x)fi(x)f_i(x) 为前个数,调整出最大值不超过 xxx 的最小代价,那么 fifif_i 是一条不升的折线 考虑转移 fi(x)=miny≤xfi−1(y)+|ai−y|fi(x)=miny≤xfi−1(y)+|ai−y|f_i(x)=\te...原创 2018-05-18 08:39:42 · 244 阅读 · 0 评论 -
bzoj5291: [Bjoi2018]链上二次求和【线段树】
Description有一条长度为n的链(1≤i<<SSS为前缀和,SSSSSS为SSS的前缀和): ans=∑k=lr∑i=kn(Si−Si−k)ans=∑k=lr∑i=kn(Si−Si−k)ans=\sum\limits_{k=l}^r\sum\limits_{i=k}^{n}(S_i-S_{i-k})=∑k=lr(∑i=knSi−∑i=0n−kSi)=∑k=lr(∑i=kn...原创 2018-05-11 20:11:30 · 1721 阅读 · 0 评论 -
bzoj1758: [Wc2010]重建计划【分数规划+点分治+单调队列】
题目大意:给一棵边带权树,求一条长度在[L,R]中且平均权值最大的链。n<=100000,边权小于1000000.解题思路:先分数规划,把每条边边权减去mid,就变成了判断是否有一条长度在[L,R]的链权值大等于0.考虑点分治,对于一个点 uuu,即是求一个和 uuu 不同子树的点 vvv,且 L−dep[u]≤dep[v]≤R−dep[u]L−dep[u]≤dep[v]≤R...原创 2018-05-11 21:32:19 · 206 阅读 · 0 评论