Ski Lessons 滑雪课程


  • Description

约翰请贝西去科罗拉多去滑雪。不过贝西不太会玩,她只是个滑雪能力为1的渣渣。所以她决心参加一些滑雪课程。滑雪场提供S门课程,第i门课开始的时间是Mi,持续时间为Li ,上完课之后,贝西的滑雪能力将变成Ai。注意,能力不是增加Ai,而是变成Ai。
滑雪场有N条斜坡,第i条斜坡滑行一次需要Di 分钟,要求游客的滑雪能力达到Ci或以上时才能进入。
贝西可以随意安排她的时间:滑雪、上课,或美美地喝上一杯可可汁,但她在滑雪场只能呆到第T分钟。请问她如何安排时间,滑行次数才能尽量多?

  • Input Format

第一行:三个用空格分开的整数:T,S和N,1 ≤ T ≤ 10^4,1 ≤ S ≤ 100,1 ≤ N ≤ 10^5
第二行到S + 1行:第i + 1行描述了第i门课程,分别为Mi,Li 和Ai,彼此用空格隔开,1 ≤ Mi , Li ≤ 10^4,1 ≤ Ai ≤ 100
第S + 2行到S + N + 1行:第S + i + 1行描述了第i条斜坡,分别为Ci和Di ,彼此用空格隔开,1 ≤ Ci ≤ 100,1 ≤ Di ≤ 10^4

  • Output Format

第一行:单个整数,表示在时限内贝西可以滑完的最大次数

  • Sample Input

10 1 2
3 2 5
4 1
1 3

  • Sample Output

6

  • Hint

先滑 1 次 2 号斜坡,然后去上课,再去 1号连滑 5 次,一共 6 次


  • 分析

F[i][j]表示到了第i分钟,能力为j时最多能滑几次。
然后我们先把课程按结束时间排序。接着转移的时候,对于当前时刻,我们让他选择是从滑学,上课,还是休息转移过来。
我们还要预处理一下能力为i去滑哪个场。(肯定滑的越快越优)


一年前的代码,巨丑无比

#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cstdio>
#include <queue>
#include <ctime>
#include <cmath>
int i,j,k,t,s,n,ans,a[111],c,d,f[10011][111];
struct info{int m,l,a,en;
}e[102];
inline bool cmp(const info &a,const info &b){return a.en<b.en;
}
int main(){freopen("1016.in","r",stdin);freopen("1016.out","w",stdout);scanf("%d %d %d",&t,&s,&n);for (i=1;i<=s;i++){scanf("%d %d %d",&e[i].m,&e[i].l,&e[i].a);e[i].en=e[i].m+e[i].l;}std::sort(e+1,e+s+1,cmp);for (i=1;i<=100;i++) a[i]=1<<30;for (i=1;i<=n;i++){scanf("%d %d",&c,&d);a[c]=d<a[c]?d:a[c];}for (i=2;i<=100;i++){if (a[i-1]<a[i] && a[i-1]!=0) a[i]=a[i-1];      }for (i=0;i<=t;i++){for (j=0;j<=100;j++){f[i][j]=-99999999;}}f[0][1]=0;for (i=1;i<=t;i++){k=1;for (j=1;j<=100;j++){f[i][j]=std::max(f[i][j],f[i-1][j]);ans=std::max(ans,f[i][j]);if (i==e[k].en && k<=s){f[i][e[k].a]=std::max(f[e[k].m][j],f[i][e[k].a]);ans=std::max(ans,f[i][e[k].a]);k++;}if (i-a[j]>=0) f[i][j]=std::max(f[i][j],f[i-a[j]][j]+1),ans=std::max(ans,f[i][j]);}}printf("%d",ans);fclose(stdin); fclose(stdout);
}

