2013年5月13日

POJ2777 - Count Color(区间修改&&懒惰标记&&位运算)

摘要: 题目大意 给定一个长度为n的序列A,可以对其进行以下两种操作: 1、“C A B C”把区间[A,B]的值全部修改为C 2、“P A B”查询在区间[A,B]中不同的元素总数 题解 每一种颜色的数值用一个2的幂来表示,父节点的值刚好是两个子节点的并操作,答案就是查询的区间值转换成二进制后1的个数,尼玛调试了好久。。被懒惰标记坑了。。。在查询的时候还需要进行更新。。。因为用了懒惰标记,查询的时候有些... 阅读全文

posted @ 2013-05-13 23:02 仗剑奔走天涯 阅读(243) 评论(0) 推荐(0) 编辑

HDU1698 - Just a Hook(成段替换+懒惰标记)

摘要: 题目大意 给定一个长度为n的序列A,每个元素值初始全部为1,接下来有m个操作,每次给定操作区间[X,Y]和一个值v,表示把AX,AX+1,…AY的值全部修改为v,完成m次在操作之后要求你求出序列的总和 题解 区间修改的模板题。。。需要用到懒惰标记(搞了好久才弄懂o(╯□╰)o)。。。 代码: #include<iostream>#include<cstdio>#include<cstring>#i... 阅读全文

posted @ 2013-05-13 22:26 仗剑奔走天涯 阅读(180) 评论(0) 推荐(0) 编辑

POJ2828 - Buy Tickets

摘要: 题目大意 有n个陆续去售票口排队买票,每个人都会插队,第i个人会插到位置为pos[i]的人的后面,问最后队列的情况 题解 我们可以发现,对于第n个人,它插入的位置就是他最终站的位置,因此我们从第n个人开始处理,对于第i个人,找到第pos[i]+1个空位插入即可,然后空位减少一个,查找空位和对空位数量进行修改刚好可以用线段树来处理 代码: #include<iostream>#include<cst... 阅读全文

posted @ 2013-05-13 21:50 仗剑奔走天涯 阅读(164) 评论(0) 推荐(0) 编辑

HDU2795–Billboard(单点修改&&区间最值)

摘要: 题目大意 给定一个大小为h*w的矩形和n个子矩阵,大小分别为1*w1,1*w2,1*w3,..1*wn。要求你把n个子矩阵按给出顺序依次放置在大矩阵中(如果能够放入的话),使得放置的位置尽量靠顶端,如果有几种情况符合条件的话,选择最靠左的位置放置,要求你输出每个子矩阵放置的位置的行数,如果不能能放置则输出-1 题解 线段树的单点修改和区间最值问题,把每一行作为线段树的一个叶子结点,每个叶子结点的初... 阅读全文

posted @ 2013-05-13 21:17 仗剑奔走天涯 阅读(254) 评论(0) 推荐(0) 编辑

导航