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 ...
随机推荐
- 【bzoj1006】 HNOI2008—神奇的国度
http://www.lydsy.com/JudgeOnline/problem.php?id=1006 (题目链接) 题意 求弦图的最小染色数. Solution 弦图,详情参见论文. 这里我写的加 ...
- Eclipse启动项目正常,放到tomcat下单独启动就报错的 一例
一个老的ssh的项目,进行二次开发(增加一些新功能)后, 首先用Eclipse中集成的Tomcat启动没有任何问题,但是把启动后的webapps下得目录放到 windows的普通tomcat下单独启动 ...
- HDU 6153 扩展kmp
A Secret Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 256000/256000 K (Java/Others)Total ...
- 在kubernetes集群中创建redis主从多实例
分类 > 正文 在kubernetes集群中创建redis主从多实例 redis-slave镜像制作 redis-master镜像制作 创建kube的配置文件yaml 继续使用上次实验环境 ht ...
- log4j常见配置
依赖jar <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId ...
- css3 :nth-child()选择器的使用
一.nth-child() 1. nth-child(n):父元素下的第n个子元素,n>0,索引从1开始.不区分子元素类型. 2. nth-child(odd):父元素下的奇数子元素,等同于:n ...
- dedecms列表页调用文章正文内容的方法
谁说dede:list 标签不能调用body内容,现在就告诉你,直接就可以调用 第一步,打开后台 核心-->频道模型-->内容模型管理-->普通文章,在列表附加字段中添加body. ...
- javascript命名空间
命名空间:命名空间有助于减少程序中所需要的全局变量的数量,并且同时还有助于避免命名冲突或过长的名字前缀. 板栗: var MYAPP = MYAPP || {}; MYAPP.namespace = ...
- TTPRequest 提示#import <libxml/HTMLparser.h>找不到 的解决方法
本文永久地址为http://www.cnblogs.com/ChenYilong/p/3984251.html ,转载请注明出处. ASIHTTPRequest 或者AFNetwork提示的#impo ...
- HDU 4712 Hamming Distance(随机算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4712 解题报告:输入n个数,用十六进制的方式输入的,任意选择其中的两个数进行异或,求异或后的数用二进制 ...