ACM_线段树及其扩展
文章平均质量分 85
温姑娘
这个作者很懒,什么都没留下…
展开
-
2017 ACM-ICPC 亚洲区(南宁赛区)网络赛:Overlapping Rectangles
线段树求矩阵面积并原创 2017-09-25 18:28:43 · 439 阅读 · 0 评论 -
2017 ACM-ICPC 亚洲区(南宁赛区)网络赛:The Heaviest Non-decreasing Subsequence Problem
线段树区间查询加单点更新原创 2017-09-25 18:36:09 · 346 阅读 · 0 评论 -
51Nod 1174:区间中最大的数
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1174区间最大值查询,挺简单的,原来学习了线段树,很容易可以解决这个问题,不过看到别人用ST(Sparse Table)算法来解决这个问题,这个没学过,比较好奇就看了一下。过程也挺简单的,就是动态规划的思想。有一个dp数组。dp[i原创 2017-09-29 15:48:45 · 292 阅读 · 0 评论 -
HDU 1832:Luck and Love(二维线段树)
解题思路:这个题目是一个二维线段树(属于树套树)的入门题,一维每一行用来代表一个身高区域;二维每一列用来代表一个或与都区域;整个二维数组维护的是缘分值的最大值。一维的线段树如果操作,二维的线段树也怎么操作。每次就是线段树先考虑一维的,然后在考虑二维的。题目给出的活跃度和缘分值都明确说明是一位小数,因此我们将活跃度放大10倍,这样就可以维护整型的区间。原创 2017-10-21 20:17:31 · 284 阅读 · 0 评论 -
POJ 3468:A Simple Problem with Integers
题目链接:http://poj.org/problem?id=3468线段树区间更新,区间查询模板题。AC代码:#include #include #include #define lchild left,mid,root<<1#define rchild mid+1,right,root<<1|1using namespace std;const i原创 2017-11-01 11:43:49 · 204 阅读 · 0 评论 -
HDU 1689:Just a Hook(区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698题目翻译:给出N个位置,开始每个位置都是1,然后给出Q个操作,其格式为A,B,C.代表把区间【A,B】的值都修改成C,最后求整个区间的和。AC代码:#include #include #include #define lchild left,mid,root原创 2017-11-01 20:35:19 · 264 阅读 · 0 评论 -
POJ 2528:Mayor's posters(线段树区间更新+离散化)
题目链接:http://poj.org/problem?id=2528题目翻译:有一块宽度挺大的面板(宽度1e7),然后往墙上粘贴和面板相同高度的海报,但是宽度可能不同。有N张海报,给出N张海报的起始位置和终止位置。问最后面板上可视的海报有多少个?解题思路:原来每想那么多,还是普通线段树写,宽度1e7,真的过不去。呵呵,感觉自己好傻好天真。然后网上找了题原创 2017-11-02 15:34:45 · 249 阅读 · 0 评论 -
CDOJ 360:Another LCIS(区间更新+区间合并)
题目链接:http://acm.uestc.edu.cn/#/problem/show/360题目翻译:给出N个数字,Q个操作,如果输入操作类型是a,则【L,R】区间中的数字都要加上V。否则就查询【L,R】区间内最长连续递增子序列的长度。一个区间,其两个子区间依据边界值对两个区间进行合并。Max数组维护任意一个区间的最长连续子序列长度。lnum数组保存一个区间左边界的数原创 2017-11-02 20:19:15 · 370 阅读 · 0 评论 -
newCoder Wannafly挑战赛4:D 树的距离(补)
题目链接:https://www.nowcoder.com/acm/contest/35/D解题思路:DFS序+线段树。DFS序就是按照深搜给节点进行编号,设立in,out数组,in[i]代表进入节点i的时间,out[i]代表出节点i的时间。则我们按照节点的搜索顺序构建线段树,则in[i]到out[i]是节点i的所有子节点,我们求出所有节点到根节点的距离,则X的子节原创 2017-11-30 19:04:12 · 330 阅读 · 0 评论 -
线段树讲解
一.线段树概念及说明线段树(Segment Tree):线段树是一种二叉搜索树,其最擅长的是进行区间处理操作,通常树上的每个节点都维护一个区间,线段树树根维护的是整个区间。每个子节点维护的是其父节点所维护区间二等分后的两个区间的其中之一。线段树节点的结构如图1所示:图1给出一个【1,11】的区间,构建线段树,如图2所示。图2通常构建【1,N】的线段树原创 2018-02-02 17:37:43 · 1539 阅读 · 2 评论 -
2017 Multi-University Training Contest - Team 2:1003 Maximum Sequence(贪心+线段树)
贪心+线段树原创 2017-07-27 17:13:53 · 340 阅读 · 0 评论 -
POJ 2886:Who Gets the Most Candies?
线段树+约瑟夫环+反素数原创 2017-07-25 21:27:33 · 380 阅读 · 0 评论 -
POJ 2104:K-th Number (划分树)
点击打开题目链接题目意思,给出n和m,然后第二行给出n个数,接下来有m个循环,输入a,b,k,询问a,b这个区间中的第k小值是谁。看到后也没思路,网上百度了一下,用划分树、主席树去做,这两个东西只听说过,但是没有用过,昨天2017多校联合求区间第k大树,中间实在做不动了(绍兴中学毕业生出的题可真难,ORZ),所以就去学习划分树了,虽然多校那个题目是可以模拟过的,划分树应该怼不过,因原创 2017-08-02 15:54:33 · 319 阅读 · 0 评论 -
HDU 1542:Atlantis
用线段树求矩形面积的并原创 2017-04-09 21:24:02 · 573 阅读 · 2 评论 -
HDU 1556:Color the ball
线段树入门原创 2017-05-14 18:26:23 · 377 阅读 · 2 评论 -
“玲珑杯”线上赛 Round #15 河南专场:G -- 咸鱼拷问
线段树基础题目原创 2017-05-30 19:02:50 · 662 阅读 · 0 评论 -
POJ 2991:Crane
点击打开题目链接挑战程序设计竞赛书本中级篇的一道线段树题目,一开始没有感觉题目和线段树有什么关系。书上直接给出了题目的翻译:有一台起重机,我们把起重机看成由N条线段构依次首尾相接而成,第i条线段的长度为Li,最开始,所有线段都笔直朝上。有C条操作指令,指令i给出两个整数Si和Ai,效果是使线段Si和Si+1之间的角度变成Ai度,其中角度指的是从线段Si开始沿逆时针方向旋转到Si原创 2017-07-12 23:05:49 · 493 阅读 · 0 评论 -
HDU 1394:Minimum Inversion Number
线段树求序列的逆序数原创 2017-07-13 22:27:03 · 323 阅读 · 0 评论 -
HDU 1166:敌兵布阵(线段树入门)
线段树入门原创 2017-07-06 01:16:32 · 391 阅读 · 0 评论 -
HDU 1754:I Hate It
线段树入门原创 2017-07-06 14:17:16 · 387 阅读 · 0 评论 -
HDU 2795:Billboard
点击打开题目链接题目翻译:有一个h*w长度的木板,现在要向上贴n张广告,广告之间不能覆盖,且每一张广告的高度都为1,第i张广告的宽度为w[i]。并且贴广告的规则是每次都铁道最左上方能够贴得下的位置。并输出该行行号。解题方法:用高度来构建线段树,记录left行到right行中的最大留白空间,然后每贴一个广告,就在线段树中插,如果左子树的留白长度大于当前要贴的广告长度,就先查找原创 2017-07-17 19:33:28 · 397 阅读 · 0 评论 -
POJ 2828:Buy Tickets
点击打开题目链接题目翻译:就是往一个队列里面插队,给出一个数n,给出n 个 pos 和 value。将value插入到第pos个人的右侧,如果这个位置已经有人了,则此人占据此位置,后面的人依次后挪一位。解题思路:构建初始构建空的线段树,开辟sum数组,用来记录相应区间的空位个数。由于正着插如果某个位置上有人了,则后面位置上的人要向右挪。这样去考虑题目很复杂,因此可以想着原创 2017-07-18 12:25:37 · 347 阅读 · 0 评论 -
2017 Multi-University Training Contest - Team 4 :Dirt Ratio(二分+线段树)
二分+线段树区间修改+线段树区间查询原创 2017-08-04 16:59:13 · 354 阅读 · 0 评论 -
问题 1439: [蓝桥杯][历届试题]小朋友排队
点击查看题目题目需要不断通过相邻小朋友的交换,使数列变成非递减数列。可知对于某个位置的数,其左侧比其大的数和它必有一次交换,其右侧比其小的数和它必有一次交换。则它交换的次数是左侧比它大的数的个数和右侧比它小的数的个数的和。加入和为x,可知其愤怒值为x*(1+x)/2。所以可以用树状数组求解。当然题目的意思,很明显就是冒泡排序、归并排序这些交换排序也可以满足的。但是冒泡排序的时间复杂度大,不能满足题...原创 2018-04-16 15:18:02 · 527 阅读 · 0 评论