【USACO】2009 Open Ski Lessons 滑雪课程相关推荐

  1. [USACO2009 OPEN] 滑雪课 Ski Lessons

    洛谷P2948 看到题目就觉得这是动规但一直没想到如何状态转移--看了别人的题解之后才有一些想法 f[i][j]:前i单位时间能力值为j可以滑的最多次数 lessons[i][j]:结束时间为i,获得 ...

  2. F. [usaco 2009 dec]游荡的奶牛 总结

    F. [usaco 2009 dec]游荡的奶牛 总结 题目 F. [usaco 2009 dec]游荡的奶牛 时间限制:1s 空间限制:256MB 输入文件:sgraze-in 输出文件:sgraz ...

  3. [USACO 2009 Dec S]Music Notes

    题目: [USACO 2009 Dec S]Music Notes ,哈哈,我们今天来看一道有二分思想的题嘛,这是选自USACO上的一道题,好了,我们一起来看看题意吧: 题目描述是复制的,可能有部分显 ...

  4. 滑雪课程设计Ski Course Design

    题目描述 农民约翰的农场里有N座山峰(1<=N<=1000),每座山都有一个在0到100之间的整数的海拔高度.在冬天,因为山上有丰富的积雪,约翰经常开办滑雪训练营. 不幸的是,约翰刚刚得知 ...

  5. [USACO1.3]滑雪课程设计Ski Course Design

    https://www.luogu.org/problemnew/show/P3650 题解: /* *@Author: STZG *@Language: C++ */ #include <bi ...

  6. 【BZOJ1572】【usaco 2009 open】工作安排job

    [问题描述] Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间. 他的工作日从0时刻开始,有1000000000个单位时间(! ...

  7. BZOJ2017[USACO 2009 Nov Silver 1.A Coin Game]——DP+博弈论

    题目描述 农夫约翰的奶牛喜欢玩硬币游戏,因此他发明了一种称为"Xoinc"的两人硬币游戏. 初始时,一个有N(5 <= N <= 2,000)枚硬币的堆栈放在地上,从堆 ...

  8. USACO 2009 Dec cow toll paths 过路费-floyd

    这道题首先要明确一点,那就是当你从一个点走到自己时,也是需要花费这个点点权值的费用.这个点卡了我两次QWQ 然后我比较喜欢分两步搞: 首先,我们利用floyd的一个性质:就是在更新其他点之间的路线时要 ...

  9. BZOJ1579 USACO 2009 Feb Gold 3.Revamping Trails Solution

    标题效果:一个N积分m无向图边.它可以是路径k右边缘值变0,确定此时1-n最短路径长度. Sol:我以为我们考虑分层图,图复制k+1部分,每间0~k一层.代表在这个时候已经过去"自由边缘&q ...

最新文章

  1. 创业冲突的五种解决方法是_当创业合伙人发生冲突时,最好的解决办法看这5招...
  2. React的组件生命周期
  3. 基于php的医院管理,基于PHP的医院管理信息系统的设计与实现
  4. matlab simout,每日学习Matlab(2)
  5. 【CSAPP笔记】14. 异常控制流和进程
  6. selenium-窗口切换
  7. 淘宝商品描述信息查询API接口(淘宝商品详情API接口)
  8. latex 长表格中放入多行公式
  9. 用python处理文本数据(5)
  10. Python摄氏度和华氏度的转换
  11. 期货大作手风云录 --简记
  12. 这只是起点 ——暨CSDN博客“我的2013”年度征文活动获得特等奖
  13. 同城双活与异地多活架构分析
  14. 2020烟草专业一战跨考复旦大学计算机专硕经验贴
  15. 用OpenCV实现简单的泊松融合
  16. 25 条客户服务名言激励您的团队
  17. 360与百度研发工程师的待遇,工作环境全面对比
  18. 谷歌浏览器csdn图片无法显示
  19. 如何开发一款ios应用程序
  20. Unity3D游戏开发中的人工智能AI 简单实例

热门文章

  1. i技术会 | 大数据应用与数据中台实践
  2. JAVA关于StringBuffer的一些方法
  3. 【设计模式】外观(Facade)模式实例
  4. mongodb入门-9 查询4
  5. U盘强制拔出丢失数据的恢复方法(U盘写保护的四种解决方法)
  6. 【基】医学CT图像-‘.dcm‘图像读取/处理/窗位窗宽修改/保存
  7. tensorflow玻尔兹曼机_受限玻尔兹曼机(RBM)与其在Tensorflow的实现
  8. redis主从结构及应用场景
  9. java h2 数据库_H2数据库介绍
  10. 博士申请研究计划应该写一些什么。