区间DP || HDU 6249 Alice’s Stamps
2024-09-04 14:43:10
题意:标号为1-n的n种邮票,m个邮票集,每个集里有标号从Li到Ri的邮票,要从中选K个邮票集,使这K个邮票集能覆盖最多种的邮票,问最多能覆盖多少种邮票
思路:区间DP (我:???
f[i][j]表示从1 - i 位置选择 j 个集合的覆盖种数
首先它可以从f[i][j] = max(f[i][j], max(f[i-1][j], f[i][j-1]))转移来
其次考虑它能转移到的点
用up[i] 记录覆盖i点的线段最右的点,如果要在 i 后面加一条线段,那么肯定优先取这个(因为它最右,同样加一条线段得到的覆盖长度更长
所以f[i][j]可以转移到f[up[i]][j], if(up[i]) f[up[i]][j] = max(f[i-1][j-1]+up[i]-i+1, f[up[i]][j]);
嘤嘤嘤的哭了
区间DP的话,把区间排个序,然后去掉有完全包含的区间~
#include <map>
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
const int maxn = ;
const int maxm = ;
struct node
{
int l, r;
}a[maxn];
bool cmp(node x, node y)
{
if(x.l != y.l) return x.l<y.l;
return x.r<y.r;
}
int up[maxn], f[maxn][maxn];
int main()
{
int T, tt=;
scanf("%d", &T);
while(T--)
{
int n, m, k;
scanf("%d%d%d", &n, &m, &k);
memset(up, , sizeof(up));
memset(f, , sizeof(f));
for(int i = ; i <= m; i++)
{
scanf("%d%d", &a[i].l, &a[i].r);
for(int j = a[i].l; j <= a[i].r; j++)
up[j] = max(up[j], a[i].r);
}
sort(a+, a++m, cmp);
for(int i = ; i <= n; i++)
{
for(int j = ; j <= k; j++)
{
f[i][j] = max(f[i][j], max(f[i-][j], f[i][j-]));
if(up[i]) f[up[i]][j] = max(f[up[i]][j], f[i-][j-]+up[i]-i+);
}
}
/*for(int i = 1; i <= n; i++)
for(int j = 1; j <= k; j++)
printf("f[%d][%d] = %d\n", i, j, f[i][j]);*/
printf("Case #%d: %d\n", ++tt, f[n][k]);
}
return ;
}
最新文章
- 微信公众号开发之VS远程调试
- iptables配置(/etc/sysconfig/iptables)
- 我所了解的 京东、携程、eBay、小米 的 OpenStack 云
- Java for LeetCode 043 Multiply Strings
- Excel公式无法重算,暂无法解决
- linux时钟同步
- UITableView表视图以及重建机制
- linux 配置 wlan 连接
- Oracle数据库备份手册
- OC之protocol监听器的实现
- Understanding CloudStack’s Physical Networking Architecture
- Hbase 学习笔记(一) Hbase的物理模型 Hbase为每个值维护了一个多级索引,即<;key, column family, column name, timestamp>;
- MapReduce输出格式
- 短路与&;&;和按位与&;的区别
- bzoj 1196: [HNOI2006]公路修建问题
- SSM中的登陆验证码
- Java基础之入门
- 谁说java里面有返回值的方法必须要有返回值,不然会报错????
- bootstrap 列表--水平定义列表
- vscode下调试caffe源码
热门文章
- nodejs 全局对象 global
- 2.27 MapReduce Shuffle过程如何在Job中进行设置
- adb logcat 查看日志 (转载)
- J20170414-ms
- Android6.0 危险权限和普通权限
- NOJ2026:Keroro侵略地球(01字典树)
- android内存溢出 java.lang.OutOfMemoryError
- iOS 获取类的字符串名称 Swift4
- jQuery中的.html()和.text()及.val()区别
- Selenium | 网上教程