题意:标号为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 ;
}

最新文章

  1. 微信公众号开发之VS远程调试
  2. iptables配置(/etc/sysconfig/iptables)
  3. 我所了解的 京东、携程、eBay、小米 的 OpenStack 云
  4. Java for LeetCode 043 Multiply Strings
  5. Excel公式无法重算,暂无法解决
  6. linux时钟同步
  7. UITableView表视图以及重建机制
  8. linux 配置 wlan 连接
  9. Oracle数据库备份手册
  10. OC之protocol监听器的实现
  11. Understanding CloudStack’s Physical Networking Architecture
  12. Hbase 学习笔记(一) Hbase的物理模型 Hbase为每个值维护了一个多级索引,即&lt;key, column family, column name, timestamp&gt;
  13. MapReduce输出格式
  14. 短路与&amp;&amp;和按位与&amp;的区别
  15. bzoj 1196: [HNOI2006]公路修建问题
  16. SSM中的登陆验证码
  17. Java基础之入门
  18. 谁说java里面有返回值的方法必须要有返回值,不然会报错????
  19. bootstrap 列表--水平定义列表
  20. vscode下调试caffe源码

热门文章

  1. nodejs 全局对象 global
  2. 2.27 MapReduce Shuffle过程如何在Job中进行设置
  3. adb logcat 查看日志 (转载)
  4. J20170414-ms
  5. Android6.0 危险权限和普通权限
  6. NOJ2026:Keroro侵略地球(01字典树)
  7. android内存溢出 java.lang.OutOfMemoryError
  8. iOS 获取类的字符串名称 Swift4
  9. jQuery中的.html()和.text()及.val()区别
  10. Selenium | 网上教程