bzoj 1571: [Usaco2009 Open]滑雪课
http://www.lydsy.com/JudgeOnline/problem.php?id=1571
dp[i][j]表示前i个时间,能力为j所能达到得最大滑雪次数
预处理出,需要能力$<=c$的滑坡滑行的最少时间的坡花费的时间
dp转移,三种情况
1 喝coco汁
2 滑雪
3 学习课程
具体看代码
#include<cstdio>
#include<cstring>
#include<algorithm> const int maxn = ;
int t,s,n;
inline int read() {
int x=;char c=getchar();
while(c<''||c>'') c=getchar();
while(c<=''&&c>='') x=x*+c-'',c=getchar();
return x;
}
struct node{
int s,t,val;
}cla[maxn];
struct ppop {
int c,d;
}po[maxn];
int dp[maxn][];
int b[maxn];
int main() {
t=read(),s=read(),n=read();int st=;
for(int i=;i<=s;++i) {
cla[i].s=read(),cla[i].t=read(),cla[i].val=read();
st=std::max(st,cla[i].val);
}
std::memset(b,0x3f,sizeof b);
for(int i=;i<=n;++i) {
po[i].c=read(),po[i].d=read();
b[po[i].c]=std::min(b[po[i].c],po[i].d);
}
for(int i=;i<=st;++i) b[i]=std::min(b[i],b[i-]);
for(int i=;i<=t;++i) {
for(int j=;j<=st;++j) {
dp[i][j]=-;
}
}
dp[][]=;
for(int i=;i<=t;++i) {
for(int j=;j<=st;++j) { //the stution have not be down
if(dp[i][j]<)continue;
dp[i+][j]=std::max(dp[i][j],dp[i+][j]);//drink coco;
if(i+b[j]<=t)//the time of ski
dp[i+b[j]][j]=std::max(dp[i+b[j]][j],dp[i][j]+);
for(int k=;k<=s;k++)// study
if(i>=cla[k].s&&i+cla[k].t<t)
dp[i+cla[k].t][cla[k].val]=std::max(dp[i+cla[k].t][cla[k].val],dp[i][j]);
}
}
int ans=;
for(int i=;i<=st;++i) {
ans=std::max(ans,dp[t][i]);
}
printf("%d\n",ans);
return ;
}
bzoj 1571: [Usaco2009 Open]滑雪课的更多相关文章
- BZOJ——1571: [Usaco2009 Open]滑雪课Ski
http://www.lydsy.com/JudgeOnline/problem.php?id=1571 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: ...
- BZOJ 1571: [Usaco2009 Open]滑雪课Ski
Description Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里,每天会提供S(0<=S& ...
- bzoj 1571: [Usaco2009 Open]滑雪课Ski【dp】
参考:https://blog.csdn.net/cgh_andy/article/details/52506738 没有get到什么重点的dp--做的莫名其妙 注意滑雪一个坡可以滑很多次 设f[i] ...
- 【BZOJ】1571: [Usaco2009 Open]滑雪课Ski
[算法]动态规划 [题解]yy出了O(1w log 1w)的算法. 将雪坡排序预处理出g[i]表示能力值为i的最短时长雪坡. 这样就可以定义work(t,c)表示时长t能力c的最多滑雪数量,work( ...
- 1571. [Usaco2009 Open]滑雪课Ski
传送门 可以想到 $dp$,设 $f[i][j]$ 表示当前等级为 $i$,时间为 $j$ 的最大滑雪次数 显然上课不会上让自己等级降低的课,所以第一维 $i$ 满足无后效性 然后直接枚举 $i,j$ ...
- [bzoj1571][Usaco2009 Open]滑雪课Ski
题目描述 Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里,每天会提供S(0<=S<=100 ...
- 【贪心优化dp决策】bzoj1571: [Usaco2009 Open]滑雪课Ski
还有贪心优化dp决策的操作…… Description Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里 ...
- bzoj千题计划156:bzoj1571: [Usaco2009 Open]滑雪课Ski
http://www.lydsy.com/JudgeOnline/problem.php?id=1571 DP不一定全部全状态转移 贪心的舍去一些不合法的反而更容易转移 在一定能力范围内,肯定滑雪所需 ...
- [USACO2009 OPEN] 滑雪课 Ski Lessons
洛谷P2948 看到题目就觉得这是动规但一直没想到如何状态转移……看了别人的题解之后才有一些想法 f[i][j]:前i单位时间能力值为j可以滑的最多次数 lessons[i][j]:结束时间为i,获得 ...
随机推荐
- Android 获取当前应用的版本号+版本号比较
前言:因为项目更新的时候需要一些版本号的信息,后台返回两个string,一个是最低兼容版,一个是最新版.所以拿到数据后要比较一下,所以封装了一个Common包来处理. Step 1 废话不多说, ...
- Redis实现之字典
字典 字典,又称为符号表(symbol table).关联数组(associative array)或映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构.在字典中,一个 ...
- 【SHELL】Linux下安装Oracle Client
一.新建Oracle脚本存储目录并上传文件 [root@A04-Test-172]# mkdir -p /tmp/instance_oracle #新建存储目录 [root@A04-Test-172 ...
- sql server 不可见字符处理 总结
前言 问题描述:在表列里有肉眼不可见字符,导致一些更新或插入失败. 几年前第一次碰见这种问题是在读取考勤机人员信息时碰见的,折腾了一点时间,现在又碰到了还有点新发现就顺便一起记录下. 如下图所示 go ...
- windows下虚拟环境中配置MySQL-python错误问题
下载mysql 下载mysql-python 这两步基本没有问题怪就怪的 MySQL-python-1.2.3.win-amd64-py2.7 文件只能安装到python27 路径下 然后在虚拟环境 ...
- 将FragmentManger事务添加到返回栈中
FragmentManger事务添加或替换的 Fragment 后,这时点击 Back 键,程序并不会返回添加之前的状态. 我们可以使用 Transaction 对象的 addToBackStack( ...
- IOS开发---菜鸟学习之路--(十一)-使新闻内容自适应高度
上一章当中,我们留了一个小BUG. 其实就是浏览新闻的时候,如果文字内容过长的花,UITextView 会有个下拉框,而最底层的UIScrollView也有个下拉框,那么在使用的时候就会非常的不爽. ...
- linux环境搭建系列之svn安装
前提: linux centOS 64位操作系统 1.root账号 2.#yum install -y subversion 出现如下报错: 尝试Telnet https://www.baidu.co ...
- 数据结构设计 Stack Queue
之前在简书上初步总结过几个有关栈和队列的数据结构设计的题目.http://www.jianshu.com/p/d43f93661631 1.线性数据结构 Array Stack Queue Hash ...
- LeetCode with Python -> String
344. Reverse String Write a function that takes a string as input and returns the string reversed. E ...