#include<cstdio>
#include<iostream>
using namespace std; int T,S,N,maxd;
int len[],lv[],next[],first[];//注意这个first要开到和极限时间一样
int mintime[];//表示在级别i的时候 能够滑的最短时间赛道
int dp[][]; int main()
{
freopen("ski.in","r",stdin);
freopen("ski.out","w",stdout);
//=========================
for(int i=;i<;i++) //预处理mintime 设成最大 这样才能求最小
{
mintime[i]=<<;
}
scanf("%d%d%d",&T,&S,&N);
//读入课程的信息 为了能实现记录同一时间出现多门课程的情况
//我们使用类似边信息表的思想 建立数组 len[i] 表示第i门课程持续时间
//next[i] 表示第i门课程的兄弟课程编号 就是开始时间一样的
//lv[i] 表示第i门课程上完达到的level
//first[i] 注意 i表示第i秒开始的课程编号
for(int i=,a,b,c;i<=S;i++)
{
scanf("%d%d%d",&a,&b,&c);
len[i]=b;
lv[i]=c;
next[i]=first[a];
first[a]=i;
maxd=max(maxd,c);
} //接下来读入滑雪赛道信息 我们知道要滑的尽量多 时间就要短
//所以要预处理下最短时间赛道 for(int i=,c,d;i<=N;i++)
{
scanf("%d%d",&c,&d);
for(int j=c;j<=;j++)
{
mintime[j]=min(mintime[j],d);
}
} //到这一步应该检查mintime数组到底对不对
//接下来进行递推操作 在上次说的状态转移方程基础上 我们要以时间i为单位
//枚举在i时间下的所有级别j的可能性 从左往右 在二维表上一列一列的更新
//简单说就是左边时间的状态想办法让右边的时间状态变得更大
//我们在dp二维表上进行运算 for(int i=;i<=T+;i++)
{
for(int j=;j<=;j++)
{
dp[i][j]=-;
}
} dp[][]=;
for(int i=;i<T;i++)
{
for(int j=;j<=;j++)
{
if(dp[i][j]==-) continue; dp[i+][j]=max(dp[i+][j],dp[i][j]);
dp[i+mintime[j]][j]=max(dp[i+mintime[j]][j],dp[i][j]+); int p=first[i];
while(p!=)
{
dp[i+len[p]][lv[p]]=max(dp[i+len[p]][lv[p]],dp[i][j]);
p=next[p];
}
}
}
int ans=-;
for(int i=;i<=maxd;i++)
{
ans=max(ans,dp[T][i]);
//cout<<dp[T][i]<<" "; 这里可以输出最后一行的答案看看正确性
}
printf("%d",ans); //=========================
fclose(stdin);
fclose(stdout);
return ;
}

农夫约翰想带着他的奶牛Bessie去佛罗里达滑雪,可是,Bessie的滑雪技术真是太差了。

她了解到滑雪学校全天提供滑雪课程,共有S(0 <= S <=100)个滑雪课程可供选择,课程i从时间M_i(1 <= M_i <= 10,000)开始,持续时间为L_i(1 <= L_i <= 10,000),学完该课程滑雪水平将提升至A_i(1 <= A_i <= 100),注意:滑雪水平的提升是绝对的,而不是累加的。

此外Bessie还买了一张滑雪练习场的地图,从图中可以看到练习场每个斜坡的详细情况:从坡上滑下来所需的时间D_i(1 <= D_i <= 10,000),以及滑这个坡所需要的水平等级C_i(1 <= C_i <= 100),为安全起见,只有滑雪水平高于该坡所要求的等级,才可以从这个坡滑下。

Bessie可以把她所有的时间都花在滑雪、上课上,当然她也可以去喝杯热可可,但前提是她必须得在滑雪学校待至时间T(1 <= T <= 10,000),这也意味着她的最后一趟滑坡行动不得超过这个时限。

请确定在这个时间段内,Bessie最多可以滑多少趟斜坡,假定她当天的起始水平为1。

输入格式:
第1行,三个空格隔开的整数:T,S,N;
第2~S+1行,第i+1行有三个空格隔开的整数M_i,L_i,A_i,描述了一个课程的情况;
第S+2~S+N+1行,第S+i+1行为两个空格隔开的整数,C_i,D_i,描述了一个斜坡的情况。

输出格式:
一行,一个整数,即在时限内Bessie能完成的滑坡的最大次数。

样例:
ski.in
10 1 2
3 2 5
4 1
1 3

ski.out
6

输出数据说明
先滑一次第2个斜坡,然后在时间3去上课,上课至时间5,然后在时间结束之前可以再滑五次第1个斜坡,所以共6次滑坡。

提交地址 http://cogs.pro/cogs/problem/problem.php?pid=754

