
线段树
jchalex
善待人,严做事,无节操
展开
-
hdu - 4747 - Mex(二分+线段树)
题意:有一个序列a[],mex(L, R)表示区间a在区间[L, R]上第一个没出现的最小非负整数,对于序列a[],求所有的mex(L, R)的和(1 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4747——>>线段树就是如此的神~求出所有的mex(1, i);接着删去第1个结点,就是所有的mex(2, i);接着再删去第1个结点,就是原创 2013-09-18 12:51:23 · 1920 阅读 · 0 评论 -
hdu - 4973 - A simple simulation problem.(线段树单点更新 + 区间更新)
题意:初始序列 1, 2, ..., n,m次操作(1 D l r,将区间[l, r]中的所有数复制一次;Q l r,输出区间[l, r]中同一数字个数的最大值。(0 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4973——>>因为区间内数字是依次递增的,所以可以以数字为叶建线段树去维护区间同一数字个数最大值。。原查询区原创 2014-10-29 03:06:31 · 1211 阅读 · 3 评论 -
hdu - 5023 - A Corrupt Mayor's Performance Art(线段树)
题意:一长由N小段组成的长条,每小段的初始颜色为2。现执行M个操作,每个操作是以下两种中的一种(0 P a b c ——> 将段a到段b涂成颜色c,c是1, 2, ... 30中的一种(0 Q a b ——> 问段a到段b之间有哪几种颜色,按颜色大小从小到大输出(0 ——>>很明显此题可以用线段树实现Mlog(N)的解法。。(看完输入就敲题了,把初始颜色设为了无,耗了好多时间:看题要仔原创 2014-09-21 11:00:02 · 1098 阅读 · 0 评论 -
poj - 3321 - Apple Tree(dfs+线段树)
题意:一棵苹果树有n个结点,开始时每个结点有一个苹果,这n个结点由m条枝连起来,现执行以下两种操作,C x:如果结点x原来有苹果,则把它摘掉,如果没有,则长出1个苹果。Q x:询问以x为根的树的苹果共几个?题目链接:http://poj.org/problem?id=3321——>>求一棵原创 2014-04-27 20:36:48 · 723 阅读 · 0 评论 -
hdu - 1823 - Luck and Love(线段树)
题意:Wiskey招女友,每个女生看其身高、活泼度和缘分值。现在执行两种操作,1、I,加入一位女生的身高,活泼度和缘分值;2、Q,查询身高在H1, H2之间,活泼度在A1, A2之间的女生的最高缘分值。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1823——>>查询某个区间的最值,若是一维,可用RMQ解法。。也可用线段树解法。。现在要查原创 2014-04-24 13:40:43 · 1410 阅读 · 0 评论 -
URAL - 1019 - Line Painting(离散化+线段树)
题意:在区间[0, 10^9]上染黑白两种颜色,问最后最长的白段的起点和终点。(初始区间全白)题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1019——>>看数据可知要离散化。。而题意可知可用线段树去解决。。对于区间[x, y],因为点到点,不是段到段,所以,可让x表示[x, x+1],整个区间的最后一点不表示,转化成段到段来解决。原创 2014-04-23 16:28:31 · 1036 阅读 · 0 评论 -
poj - 1151 - Atlantis(离线化+扫描线+线段树)
题意:求n个矩形面积的并(1 题目链接:http://poj.org/problem?id=1151——>>思路是这样的,提取出所有矩形的所有纵向边作为扫描线,从左往右扫描,每处理一条扫描线时,下一条扫描线与当前扫描线的距离乘上当前覆盖到纵向边长度是一个部分面积,将这些面积累加起来就是n个矩形面积的并。。而当前覆盖到纵向边长度可通过线段树来维护。。空间上则要求先对所有点的纵坐标进行离散原创 2014-02-21 02:01:12 · 2798 阅读 · 0 评论 -
poj - 1177 - Picture(离线化+扫描线+线段树)
题意:求n个矩形周长的并(0 题目链接:http://poj.org/problem?id=1177——>>思路与poj1151矩形面积的并类似,提取出所有矩形的所有纵向边作为扫描线,从左往右扫描,每处理一条扫描线时,下一条扫描线与当前扫描线的距离乘上当前已覆盖纵向边所包含的连续线段数再乘上2是一个部分周长(横的周长),当前已覆盖纵向边的长度与上一次扫描时覆盖纵向边的长度的差的绝对值则是此原创 2014-02-21 02:12:25 · 1949 阅读 · 0 评论 -
zoj - 1610 - Count the Colors(线段树)
题意:在[0, 8000]上染色n次,每次染色的区间为[x1, x2],颜色为c,问最后每种颜色有多少段(所有数字在[0, 8000]内)。题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=610——>>对于端点x1, x2,对应成区间段[x1+1, x2],接着就染染色,线段树处理一下就好了。。。#^_^S原创 2014-01-26 17:21:15 · 1295 阅读 · 0 评论 -
poj - 2777 - Count Color(线段树)
题意:长为L的区间,初始每个单位区间都为颜色1,执行两种操作,C A B C,将区间[A, B]染为颜色C,P A B,询问区间A, B]有多少种颜色(1 题目链接:http://poj.org/problem?id=2777——>>不错的题目,因为颜色的各类只有30种,所以每种颜色可以用1移位来表示,设col[o]表示线段树结点o的颜色状态,那么col[o]的低30位有多少个1就表示有多原创 2014-01-26 12:26:30 · 1013 阅读 · 0 评论 -
poj - 3468 - A Simple Problem with Integers(线段树(区间更新))
题意:给出一个数组A,数组来度为N,接着来Q个操作,操作有两种,C a b c:将数组A在[a, b]上的值全部加c,Q a b:询问数组A在[a, b]上的区间和。题目链接:http://poj.org/problem?id=3468——>>数据量之大,直接for统计与修改的结果该是TLE,这也正是线段树区间修改的模版题,照着白书加强版的思路与提示WA了十余次也没过,最后换了下传增量的写原创 2013-02-05 16:49:47 · 800 阅读 · 0 评论 -
hdu - 2795 - Billboard(线段树)
题意:一块宽w高h的板,有n张纸条,线条高度为1,第i张纸条的宽度为wi,将这n张纸条按顺序从上到下,从左到右贴在那块板上,输出各纸条贴在了第几行,无法贴的输出-1。 (1 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795——>>线段树过,将块的高度作为线段树区间,维护各结点对应的最大容纳量就好。开始建树时我直接来了个build(1,原创 2013-02-06 17:37:43 · 849 阅读 · 0 评论 -
poj - 2528 - Mayor's posters(线段树(区间更新))
题意:一条固定高度与宽度的长长的(10000000)展栏,n(1 上候选人要贴n张海报到栏上,每张海报高度与展栏高度一样,但长度不定,按顺序先后贴上n张海报,输入各张海报的左端值与右端值[l, r],表示将海报贴在此区间,问最后总共能看见多少张海报?(看到就行,不用看全)题目链接:http://poj.org/problem?id=2528——>>离散化线段树来做,却不想离散化写了大半原创 2013-02-07 21:43:09 · 2912 阅读 · 4 评论 -
hdu - 1754 - I Hate It(线段树(单点更新))
题意:在每个测试的第一行,有两个正整数 N 和 M ( 0 学生ID编号分别从1编到N。 第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩。 接下来有M行。每一行有一个字符 C (只取'Q'或'U') ,和两个正整数A,B。 当C为'Q'的时候,表示这是一条询问操作,它询问ID从A到B原创 2013-02-06 15:41:40 · 1905 阅读 · 0 评论 -
hdu - 1698 - Just a Hook(线段树(区间更新))
题意:一条DOTA链钩的长度为N,恰恰分成N节,每节价值为1,接着来Q次操作,X Y Z,把[X, Y]节上的价值设为Z,最后输出这条链钩的总价值。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698——>>线段树区间修改。#include #include using namespace std;const int maxn原创 2013-02-07 01:26:57 · 601 阅读 · 0 评论 -
acd - 1427 - Nice Sequence(线段树)
题意:一个由n个数组成的序列(序列元素的范围是[0, n]),求最长前缀 j ,使得在这个前缀 j 中对于任意的数 i1 = i2 在前 m 个数里出现的次数 - k (1 ≤ n ≤ 200 000, 0 ≤ k ≤ 200 000)。题目链接:http://acdream.info/problem?pid=1427——>>第一个前缀 j 不满足,那么后面的前缀一定不满足(因为前缀 j原创 2014-11-01 01:48:12 · 1070 阅读 · 0 评论