
线段树
Accagain
微博:http://weibo.com/u/3871485516
展开
-
线段树 端点更新 hdu-1166-敌兵布阵
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 题目大意:有n个区间,端点更新,查询一段空间内的士兵总和。 解题思路:线段树的端点更新。 代码://端点更新#includeusing namespace std;#define lson l,m,rt<<1 //建树,查询,更新都会用到#defin原创 2013-03-02 15:57:14 · 833 阅读 · 0 评论 -
区间线段树-poj 3468-A Simple Problem with Integers
题目链接:http://poj.org/problem?id=3468题目意思:有一个整数序列,有两种操作,C a b c 把区间【a,b】内所有数都加上c,Q a b 查询区间【a,b】内所有数的和。解题思路:简单区间更新,坑了很久。发现了以前的一些错误。对每个区间一个va表示是否已经下传了,下传时要更新左右儿子,不能表示当前区间是否已经更新,否则会出错。比如:1原创 2013-12-30 17:33:30 · 1072 阅读 · 0 评论 -
dp+线段树优化-hdu-3698-Let the light guide us
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3698题目意思:给两个n*m矩阵,一个是t矩阵,一个是f矩阵。在矩阵中每行选择一个位置,使相邻两行位置满足关系|j-k|解题思路:dp+线段树优化。dp很容易想到。dp[i][j]=min(dp[i-1][k]+t[i][j]) //其中k和j满足上述关系。本题的关键是将原创 2013-10-06 17:43:20 · 1122 阅读 · 0 评论 -
线段树-hdu-Gangster
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4107题目大意:有n个数,m个操作,给一个p,每个操作a,b,c,作用于a~b区间的数,如果该数大于等于p,则该树+2*c,否则+c.求所有操作完成后,数组中的数。解题思路:线段树区间更新,lazy标记。线段树维护一个区间的最大值Max,区间的最小值MIn。以及整个区间增加的原创 2013-10-03 21:42:35 · 1021 阅读 · 0 评论 -
线段树-hdu-4339-Query
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4339题目意思:给两个字符串,有两种操作。1、改变一字符串的某个位置的一个字符。2、查找某一位置开始的最大的连续的两串相同的字符的个数。解题思路:线段树维护两个值:该区间最左边连续的最大值,最右边连续的最大值。每做一道题,停下思考,抽象出一点体会。代码:#in原创 2013-08-08 15:19:21 · 946 阅读 · 0 评论 -
线段树(端点更新) hdu-4521 小明系列问题——小明序列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4521题目意思:求出相邻位置之差大于d的最长递增子序列的长度。解题思路:由于n有10^5,用普通的dp,算法时间复杂度为o(n^2),肯定会超时。所以用线段树进行优化。线段树维护的是区间内包含某点的最大满足条件的长度,叶子节点以该元素结尾,最长长度。至于相邻两项隔d个位置原创 2013-05-11 21:49:19 · 1108 阅读 · 0 评论 -
线段树(区间更新) hdu-1698-Just a Hook
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 题目意思:有n个棒子,每个棒子都有一个值,q个更新,每次更新时有三个参数x,y,z表示,把x-y区间内的棒子的值改成z,为最后所有棒子的值的总和是多少。 解题思路:建一个n大小的线段树,用sum[rt]表示该节点区间的值总和,value[rt]表示该区间当前所处的状态原创 2013-04-05 15:22:17 · 1033 阅读 · 0 评论 -
线段树单点更新+反素数 poj-2886-Who Gets the Most Candies
题目链接:http://poj.org/problem?id=2886 题目意思:编号为1-n的n个人逆时针围成一圈玩游戏,每个人有一个非零的数的卡片,开始从第k个人开始,一次出圈,当第i个人出圈时,如果他的卡片上的数正数p,则他左边的第p个人下个出圈,如果他卡片上的数是负数p,则他右边的第p个人下个出圈。当第i个人出圈时,他获奖励是F(i),F(i)为i的正约数的个数。求获得的最原创 2013-04-04 22:00:47 · 1152 阅读 · 0 评论 -
线段树端点更新 poj 2828 Buy Tickets
题目链接:http://poj.org/problem?id=2828 题目意思:有n个人排队,每个人有个pos值,和value值,表示他可以插到第pos个人的后面,输出最后的队形序列。 解题思路:如果顺着插的话,要移动后面的队列,如果用链表的话,找到插入的位置很费时。如果逆着考虑的话,当前的人插到恰好有pos个空位的最小的地方,就很简单。用线段树维护区间内空位原创 2013-04-04 10:25:00 · 1130 阅读 · 0 评论 -
hdu 1394 Minimum Inversion Number(线段树 单点更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题目大意:给由0-n-1这n个数构成的n个数,定义一个逆序数(前面的比后面的大的数的个数)。把第一个数移到最后的位置,得到一个新的序列,得到一个新的逆序数。一共可以移动n-1次,得到n个逆序数,问这n个逆序数最小的是多少。 解题思路:1、先求出第一个序列的逆序数。原创 2013-03-30 10:49:01 · 1029 阅读 · 0 评论 -
线段树单点更新 poj 2182 Lost Cows
题目链接:http://poj.org/problem?id=2182题目意思:已知1~n组成的一个序列中每个数的顺序数(也就是告诉前面有几个小于他的数),求该序列。解题思路:如果从后往前考虑,并且计算完后就把后面的去掉,当前的顺序数,也即是该数在去掉后面数后的序列中的大小位置。在一个序列中查找第几大的数可以借用线段树来做。区间维护的是【l,r】间有还剩有多少个数。原创 2014-01-10 19:28:56 · 1207 阅读 · 0 评论