USACO 滑雪课程的更多相关文章

  1. 【USACO】滑雪课程

    滑雪课程贝西去科罗拉多州去滑雪,不过还她不太会玩,只是个能力为 1 的渣渣.贝西从 0 时刻进入滑雪场,一到 T 时刻就必须离开.滑雪场里有 N 条斜坡,第 i 条斜坡滑行一次需要 Di 分钟,要求游 ...

  2. USACO 1.3.6 Ski Course Design[滑雪课程设计]

    先说说思路: 这题比上一道坑人的wormholes简单多了!我一看到这题,“XXX设计”,还以为要用到什么dp呢,没想到是水题 用两层循环,第一层循环相差17中的上界,第二层遍历所有的山峰计算答案.并 ...

  3. 【LSGDOJ 1850】滑雪课程

    题目描述 贝西去科罗拉多州去滑雪,不过还她不太会玩,只是个能力为 1 的渣渣.贝西从 0 时刻进入滑雪场,一到 T 时刻就必须离开.滑雪场里有 N 条斜坡,第 i 条斜坡滑行一次需要 D i 分钟,要 ...

  4. 【USACO2009 Open】滑雪课程ski

    [USACO2009 Open]滑雪课程 Ski Lessons Time Limit: 1000 ms Memory Limit: 131072 KBytes Description 约翰请贝西去科 ...

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

    P3650 [USACO1.3]滑雪课程设计Ski Course Design 题目描述 农民约翰的农场里有N座山峰(1<=N<=1000),每座山都有一个在0到100之间的整数的海拔高度 ...

  6. Usaco 滑雪比赛 Bobsledding, 2009 Dec(dp)

    Description 滑雪比赛bobsled 贝西参加了一场高山急速滑雪比赛,滑道总长度为 L.出发时,她的初速度为 1,贝西可以加速 或减速,每过 1 米,她能将速度增加 1.减少 1 或保持不变 ...

  7. [USACO精选] 第二章 动态规划(一)

    #4 公司利润 2014-01-16 这真的是动归?怎么觉得有点贪心的心态在.时间复杂度O(N),空间复杂度O(1),轻松加愉快!唯一要注意的是ANS一开始要赋负值,因为最终答案可能是负的. ; va ...

  8. USACO Section 1.3 题解 (洛谷OJ P1209 P1444 P3650 P2693)

    usaco ch1.4 sort(d , d + c, [](int a, int b) -> bool { return a > b; }); 生成与过滤 generator&& ...

  9. Luogu USACO Training 刷水记录

    开个坑记录一下刷USACO的Training的记录 可能会随时弃坑 只有代码和做法简述 可能没有做法简述 [USACO1.1]你的飞碟在这儿Your Ride Is He… 模拟,细节已忘 #incl ...

随机推荐

  1. 黑马----JAVA迭代器详解

    JAVA迭代器详解 1.Interable.Iterator和ListIterator 1)迭代器生成接口Interable,用于生成一个具体迭代器 public interface Iterable ...

  2. 【转】为现代JavaScript开发做好准备

    原文转自:http://blog.jobbole.com/66135/ 今天无论是在浏览器中还是在浏览器外,JavaScript世界正在经历翻天覆地地变化.如果我们谈论脚本加载.客户端的MVC框架.压 ...

  3. 解决表单(搜索框)回车的时候直接提交了表单不运行js的问题

    我想在搜索输入框中输入关键词后回车,先运行一段js,然后在提交表单,而默认情况下回车的时候也会出发表单的提交所有没法等js运行完成,故利用 onkeydown="if(event.keyCo ...

  4. 设为首页 添加到收藏夹 (share)

    设为首页,添加到收藏夹 分享自:http://my.oschina.net/lyx2012/blog/60036 设为首页 和 收藏本站js代码 兼容IE,chrome,ff <script t ...

  5. 登录phpmyadmin提示: #1045 无法登录 MySQL 服务器

    打开phpmyadmin,进行登录,出现以下问题,提示:#1045 无法登录 MySQL 服务器 或许出现以下错误情况:phpmyadmin:#1045 无法登录 MySQL 服务器.Access d ...

  6. http://note.youdao.com/yws/public/redirect/share?id=2bc2dc6c7df6013e9f8106c005da999a&type=false

    Welcome to MarkdownPad 2 MarkdownPad is a full-featured Markdown editor for Windows. Built exclusive ...

  7. CocoaPods创建私有pods

    由于项目需求,需要把项目的不同模块拆分出来即 组件化 ,一开始想做成多target模式,后来换成私有pods CocoaPods的安装和使用,网上很多,自行搜索即可. 听说可以基于svn创建pod私有 ...

  8. Android 从图库到选择图片onActivityResult接收注意的问题

    从图库选择图片然后返回数据接收处理的时候,这个时候我们可能会遇到一个问题.就是明明我走了返回的代码.但是为什么我的图片路径没有拿到?这个时候可能是Android的api不同导致,因为Android4. ...

  9. 模板方法模式(Template Method Pattern)

    模板方法模式是一种基于继承的代码复用技术,定义一个操作中的算法的骨架,而将步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤. 模式中的角色 抽象类(Abstrac ...

  10. 国内最新Unity3D视频教程合辑

    麦子学院最新Unity3D视频教程上线啦,此为现目前国内最全.最新Unity3D教程,分享给广大小伙伴,希望对大家学习Unity3D有帮助: 第一阶段:Unity3D概要及入门 零基础学C#开发 Un ...