HDU 6249 Alice’s Stamps
【题目链接】
题目大意:
说有$m$个区间,要求选出不超过$k$个区间,使这些区间覆盖的长度最长,问最长长度是多少。
题解:
所有区间按$R$从小到大排序之后可以进行$dp$。
$dp[i][j]$表示:拿了小于等于$i$个区间,最后一个以坐标小于等于$j$为结尾的最长覆盖长度
假设第$x$个区间作为结尾,那么要分两种情况来考虑:
1.可以是之前的结尾小于第$x$个区间的左端点,这种情况很好解决。
2.也可以是之前区间的结尾在第$x$个区间内部。
第二种情况的话:
不允许在区间内部进行枚举点,否则时间复杂度炸了,可以发现要求的是类似于$dp[j] + i - j$格式的最大值,也就是$i$加上区间上$dp[j]-j$的最大值,因此可以用ST表计算区间最大值。
#include <bits/stdc++.h>
using namespace std; const int maxn = 2100;
int T, n, m, K;
struct X {
int L, R;
int x;
}s[maxn];
int dp[maxn][maxn];
int t[maxn * 4];
int rmq[maxn][15]; bool cmp(const X&a, const X&b) {
return a.R < b.R;
} void ST(int num) {
for (int i = 1; i <= n; i++)
rmq[i][0] = dp[num][i] - i;
for (int j = 1; (1 << j) <= n; j++) {
for (int i = 1; i + (1 << j) - 1 <= n; i++) {
rmq[i][j] = max(rmq[i][j - 1], rmq[i + (1 << (j - 1))][j - 1]);
}
}
} int RMQ(int l, int r) {
int k = 0;
while ((1 << (k + 1)) <= r - l + 1) k++;
return max(rmq[l][k], rmq[r - (1 << k) + 1][k]);
} int main() {
scanf("%d", &T);
int cas = 1;
while(T --) {
scanf("%d%d%d", &n, &m, &K);
for(int i = 1; i <= m; i ++) {
scanf("%d%d", &s[i].L, &s[i].R);
s[i].x = s[i].R - s[i].L + 1;
}
sort(s + 1, s + 1 + m, cmp);
/*
dp[i][j], 拿了 <= i 个,最后一个以坐标 <= j 为结尾
*/
int ans = 0;
ST(0);
for(int i = 1; i <= K; i ++) {
int now = 1;
while(now <= m && s[now].R < i) now ++;
for(int j = i; j <= n; j ++) {
dp[i][j] = 0;
while(now <= m && s[now].R == j) {
dp[i][j] = max(dp[i][j],
s[now].x + dp[i - 1][s[now].L - 1]);
dp[i][j] = max(dp[i][j],
RMQ(s[now].L, s[now].R) + j);
now ++;
}
dp[i][j] = max(dp[i][j - 1], dp[i][j]);
ans = max(ans, dp[i][j]);
if(ans == n) break;
}
if(ans == n) break;
ST(i);
}
printf("Case #%d: %d\n", cas ++, ans);
}
return 0;
}
HDU 6249 Alice’s Stamps的更多相关文章
- HDU 6249 Alice’s Stamps(2017 CCPC-Final G题,DP)
题目链接 HDU 6249 题意 给定$m$个区间,在这些区间中选出不超过$k$个,求被覆盖的点的数量的最大值. 设$f[i][j]$表示选到第$i$个点并选了$j$个区间的时候能得到的最大答案. 处 ...
- HDU 6249 Alice’s Stamps(dp)
http://acm.hdu.edu.cn/showproblem.php?pid=6249 题意: 给出n个区间,求选k个区间的最大区间并. 思路: 可能存在左端点相同的多个区间,那么此时我们肯定选 ...
- 区间DP || HDU 6249 Alice’s Stamps
题意:标号为1-n的n种邮票,m个邮票集,每个集里有标号从Li到Ri的邮票,要从中选K个邮票集,使这K个邮票集能覆盖最多种的邮票,问最多能覆盖多少种邮票 思路:区间DP (我:??? f[i][j]表 ...
- Alice’s Stamps HDU - 6249 (区间DP)
点击传送 Alice’s Stamps Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- hdu 4122 Alice's mooncake shop(单调队列)
题目链接:hdu 4122 Alice's mooncake shop 题意: 有n个订单和可以在m小时内制作月饼 接下来是n个订单的信息:需要在mon月,d日,year年,h小时交付订单r个月饼 接 ...
- HDU 6249
Alice’s Stamps Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- HDU 4122 Alice's mooncake shop 单调队列优化dp
Alice's mooncake shop Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem ...
- HDU 4791 Alice's Print Service 思路,dp 难度:2
A - Alice's Print Service Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & ...
- hdu 4111 Alice and Bob 记忆化搜索 博弈论
Alice and Bob Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...
随机推荐
- 学习3__STM32--DMA传输模式---
DMA传输模式 记录 2018-01-26 开始小记 > mode1: Peripheral to Memory 说明: 工程实现的云盘链接 > mode2: Memory to Peri ...
- POJ 1847 Tram (最短路径)
POJ 1847 Tram (最短路径) Description Tram network in Zagreb consists of a number of intersections and ra ...
- (转)Maven学习总结(七)——eclipse中使用Maven创建Web项目
孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(七)——eclipse中使用Maven创建Web项目 一.创建Web项目 1.1 选择建立Maven Project 选择File -&g ...
- CentOs 自带 PHP 之坑
在虚拟机上安装了CentOs6.5在上面安装了lnmp开发集成包(php7.1),对于之前没有任何开发经验的我来说,正常且安详滴在集成环境上开发着优雅的小bug. 然而我今天在Composer拉取代码 ...
- Java基础-时间复杂度计算方式
Java基础-时间复杂度计算方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 时间复杂度通常是衡量算法的优劣的,衡量算法的时间严格来讲是很难衡量的,由于不同的机器性能不用环境 ...
- 引用EChart和Bootstrap
1.怎么引用Echart 下载之后,写一个html,里面这样写 <!DOCTYPE html> <html> <head> <meta charset=&qu ...
- [Apio2012]dispatching 左偏树做法
http://codevs.cn/problem/1763/ 维护子树大根堆,当子树薪水和>m时,删除最贵的点 #include<cstdio> #include<iostre ...
- scale.fix.js
无意间在一个网站上看到的,本来是对另一个效果感兴趣的,结果看到这个放开来的js就读了一下. var metas = document.getElementsByTagName('meta'); var ...
- opacity设定图片透明度
实例 1 - 创建透明图像 定义透明效果的 CSS3 属性是 opacity. 首先,我们将展示如何通过 CSS 来创建透明图像. 常规图像: 带有透明度的相同图像: 请看下面的 CSS: img { ...
- How to become a successful bug bounty hunter
出处:https://www.hackerone.com/blog/become-a-successful-bug-bounty-hunter 如果你梦想成为赏金猎人,你的梦想就会成真 - 不要把你的 ...