描述春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为 n 的大厦,大厦可以看成由 n 块宽度为1的积木组成,第𝑖块积木的最终高度需要是hi。在搭建开始之前,没有任何积木(可以看成 n 块高度为 0 的积木)。接下来每次操作,小朋友们可以选择一段连续区间[L,R],然后将第 L...
分类:
其他好文 时间:
2014-08-27 20:24:48
阅读次数:
236
题目链接:uva 11983 - Weird Advertisement
题目大意:给定n个矩形,问说有多少区域的面积被覆盖k次以上。
解题思路:将每个矩形差分成两条线段,一段为添加覆盖值1,一段为减少覆盖值1,同时记录两段的高度(横坐标)。然后对纵坐标离散化建立线段树,然后对线段按照高度排序,维护整段区间中覆盖度大于K的长度,乘上高度上的范围即可。
#include
#inclu...
分类:
其他好文 时间:
2014-08-27 18:52:48
阅读次数:
280
你家种一年地的收成暴int!你当是《日人民报》啊!
题意:
雇佣贫农种地(所以是地主喽),每个农民带一种种子,播种在他管理矩形区域,每个单位面积种一粒,区域可能会重合,那么收成高的那粒会将其他的覆盖掉,求最终收成。
分析:
一开始想的是二维线段树set,但是看到面积有sqr(10^6),即使离散化也有sqr(3*10^4),后来想到加权的线段树扫描线求面积并,但是发现覆盖种子不好维护,后来看到别人题解标题:线段树求体积并。
把价格看成高度,那么每粒种子的高度区间就可以看成[0,price),想像一下,这些"...
分类:
其他好文 时间:
2014-08-27 16:36:28
阅读次数:
203
UVA 1423 - Guess
题目链接
题意:给定一个每个区间和的正负,构造一个序列,使得满足这个矩阵
思路:每个区间和等于两个前缀和的差,这样就可以知道每两个前缀和的大小关系,利用拓扑排序可以求出顺序,然后对应要控制不超过|10|,所以从-10开始,大的就+1,然后构造出这个前缀和序列,对应每个ai就等于c[i] - c[i - 1]
代码:
#include ...
分类:
其他好文 时间:
2014-08-27 16:36:18
阅读次数:
220
思路是求出从每一点出发走到终点分别要受到多少伤害,然后和每个怪兽的血量比一下。给一个数组,告了哪些区间需要更新,我需要的就是都更新以后每个点的伤害值是多少。不涉及到区间查询,没必要用线段树或树状数组(据说用了也会超时。。)。如果每个区间都一个for循环把对应的几个数更新了,必然超时。那么这里的技巧就...
分类:
其他好文 时间:
2014-08-27 16:22:58
阅读次数:
186
题目大概都是这样的:
设有N堆沙子排成一排,其编号为1,2,3,…,N(N
dp的方程很显然:
区间DP dp[i][j]=min(dp[i][k]+dp[k+1][j]+cost[i][j]) i
复杂度 N^3
这同时也是一个四边形优化DP的标准形式,对于i到j段的最优值s[i][j]满足: s[i][j-1]
可以减小枚举范围,复杂度N^2...
分类:
其他好文 时间:
2014-08-27 13:04:07
阅读次数:
272
题意:在一条直线上有n个点,取一长度差为x的区间, 规定点必须是区间的端点, 让你找出来最大的x
策略:rt
分析可得:两个相邻点之间的区间要么是两个点的差,要么就是两个点的差的一半,那我们就简单枚举一下就好了
排好序之后再枚举...
分类:
其他好文 时间:
2014-08-27 08:12:04
阅读次数:
209
http://acm.timus.ru/problem.aspx?space=1&num=1303
给出一些区间,选择尽量少的区间能覆盖到[0,m]。
小白p154,典型的区间覆盖问题。一直在想怎么dp。。
首先预处理,先按左端点从小到大排序,若左端点相同右端点从大到小排序,若区间x完全包含y,按照贪心的思想,y是没有意义的,有大区间可以选何必选择小区间。处理完事之后各个区间满足a1...
分类:
其他好文 时间:
2014-08-26 23:03:26
阅读次数:
414
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3668题意:给一个初始值为0的长度为n的区间,给m个约束l,r,a,b,表示从l到r的区间和>=a且 17 #include 18 #include 19 #incl.....
分类:
其他好文 时间:
2014-08-26 22:42:26
阅读次数:
298
UVA 11922 - Permutation Transformer
题目链接
题意:给一个序列,每次操作选择(a,b),把(a,b)序列翻转之后加到末尾,求最终序列
思路:Splay的应用,多一个flip标记,在开头多一个虚拟的0结点,这样每次就利用Splay进行分裂合并即可
代码:
#include
#include
#include
#include
...
分类:
其他好文 时间:
2014-08-26 21:30:16
阅读次数:
405