随笔分类 - 数据结构—线段树
1
摘要:题目链接题意:有一个长度 n 的序列,初始染色2,有两种操作,P x ,y ,z,区间x---y染色为z,另一种Q x,y,查询区间 x -- y 有几种颜色,并输出,会覆盖分析:lz[]为0,表示下面颜色不统一,统一是>0; f[]表示该节点下有多少种颜色,是30种颜色的二进制表示。刚开始做时,用...
阅读全文
摘要:转载自:http://blog.csdn.net/shiqi_614/article/details/8228102之前做了些线段树相关的题目,开学一段时间后,想着把它整理下,完成了大牛NotOnlySuccess的博文“完全版线段树”里的大部分题目,其博文地址Here,然后也加入了自己做过的一些题...
阅读全文
摘要:hdu 3867Light and Shadow(线段扫描 极角排序)转载自:http://blog.csdn.net/accry/article/details/6676009题意:原子弹爆炸,一些互不相交的线段,求能辐射到的线段个数(可以将原子弹爆炸点视为泛光源)分析:以辐射源为中心对周围的点按...
阅读全文
摘要:题目链接题意:给定n长的序列 m个操作序列默认为 1, 2, 3···n操作1:D [l,r] 把[l,r]区间增长 :( 1,2,3,4 进行 D [1,3]变成 1,1,2,2,3,3,4 )操作2:Q [l,r] 问区间[l,r] 上出现最多次数的数 的次数分析:会线段树,但是做题的时候没想到...
阅读全文
摘要:题目链接题意:给出n个矩形,每个矩形给左下 和 右上的坐标,求围成的周长的长度。分析:首先感谢大神的博客,最近做题经常看大神的博客:http://www.cnblogs.com/kuangbin/沿x轴离散化。和之前的矩阵面积并有点像。但是一定要去重,否则会错 1 #include 2 #in...
阅读全文
摘要:题目链接题意:给一些矩形,给出长和高,其中长是用区间的形式给出的,有些区间有重叠,最后求所有矩形的面积。分析: 给的区间的范围很大,所以需要离散化,还需要把y坐标去重,不过我试了一下不去重 也不会出错,所有的区间都能列出来,只是在查找的时候费点事。给的矩形相当于在同一水平线上的,也就是y1坐标相当于...
阅读全文
摘要:题目链接题意:中文题意。分析:纯手敲,与上一道题目很相似,但是刚开始我以为只是把cnt》=0改成cnt>=2就行了,、但是后来发现当当前加入的线段的范围之前 还有线段的时候就不行了,因为虽然现在都不等于2,但是之前的那个线段加上现在的已经覆盖2次了。 1 #include 2 #include...
阅读全文
摘要:题目链接题意:给定n个矩形,求面积并,分别给矩形左上角的坐标和右上角的坐标。分析:映射到y轴,并且记录下每个的y坐标,并对y坐标进行离散。然后按照x从左向右扫描。 1 #include 2 #include 3 #include 4 #include 5 #include 6 ...
阅读全文
摘要:题目链接题意:成段染色,初始为0,每次改变一个区间的颜色,求最后每种颜色分别有多少段。颜色按照从小到大输出。分析:改变了代码的风格,因为看了学长的博客。直接用数组,可以只是记录节点的编号,因为节点编号确定了,则l,r也就确定了。 1 #include 2 #include 3 #include ...
阅读全文
摘要:题目链接题意:只有这两种操作Cabc" means addingcto each ofAa,Aa+1, ... ,Ab. -10000 ≤c≤ 10000."Qab" means querying the sum ofAa,Aa+1, ... ,Ab.代码风格更新后: 1 #include 2 #...
阅读全文
摘要:题目链接题意: n个挂钩,q次询问,每个挂钩可能的值为1 2 3, 初始值为1,每次询问把从x到Y区间内的值改变为z。求最后的总的值。分析:用val记录这一个区间的值,val == -1表示这个区间值不统一,而且已经向下更新了,val != -1表示这个区间值统一, 更新某个区间的时候只需要把这个区...
阅读全文
摘要:题目链接题意:有N个人排队,给出各个人想插队的位置和标识,要求输出最后的序列。分析:因为之前的序列会因为插队而变化,如果直接算时间复杂度很高,所以可以用线段树逆序插入,把序列都插到最后一层,len记录该区间里还剩余多少位置,插入的时候就插到剩余的第几个位置,比如1,2已经插入了,如果再想插入第3个位...
阅读全文
摘要:题目链接中文题意,与上题类似。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 const int maxn = 200000+10; 8 using namespace std; 9 int a[m...
阅读全文
摘要:题目链接线段树掌握的很差,打算从头从最简单的开始刷一波, 嗯。。就从这个题开始吧! 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 const int maxn = 50000+10; 8 using...
阅读全文
摘要:题目链接题意:给一个m*n的矩阵, 其中一些格子是空地(F), 其他是障碍(R)。找一个全部由F组成的面积最大的子矩阵, 输出其面积乘以3的结果。思路:如果用枚举的方法,时间复杂度是O(m^2 n^2);因为不但要枚举每一个点,而且矩阵的大小不知道,所以还要枚举长和宽。可以通过枚举每一个点,求该点所...
阅读全文
摘要:题目链接非原创 原创地址:http://blog.csdn.net/jingqi814/article/details/26117241题意:输入n座山的信息(山的横坐标,高度,山底宽度),计算他们的轮廓线,即露出来的表面边长,有些山是重叠的不计。空白地带不计,每座山都是等腰三角形。分析:大白书P4...
阅读全文
摘要:题目:http://poj.org/problem?id=2777区间更新,比点更新多一点内容, 详见注释, 参考了一下别人的博客。。。。参考博客:http://www.2cto.com/kf/201402/277917.html 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn = 100000 + 10; 7 8 bool mark[35]; 9 struct node 10 { 11 int l, r, kind; 12 }tr[max...
阅读全文
摘要:题目:http://poj.org/problem?id=2886题意:N个孩子顺时针坐成一个圆圈且从1到N编号,每个孩子手中有一张标有非零整数的卡片。第K个孩子先出圈,如果他手中卡片上的数字A大于零,下一个出圈的是他左手边第A个孩子。否则,下一个出圈的是他右手边第(-A)个孩子。第p个出圈的孩子会得到F(p)个糖果,F(p)为p的因子数。求得到糖果数最多的是哪个孩子及得到多少糖果。跟上一个 约瑟夫环的题目很像,就是加了一个反素数。虽然我还是不太理解,但还是无耻的从别人的结题报告上把反素数表copy了下来。。。 1 #include 2 #include 3 #include 4 #in...
阅读全文
摘要:题目:http://poj.org/problem?id=2828题意:有n个人插队,给定插队的先后顺序和插在哪个位置还有每个人的val,求插队结束后队伍各位置的val。线段树里比较简单的题目了,点的更新。。思想是 从后向前插入,用num存储 每一段剩余的位置。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int maxn = 200000 + 10; 8 int n, pos[maxn], val[maxn], ans[maxn]; 9 10 struct...
阅读全文
摘要:题目:http://poj.org/problem?id=2528题意:有一面墙,被等分为1QW份,一份的宽度为一个单位宽度。现在往墙上贴N张海报,每张海报的宽度是任意的,但是必定是单位宽度的整数倍,且 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn = 10000+10; 7 int n, cnt; 8 int map[2*maxn][2], ans, f[2*maxn]; 9 struct node 10 { 11 int l, r, n; //n代表是哪种颜色...
阅读全文
1

浙公网安备 33010602011771号