Hdu-6249 2017CCPC-Final G.Alice’s Stamps 动态规划
题面
题意:给你n个集合,每个集合有L到R这些种类的邮票,让你选择其中的K个集合,使得最后选择的邮票种类尽可能多,N,L,R都<=2000
题解:容易乱想到网络流,可是再细想一下就会发现处理不了这种模型的
然后看数据范围,想到dp,定义状态f[i][j]表示前i个集合选j个的最多种类,
我们发现这需要N^3,因为每次除了枚举i,j还要枚举一个q,来记录新的一个集合是从上次的哪一个集合拓展覆盖来的
苦思不得其解,看全场都a了,终于在最后1h改了状态(打的当然是重现赛)
我们发现L,R也只有2000啊,刚刚那种定义如果可行,L,R不就离散一下,没必要说这个了啊
所以又定义f[i][j],表示1-i的种类,用了j个集合的最好方案,对于每个位置i,我们先预处理up数组,覆盖i的区间最右能延伸到哪里
转移就是f[i][j+1]=max(f[i-1][j+1]f,[i][j+1]) if (up[i]) f[up[i]][j+1]=max (f[up[i]][j+1],f[i-1][j]+len); len 就是等于up[i]-i+1;
1 #include<bits/stdc++.h> 2 #define N 2005 3 using namespace std; 4 int f[N][N],up[N],T,t=1,n,m,k; 5 int main() 6 { 7 cin>>T; 8 while (T--) 9 { 10 scanf("%d%d%d",&n,&m,&k); 11 memset(up,0,sizeof up); 12 memset(f,0,sizeof f); 13 for(int i=1,x,y;i<=m;i++) 14 { 15 scanf("%d%d",&x,&y); 16 for(int j=x;j<=y;j++) up[j]=max(up[j],y); 17 } 18 for(int i=1;i<=n;i++) 19 for(int j=0;j<k;j++) 20 { 21 f[i][j+1]=max(f[i][j+1],f[i-1][j+1]); 22 if (up[i]) f[up[i]][j+1]=max(f[up[i]][j+1],f[i-1][j]+up[i]-i+1); 23 } 24 printf("Case #%d: %d\n",t++,f[n][k]); 25 } 26 return 0; 27 }
转载于:https://www.cnblogs.com/qywhy/p/9764631.html
Hdu-6249 2017CCPC-Final G.Alice’s Stamps 动态规划相关推荐
- ACM ICPC China final G Pandaria
目录 ACM ICPC China final G Pandaria ACM ICPC China final G Pandaria 题意:给一张\(n\)个点\(m\)条边的无向图,\(c[i]\) ...
- HDU 6249 Alice’s Stamps(dp)
http://acm.hdu.edu.cn/showproblem.php?pid=6249 题意: 给出n个区间,求选k个区间的最大区间并. 思路: 可能存在左端点相同的多个区间,那么此时我们肯定选 ...
- 树的点分治(HDU 5977 2016ICPC大连 G: Garden of Eden)
题意: 有一棵n个节点的数,每个点都有一个值(1<=pi<=k),问有多少条路径满足包含1到k中的所有数字 可以想到状压+树形dp,但是开dp[50005][1025]的数组内存占用过大, ...
- ZOJ 3987 2017CCPC秦皇岛 G:Numbers(高精度+贪心)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3987 题意: 给你两个数n和m,你要将n拆成m个数,使得这m个数 ...
- HDU 5242 上海大都会 G题
这道题其实是求K条最长的不重叠的链.贪心算法+DFS即可求.深度优先搜索时,返回当前子树的最长链,使用优先队列保存其他孩子结点的最长链,即可.求结果时只需从优先队列中取前K个值的和.这相当于暴力删除每 ...
- BZOJ #3746: [POI2015]Czarnoksiężnicy okrągłego stołu 动态规划
转载请注明出处:http://www.cnblogs.com/TSHugh/p/8823423.html 读完题就会发现p=0.1的情况以及n=1.2的情况都可以直接判掉,而p=2的时候也可以直接构造 ...
- codeforces G - Almost Increasing Array 动态规划、动态开点线段树
题意 给出一个序列,允许删除一个元素,并将任意元素的值修改为任意整数,问最少修改多少个元素使得序列变成严格单调递增的序列? 题解 这道题目很具有启发性: 不考虑删除元素,原数列各个数值减去他们下标得到 ...
- 动态规划位置hdu 4540 威威猫系列故事——打地鼠(动态规划)
题记:写这篇博客要主是加深自己对动态规划位置的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 威威猫系列故事--打地鼠 Time Limit: 300/100 MS (Java/O ...
- java语言基础final_java语言中final的用法
许多程序设计语言都有自己的办法告诉编译器某个数据是"常数".常数主要应用于下述两个方面: (1) 编译期常数,它永远不会改变 (2) 在运行期初始化的一个值,我们不希望它发生变化 ...
最新文章
- 如何设计秒杀服务器的限流策略
- bootstrap 空行不显示横杠_电脑开机有显示,但进不去系统
- 【小白学习PyTorch教程】十一、基于MNIST数据集训练第一个生成性对抗网络
- 01_pandas安装、Series、DataFrame、head、tail、 index、columns、to_numpy、describe、置换数据、sort_index、sort_values
- 2011---2013年杭电计算机历年研究生复试---笔试编程
- 转:springboot servlet使用配置
- 数据结构笔记:二叉树的构造(根据遍历顺序构造二叉树)
- 程序员接私活必备的 10 个开源项目!
- [rhel6.5]DHCP分配IP地址以及保留地址
- PHP开发环境配置:ThinkPHP与IDE
- 有人晒出程序员聚餐照片,网友:根据头发量能看出技术水平高低!
- php开发公众号素材管理总结
- 英飞凌TC387学习
- CentOS 安装与配置
- HTTP 状态码 301 和 302 详解及区别——辛酸的探索之路
- 骇客帝国弹幕2.0--移动鼠标触发弹幕
- Unity中利用LineRenderer绘制寻路路径
- 多媒体数字展示技术解决方案
- Github Arctic Code Vault 哈哈 自己的项目被存储在北极 1000年
- rabbitmq报错:Listener method could not be invoked with the incoming message