线段树
波波i
此微博用来学习,和嘿嘿嘿。
展开
-
【线段树】最大值(单点)
题意:在N(1<=N<=100000)个数A1…An组成的序列上进行M(1<=M<=100000)次操作,操作有两种:(1)1 x y:表示修改A[x]为y;(1)2 x y:询问x到y之间的最大值。思路:线段树,然后以最大值为权建数…..程序: const maxn=500000; var a:array [1..maxn] of longint; i,n,m,j,w,x,y:longint原创 2017-01-14 16:10:43 · 459 阅读 · 0 评论 -
bzoj 1036: [ZJOI2008]树的统计Count 树链剖分+线段树
题目大意:给你一颗树,每个点有权值,要你求出一个点到另一个点路径的最大权值,或者是权值和,还要支持修改权值的问题。思路:树链剖分的模板题。树链剖分大概就是把书上的链给按一定方法拆开,然后每一段去一个hash值,放入线段树中去维护他的区间值。这里有一个大佬的博客:http://blog.sina.com.cn/s/blog_7a1746820100wp67.html程序:#include<cstdio原创 2017-12-22 20:25:32 · 152 阅读 · 0 评论 -
5597. 红绿灯
题目大意: 你从起点走到终点,中间有很多的红绿灯,遇到红灯不能走,要等到绿灯。红灯和绿灯都是固定的G,R时间。你会从T时刻出发,问到达终点的时间是什么时候。 思路: 这题和2018 GDKOI T1差不多..算法虽然不同,但是他的思路是差不多的。走到一个红灯,后面需要走的时间就是一个固定的常数了,所以只需要求出遇到第一个红灯需要的时间,以及每个点为0时刻出发到终点的时间。 我们讨论如何...原创 2018-04-15 21:32:20 · 599 阅读 · 0 评论 -
jzoj 5662. 【GDOI2018Day1模拟4.17】尺树寸泓
题目大意: 思路: 平衡树很简单了,学过的大概多知道,推一推会发现,他的sum是和只有旋转点会变,mul所有的父亲都会变,在多次旋转后可能为一条链,那么时间复杂度就会爆炸。 这时我们可以先求出中序遍历,那么平衡树的点在中序遍历中的相对位置不会变。子树也在包含他的连续区间里面。这样就只用维护每个点的sum值,然后区间乘法求出mul的值。 程序: #include<cstd...原创 2018-04-17 21:00:12 · 297 阅读 · 0 评论 -
bzoj 3626: [LNOI2014]LCA 树链剖分
题目大意: 给你一颗树,然后每次询问l,r,z表示从l~r所有的点和z点的lca的深度和。 思路: 这题贼有意思,发现自己根本想不出来!只好%%%biao 暴力求解很慢,觉得如果是比赛最多60分,那我们要怎么思考这题呢,我们先把z点到根的路径全部赋值为1,然后枚举l到r,正好他们到根的点和就是lca的深度和,这样就解决了一个询问的和小数据的答案,接下来我们发现,这个东西是有累加性的,如果你把l~r...原创 2018-09-25 19:30:12 · 174 阅读 · 0 评论 -
5882. 【NOIP2018模拟A组9.25】雪人(线段树)
题目大意: 给定一个长度为 N 的序列,每次操作可以选选择一个数,这个数和它右边的数比大小,如 果这个数比较大,就和右边的数交换,然后和右边的数接着比大小直到某一次它右边的数比 他大或者他右边没有数了。求最小的操作次数使得序列变为升序。 思路: 因为交换是不会改变相对顺序的,所以从左往右找,找到一个数右边有比他大的就要答案加一。 程序: #include<cstdio> #includ...原创 2018-09-27 11:35:28 · 251 阅读 · 0 评论