数据结构-线段树
tzb592825420
这个作者很懒,什么都没留下…
展开
-
zoj3632 Watermelon Full of Water 线段树,dp
n天要保证每天都有西瓜吃,每天都可以买一个西瓜,每天的西瓜有不同的价格且可以吃不同的天数,求最小花费。 dp[i]=min(dp[k]+money[i]),day[k]+k>=i;用线段树维护dp[i]; #include #include #include #include #include #include #include #include #include #include #defi原创 2015-01-10 23:29:20 · 456 阅读 · 0 评论 -
UESTC 1712 Easy Problem With Numbers 除法对和数取模,分解,线段树
附上神牛原版思路: 如果这个题只有乘法,那么你肯定会做吧?线段树更新区间查找区间。 那么有除法呢?当一个数x和m互质的时候,除以x可以改为乘以x的逆元。(至于互质的数求逆元用扩展欧几里德,这个网上可以随便找到) 但是这题并不能保证除的数与m互质吧?什么时候x与m不互质呢?就是x与m含有公因子吧? 那么我们一开始就把m分解,分解出来m有p1,p2,p3,p4...pn原创 2015-10-08 19:51:29 · 621 阅读 · 0 评论 -
poj2828 Buy Tickets
题意:给出一系列插队序列,输出最终的队列、 parse:从后往前处理,用线段树查询并更新第几个空位即可。 #include #include #include #include #include #include #include #include #include #include #include #include #include #define fi first #define se原创 2015-08-21 14:37:48 · 334 阅读 · 0 评论 -
uva11990 线段树套树状数组
题意:给一个1-n的排列,按照某种顺序一些数(其他数顺序不变),输出每次删除之前逆序对的数目。 分析:线段树每个节点表示的一段数字排序,每个节点用树状数组维护删除的点。 #include #include #include #include #include #include #include #include #include #include #define inf 1000000000原创 2015-07-31 15:45:32 · 429 阅读 · 0 评论 -
zoj3813 Alternating Sum 较难的线段树
Alternating Sum Time Limit: 2 Seconds Memory Limit: 65536 KB There is a digit string S with infinite length. In addition, S is periodic and it can be formed by concatenating infinite repeti原创 2015-08-27 00:06:52 · 396 阅读 · 0 评论 -
uva11297 二维线段树
询问矩阵内一块矩阵的最值和单点修改。 #include #include #include #include #include #include #include #include #include #include #define inf 1000000000 #define pi acos(-1.0) #define eps 1e-8 #define seed 131 using names原创 2015-07-31 09:50:25 · 330 阅读 · 0 评论 -
hdu5107 K-short Problem 离线,离散化,线段树
题意:给出n栋楼的坐标和高度,询问 parse:离线处理,对y坐标离散化,把楼和询问按x排序,每询问到x将 #include #include #include #include #include #include #include #include #include #include #include #include #include #define fi first #define se原创 2015-08-22 01:12:43 · 537 阅读 · 0 评论 -
Codeforces 474E Pillars dp+线段树
点击打开链接 好题!!! 思路:找到一条最长的序列,和求最长上升子序列差不多,每一次找前面的最大值n^2会t掉,可以用线段树维护一段高度中的最大值和它对应的下标,h离散化一下。 #include #include #include #include #include #include #include #include #include #include #define inf 100000原创 2015-01-04 00:01:12 · 525 阅读 · 0 评论 -
hdu4391 Paint The Wall 线段树
点击打开链接 #include #include #include #include #include #include #include #include #include #include #define inf 10000000 #define pi acos(-1.0) #define eps 1e-8 #define seed 131 using namespace std; type原创 2015-01-03 17:12:14 · 467 阅读 · 0 评论 -
hdu5172 GTY's gay friends
题意:一个数列,有m组询问l,r,需回答l-r是否为一个1-r-l+1的排列。 分析:n个数为1-n的一个排列需满足两个条件,1.和为(n+1)*n/2,2.所有数不相同。1预处理前缀和即可,2先需处理每个数左边与其最近的相同数的位置pre[i],用线段树维护区间l-r各个数pre[i]的最大值mx,若mx #include #include #include #include #includ原创 2015-02-09 12:00:47 · 502 阅读 · 0 评论 -
Codeforces 444C DZY Loves Colors 线段树
代码中两个pushdown,pushup,update可以合并成一个,每次递归调用update和query都要pushdown; #include #include #include #include #include #include #include #include #include #include #define inf 10000000 #define pi acos(-1.0) #原创 2015-01-11 14:59:31 · 613 阅读 · 0 评论 -
hdu4967 线段树
题意:对一个栈,有三种操作:pop,push,peak(查询当前栈顶元素的值)。但在此题中,每个操作都有时间戳。操作按顺序给出,但如果后面的操作的时间戳小,会把之前,大于该时间戳的所有操作全部取消,即恢复到该时间戳时的状态,执行完该操作后,再把取消的操作重新执行。 但,peak操作不会重新执行,即,对于给定的peak操作,它也会把大于它的时间戳的操作取消,完成自己的查询操作。但,对于后来的小转载 2015-05-22 13:43:12 · 577 阅读 · 0 评论