线段树
文章平均质量分 56
Saramanda
sjtu qys
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[题解]bzoj1878(SDOI2009)HH的项链
DescriptionHH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此, 他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同 的贝壳?这个问题很难回答。。。因为项链实在是太长了。于是,他只好求助睿智的你,来解 决这个问题。Input第一行:一个整数N,表示原创 2017-03-12 16:38:06 · 635 阅读 · 0 评论 -
[题解]hdu1255 覆盖的面积
Description给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. Input输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1<=N<=1000),代表矩形的数量,然后是N行数据,每一行包含四个浮点数,代表平面上的一个矩形的左上角坐标和右下角坐标,矩形的上下边和X轴平行,左右边和Y轴平行.坐标的范围从0到100000原创 2017-08-17 10:48:21 · 882 阅读 · 0 评论 -
[题解]hdu1828 Picture
DescriptionA number of rectangular posters, photographs and other pictures of the same shape are pasted on a wall. Their sides are all vertical or horizontal. Each rectangle can be partially or totally原创 2017-08-17 10:54:39 · 798 阅读 · 0 评论 -
[题解]bzoj4034 HAOI2015 树上操作
Description有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。Input第一行包含两个整数 N, M 。表示点数和操作数。接下来一行 N 个整数,表示树中节点的初始权值。接原创 2017-08-18 09:08:12 · 831 阅读 · 0 评论 -
[题解]bzoj2243 SDOI2011 染色
Description给定一棵有n个节点的无根树和m个操作,操作有2类: 1、将节点a到节点b路径上所有点都染成颜色c; 2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”、“222”和“1”。 请你写一个程序依次完成这m个操作。Input第一行包含2个整数n和m,分别表示节点数和操作数; 第二行包含n个正整数表示n个节点的初始颜色原创 2017-08-18 08:56:48 · 940 阅读 · 0 评论 -
[题解]POI2015 Kinoman
Description共有m部电影,编号为1~m,第i部电影的好看值为w[i]。在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[i]部。你可以选择l,r(1<=l<=r<=n),并观看第l,l+1,…,r天内所有的电影。如果同一部电影你观看多于一次,你会感到无聊,于是无法获得这部电影的好看值。所以你希望最大化观看且仅观看过一次的电影的好看值的总和。 输入输出格式Input第一行两原创 2017-08-11 08:05:27 · 531 阅读 · 0 评论 -
[题解]codeforces498d Traffic Jams in the Land
题目:戳这里Solution线段树每个节点维护60个值,分别是走到该区间左端时时间为i时该区间所用的时间,因为题目中2<=y<=6,2到6的最小公倍数为60,则走过的时间在判断是否堵车是可以mod 60。代码:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=100010原创 2017-08-11 08:00:32 · 520 阅读 · 0 评论 -
[题解]bzoj4592 SHOI2015脑洞治疗仪
Description曾经发明了自动刷题机的发明家SHTSC又公开了他的新发明:脑洞治疗仪–一种可以治疗他因为发明而日益增大的脑洞的神秘装置。 为了简单起见,我们将大脑视作一个01序列。1代表这个位置的脑组织正常工作,0代表这是一块脑洞。 1 0 1 0 0 0 1 1 1 0 脑洞治疗仪修补某一块脑洞的基本工作原理就是将另一块连续区域挖出,将其中正常工作的脑组织填补在这块脑洞中。 (所以脑原创 2017-08-11 07:53:44 · 531 阅读 · 0 评论 -
[题解]bzoj3295 CQOI2011动态逆序对
Description对于序列A,它的逆序对数定义为满足iInput输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。Output输出包含m行,依次为删除每个元素之前,逆序对的个数。Sample Input5 4 1 5 3 4 2 5 1 4 2Sample Outpu原创 2017-08-11 08:19:05 · 401 阅读 · 0 评论 -
[题解]bzoj4826 HNOI2017 影魔
Description影魔,奈文摩尔,据说有着一个诗人的灵魂。事实上,他吞噬的诗人灵魂早已成千上万。千百年来,他收集了各式各样的灵魂,包括诗人、牧师、帝王、乞丐、奴隶、罪人,当然,还有英雄。每一个灵魂,都有着自己的战斗力,而影魔,靠这些战斗力提升自己的攻击。奈文摩尔有 n 个灵魂,他们在影魔宽广的体内可以排成一排,从左至右标号 1 到 n。第 i个灵魂的战斗力为 k[i],灵魂们以点对的形式为影魔提原创 2017-08-17 09:43:36 · 814 阅读 · 0 评论 -
[题解]codeforces444c DZY Loves Colors
题目:戳这里 题目大意: 给定一个序列,初始Ai=iA_i=i,区间赋值操作,定义i位置的元素的贡献为该位置元素每次改变的值的绝对值之和,多次询问区间内的元素贡献之和。Solution线段树,区间相同就统一修改,区间不同就暴力递归。注意本题的标记,每次加上新的标记时都会对答案产生贡献,不能只在覆盖标记上修改,还应该记录一下当前区间对答案的贡献作为标记下传。#include<cstdio>#in原创 2017-08-14 08:21:39 · 421 阅读 · 0 评论 -
[题解]bzoj4869 SHOI2017相逢是问候
DescriptionInformatikverbindetdichundmich. 信息将你我连结。B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数。一共有m个操作,可以 分为两种:0 l r表示将第l个到第r个数(al,al+1,…,ar)中的每一个数ai替换为c^ai,即c的ai次方,其中c是 输入的一个常数,也就是执行赋值ai=c^ai1 l r求第l个到第r个数的和原创 2017-08-14 08:41:13 · 958 阅读 · 0 评论 -
[题解]uoj228 基础数据结构练习题
题目大意: 给定一个序列,要求支持区间加、区间开根号、区间求和操作。Solution线段树,我们可以像往常一样判断区间内的数是否都相等,如果相等就直接区间赋值,否则暴力递归下去。但是开根号还有一种特殊情况:3 4 3 4 3 4……开完根号1 2 1 2 1 2……同时加上2又变回了3 4 3 4 3 4……就给一个完全平方数和完全平方数减一的数开根号时得到的结果依然相差一,所以这样就会毫无疑问的原创 2017-08-15 08:03:57 · 725 阅读 · 0 评论 -
[题解]hdu1542 Atlantis
DescriptionThere are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of the island. But unfortunately, these maps des原创 2017-08-17 10:44:06 · 805 阅读 · 0 评论 -
[题解]bzoj3813 奇数国
Description在一片美丽的大陆上有100000个国家,记为1到100000。这里经济发达,有数不尽的账房,并且每个国家有一个银行。某大公司的领袖在这100000个银行开户时都存了3大洋,他惜财如命,因此会不时地派小弟GFS清点一些银行的存款或者让GFS改变某个银行的存款。该村子在财产上的求和运算等同于我们的乘法运算,也就是说领袖开户时的存款总和为300000。这里发行的软妹面额是最小的60个原创 2017-08-17 10:27:58 · 799 阅读 · 0 评论 -
[题解]hdu5306 Gorgeous Sequence
DescriptionThere is a sequence a of length n. We use ai to denote the i-th element in this sequence. You should do the following three types of operations to this sequence.0 x y t: For every x≤i≤y, we原创 2017-08-17 10:18:09 · 589 阅读 · 0 评论 -
[题解]bzoj3600 没有人的算数
Solution就是线段树,最麻烦的地方就是比较两个数的大小。 我们可以想到给每个数映射到一个double值,但是double的精度有限,如果数太多就会挂掉。所以我们可以用平衡树维护。但是插入的时候还是有比较大小的问题。 注意到新数由原来的数生成,所以原来的数在平衡树中的大小可以用来进行比较。我们可以把每一个平衡树中的节点对应区间(l,r),然后他的左孩子对应(l,mid) ,原创 2017-07-11 10:40:17 · 399 阅读 · 0 评论 -
[题解]bzoj4034 树上操作
Description有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。Input第一行包含两个整数 N, M 。表示点数和操作数。接下来一行 N 个整数,表示树中节点的初始权值。接原创 2017-07-12 17:21:54 · 392 阅读 · 0 评论 -
[题解]codeforces 718c Sasha and Array
Description题目大意: 给定一个长度为N的序列An{A_n},要求支持区间加、区间求∑f(Ai)\sum f(A_i),其中f(i)f(i)表示斐波那契数列第i项。 N≤100000N\leq 100000Solution线段树,把斐波那契数列的转移矩阵作为标记,每次区间乘上转移矩阵的几次方即可。注意不能标记永久化,因为矩阵乘法不符合交换律。 代码:#include<cstdio>原创 2017-07-12 17:30:15 · 389 阅读 · 0 评论 -
[题解]codeforces 280d k-Maximum Subsequence Sum
Discription题目大意: 给出一个长度为 n 的序列 An{A_n}, m 次操作, 操作有如下两种: 1. 给出 i,val, 把 AiA_i 变成 val。 2. 给出 l,r,k, 询问把区间 [l, r] 划分成不超过 k 个不相交的区间,这些区间中数的和的最大值。区间可以不满k个,也可以一个数都不取。 数据范围:n,m≤105,k≤20n, m\leq10^5 , k\le原创 2017-07-13 11:50:17 · 735 阅读 · 0 评论 -
[题解]codeforces 339d Xenia and Bit Operations
Description题目大意: 给你2n2^n个数,更新其中的某个值,交替对这些数进行“或操作”和“异或操作”,每次得到最终的结果。Solution线段树模拟就好了,每次单点修改,每层节点用bool变量记录下是该进行“或操作”还是“异或操作”。 代码:#include<cstdio>#include<algorithm>using namespace std;template<typena原创 2017-07-13 12:05:06 · 495 阅读 · 0 评论 -
[题解]bzoj2957 楼房重建
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。 为了简化问题,我们考虑这些事件发生在一个二维平面上。小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度。如果这栋楼房上任何一个高度大于0的点与(0,0)原创 2017-07-13 12:56:24 · 540 阅读 · 0 评论 -
[题解]hdu5634 Rikka with Phi
Description题目大意: 给出一个长度为 n 的序列AnA_n,有 m 个操作。 1. 给出 l, r,将所有的Ai,l≤i≤rA_i, l \leq i \leq r全部变为ϕ(Ai)\phi(A_i); 2. 给出 l, r, x,将所有的Ai,l≤i≤rA_i, l \leq i \leq r全部变为x; 3. 给出 l, r,询问∑ri=lAi\sum_{i=l}^r A_i原创 2017-07-13 13:11:21 · 468 阅读 · 0 评论 -
[题解]codeforces 438d The Child and Sequence
Description题目大意: 给出一个长度为 n 的序列AnA_n,有 m 个操作。 1. 给出 k, x,将AkA_k变为x; 2. 给出 l, r, x,将所有的Ai,l≤i≤rA_i, l \leq i \leq r全部变为Ai mod xA_i\ mod \ x; 3. 给出 l, r,询问∑ri=lAi\sum_{i=l}^r A_i 数据范围:n,m≤105n, m \le原创 2017-07-14 09:05:26 · 461 阅读 · 0 评论 -
[题解]bzoj4540 HNOI2016 序列
Description 给定长度为n的序列:a1,a2,…,an,记为a[1:n]。类似地,a[l:r](1≤l≤r≤N)是指序列:al,al+1,…,ar-1,ar。若1≤l≤s≤t≤r≤n,则称a[s:t]是a[l:r]的子序列。现在有q个询问,每个询问给定两个数l和r,1≤l≤r≤n,求a[l:r]的不同子序列的最小值之和。例如,给定序列5,2,4,1,3,询问给定的两个数为1和3,那么a[原创 2017-08-17 09:17:54 · 1477 阅读 · 0 评论 -
[题解]bzoj3600 没有人的算数
Description Solution%%%黄学长代码:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=500010;int n,m,mx[maxn<<2],pos[maxn];double val[maxn];template<typename T>inlin原创 2017-08-17 09:53:38 · 439 阅读 · 1 评论 -
[题解]codeforces413e Maze 2D
题目:戳这里 题目大意: 给定一个2∗n2*n的地图,某些地方是障碍,只能上下左右走,多组询问两点直接的距离。n≤2∗105n\leq2*10^5Solution线段树维护区间左上到右上、左下到右上、左上到右下、左下到右下的最小距离和区间两端的四个格子是否是障碍即可。合并的时候稍微有点麻烦。代码:#include<cstdio>#include<cstring>#include<algori原创 2017-08-17 09:59:40 · 444 阅读 · 0 评论 -
[题解]bzoj3878 AHOI2014 奇怪的计算器
Description【故事背景】 JYY有个奇怪的计算器,有一天这个计算器坏了,JYY希望你能帮助他写一个程序来模拟这个计算器的运算。 【问题描述】 JYY的计算器可以执行N条预设好的指令。每次JYY向计算器输入一个正整数X,计算器就会以X作为初始值,接着依次执行预设的N条指令,最后把最终得出的结果返回给JYY。 每一条指令可以是以下四种指令之一:(这里a表示一个正整数。) 1、+a:表原创 2017-08-17 10:08:03 · 684 阅读 · 0 评论 -
[题解]bzoj4719 NOIP2016天天爱跑步
Description小c同学认为跑步非常有趣,于是决定制作一款叫做《天天爱跑步》的游戏。?天天爱跑步?是一个养成类游戏,需要玩家每天按时上线,完成打卡任务。这个游戏的地图可以看作一一棵包含 N个结点和N-1 条边的树, 每条边连接两个结点,且任意两个结点存在一条路径互相可达。树上结点编号为从1到N的连续正整数。现在有个玩家,第个玩家的起点为Si ,终点为Ti 。每天打卡任务开始时,所有玩家在第0原创 2017-08-15 08:27:51 · 937 阅读 · 0 评论
分享