bzoj 5185 Lifeguards - 动态规划 - 贪心
显然被包含的区间一定不优。再加上被包含的区间对计数不友好。直接把它删掉。
注意到题目说恰好,其实是骗人的。多删几个也不会影响(删太多了就有影响了)。
按照右端点排序,然后用$f[i][j]$表示考虑前$i$个区间,已经选了删掉$j$个。
考虑转移,第一种情况是第$i$个区间不选,直接通过$i - 1$转移。
第二种情况是要选$i$。然后要计算贡献。这时考虑上一个选择的是什么?
- 如果和第$i$个区间有相交,那么显然选择左端点最小的一个和当前区间相交的线段作为上一个。然后中间的线段全部删掉(因为它们被包含了。)。答案补上这个区间覆盖不到的但当前区间能够覆盖的地方。(如果上一个不是选的这个区间也无妨,因为这样一定没有下面这样的转移优)
- 否则从左端点最小的一个区间的前一个区间转移。答案加上当前区间长度。
Code
/**
* bzoj
* Problem#5185
* Accepted
* Time: 1140ms
* Memory: 43876k
*/
#include <bits/stdc++.h>
using namespace std;
typedef bool boolean; typedef class Segment {
public:
int l, r; boolean operator < (Segment b) const {
if (r ^ b.r) return r < b.r;
return l < b.l;
}
}Segment; const int N = 1e5 + , K = ; int n, m, k;
Segment* bs;
Segment* ss;
int f[N][K]; inline void init() {
scanf("%d%d", &n, &k);
bs = new Segment[(n + )];
ss = new Segment[(n + )];
for (int i = ; i <= n; i++)
scanf("%d%d", &bs[i].l, &bs[i].r);
} inline void solve() {
sort(bs + , bs + n + );
for (int i = ; i <= n; i++) {
if (i == || bs[i].r != bs[i - ].r)
ss[++m] = bs[i];
else
k--;
} int mil = (signed) (~0u >> );
n = ;
for (int i = m; i; i--) {
if (ss[i].l < mil)
bs[++n] = ss[i], mil = ss[i].l;
else
k--;
}
sort(bs + , bs + n + );
k = max(k, );
memset(f, 0x80, sizeof(f[]) * (m + ));
int p = ;
f[][] = ;
for (int i = ; i <= n; i++) {
while (p <= i && bs[p].r < bs[i].l)
p++;
assert(p <= i);
for (int j = ; j <= k; j++)
f[i][j] = max(f[i][j], f[i - ][j - ]);
f[i][k] = max(f[i][k], f[i - ][k]); for (int j = ; j <= k; j++) {
int cj = min(j + i - p - , k);
if (p ^ i)
f[i][cj] = max(f[i][cj], f[p][j] + bs[i].r - bs[p].r);
cj = min(cj + , k);
f[i][cj] = max(f[i][cj], f[p - ][j] + bs[i].r - bs[i].l);
}
}
printf("%d\n", f[n][k]);
} int main() {
init();
solve();
return ;
}
bzoj 5185 Lifeguards - 动态规划 - 贪心的更多相关文章
- BZOJ 1029 建筑抢修 贪心+堆
又搞了一晚上OI,编了两道BZOJ和几道NOI题库,临走之前写两篇感想 noip越来越近了,韩大和clove爷已经开始停课虐我们了... 1029: [JSOI2007]建筑抢修 Time Limit ...
- [bzoj 2151]种树(贪心)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2151 分析:原型是bzoj 1150(CTSC 2007) 首先DP无法下手,想到贪心.想到贪 ...
- BZOJ.5397.circular(随机化 贪心)
BZOJ 感觉自己完全没做过环上选线段的问题(除了一个2-SAT),所以来具体写一写qwq. 基本完全抄自remoon的题解qwq... (下标从\(0\sim m-1\)) 拆环为链,对于原线段\( ...
- hdu 1257 最少拦截系统(动态规划 / 贪心)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- 洛谷P1095守望者的逃离题解-伪动态规划/贪心
链接 题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很 ...
- 二叉树遍历问题、时间空间复杂度、淘汰策略算法、lru数据结构、动态规划贪心算法
二叉树的前序遍历.中序遍历.后序遍历 前序遍历 遍历顺序规则为[根左右] ABCDEFGHK 中序遍历 遍历顺序规则为[左根右] BDCAEHGKF 后序遍历 遍历顺序规则为[左右根] DCBHKGF ...
- BZOJ.3252.攻略(贪心 长链剖分/线段树)
题目链接 贪心,每次选价值最大的一条到根的链.比较显然(不选白不选). 考虑如何维护这个过程.一个点的价值选了就没有了,而它只会影响它子树里的点,可以用DFS序+线段树修改.而求最大值也可以用线段树. ...
- BZOJ.4245.[ONTAK2015]OR-XOR(贪心)
题目链接 从高到低位贪心,判断答案的该位能否为0. 求一个前缀和sum.对于最高位,答案的这一位可以为0当且仅当至少存在m个位置满足sum[i]在这一位上为0. 注意sum[n]这一位必须为0. 如果 ...
- BZOJ 3143 游走(贪心+期望+高斯消元)
一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分 ...
随机推荐
- poj2342 Anniversary party
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8028 Accepted: 4594 ...
- 6.1 Pandora 实操 - 数据收集
添加机器 添加机器命令,在 linux 机器上执行此命令 添加成功 添加收集器 采集机器数据 解析数据 转换数据 发送数据 接着,下一步即,成功创建收集任务. 分发机器 确认收集人物,绑定到机器上. ...
- common lisp 里的几个操作符(2)
集合 (Set) member 函数 默认使用 eql比较对象,可传入关键字参数 :test,作为比较的函数.关键字参数 :key,指定在每个元素上应用这个函数. > (member 2 '(( ...
- linux 压缩和解压
xz 压缩和解压 tar -Jcvf backup.tar.xz backup/ tar -Jxvf backup.tar.xz 加参数 p,使文件保持原来的权限. tar -Jcvpf timesh ...
- 用js实现二维数组的旋转
我最近因为做了几个小游戏,用到了二维数组,其中有需求将这个二维数组正翻转 90°,-90°,180°. 本人是笨人,写下了存起来. 定义的基本二位数组渲染出来是这种效果. 现在想实现的结果是下面的效果 ...
- Bom 字符串的问题
不含 BOM 的 UTF-8 才是标准形式",的确是这样,无BOM使用得更多些,所以个人还是推荐一般情况下用无BOM的形式吧,除非有问题的时候,再考虑换有BOM的.Windows系统保存的都 ...
- word简单优化--提高效率
1.文件 ---选项---校对(去掉下面这些项) 2.点击自动更正,去掉如下 3.文件--选项--保存
- 深入理解Spring AOP之二代理对象生成
深入理解Spring AOP之二代理对象生成 spring代理对象 上一篇博客中讲到了Spring的一些基本概念和初步讲了实现方法,当中提到了动态代理技术,包含JDK动态代理技术和Cglib动态代理 ...
- selenium定位下拉框
下拉选择框(Select) <div> <p>下拉选择框框 Select</p> <select id="proAddItem_kind" ...
- Redis入门到高可用(十五)—— GEO
一.简介 二.应用场景 三.API 1.geoadd 2.geopos 3.geodist 4.georadius 四.相关说明