滑雪课程
贝西去科罗拉多州去滑雪,不过还她不太会玩,只是个能力为 1 的渣渣。贝西从 0 时刻进入滑雪场,一到 T 时刻就必须离开。滑雪场里有 N 条斜坡,第 i 条斜坡滑行一次需要 Di 分钟,要求游客的能力达到 Ci 或以上时才能进入。贝西决心参加一些滑雪课程以提高自己的素质,这样可以在有限的时间内多滑几次坡。
滑雪场提供了 S 门课程。第 i 门课的开始时刻为 Mi,持续 Li 分钟,如果想参加课程,就不能迟到或早退。上完课之后,贝西的滑雪能力将变成 Ai。注意,不是能力增加 Ai,而是变成 Ai,所以乱上课的话反而会使能力下降。贝西可以随意安排她的时间:滑雪、上课,或美美地喝上一杯可可汁。请问她如何安排上课和滑雪的时间,滑坡的次数才能达到最大?
输入格式
• 第一行:三个整数 T,S 和 N,1 ≤ T ≤ 104; 1 ≤ S ≤ 100; 1 ≤ N ≤ 105
• 第二行到 S +1 行:第 i+1 行描述了第 i 门课程,分别为 Mi,Li 和 Ai,1 ≤ Mi;Li ≤ 104; 1 ≤Ai ≤ 100
• 第 S + 2 行到 S + N + 1 行:第 S + i + 1 行描述了第 i 条斜坡,分别为 Ci 和 Di,1 ≤ Ci ≤100; 1 ≤ Di ≤ 104
输出格式
• 单个整数,表示贝西可以滑完的最大次数
样例输入
10 1 2
3 2 5
4 1
1 3
样例输出
6
解释
先滑 1 次二号斜坡,然后去上课,再去一号斜坡连滑 5 次

首先我们预处理出对于每一个能力值可以滑的坡中所耗时间最少的(这样可以保证滑最多次数),用DP[i][j]表示当前在i时刻,能力值为j,

然后对于每一个状态我们可以做以下三个转移

1.什么都不做

DP[i][j]->DP[i+1][j]

2.上课(需要当前时间点有课可以上)

DP[i][j]->DP[i+该堂课的持续时间][该堂课对应的能力值]

3.滑雪

DP[i][j]->DP[i+当前能力值能滑的坡之中所耗时间最少的][j]

最后求最大次数即可。

题外话……这题的数据

超级弱,超级弱,真的,超级弱。我算法写错了能过9组……

 #include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("ski.in");
ofstream fout("ski.out");
int least[]={},DP[][]={};
int lesson[][]={},po[][]={};
int tims[]={};
int ks=,ps=,xz=;
int sear(int tim,int ene);
int main(void)
{
fin>>xz>>ks>>ps;
int a=,b=,c=,most=;
memset(DP,0xff,sizeof(DP));
memset(least,0x7f,sizeof(least));
for(int i=;i<=ks;i++)
{
fin>>a>>b>>c;
lesson[i][]=a;
lesson[i][]=b;
lesson[i][]=c;
tims[a]=i;
most=max(c,most);
}
for(int i=;i<=ps;i++)
{
fin>>a>>b;
po[i][]=a;
po[i][]=b;
least[a]=min(least[a],b);
}
c=0x7fffffff;
for(int i=;i<=most;i++)
{
least[i]=min(least[i],c);
if(least[i]<c)c=least[i];
}
int ans=;
ans=sear(,);
fout<<ans;
return ;
} int sear(int tim,int ene)
{
if(tim>xz)return ;
if(DP[tim][ene]!=-)return DP[tim][ene];
int tot=,ans=;
tot=sear(tim+,ene);
ans=max(tot,ans);
if(tims[tim]!=)tot=sear(tim+lesson[tims[tim]][],lesson[tims[tim]][]);
ans=max(tot,ans);
if(tim+least[ene]<=xz)tot=sear(tim+least[ene],ene)+;
ans=max(tot,ans);
DP[tim][ene]=ans;
return ans;
}

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

  1. USACO 滑雪课程

    #include<cstdio> #include<iostream> using namespace std; int T,S,N,maxd; ],lv[],next[],f ...

  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. Apache Httpd Server 2.2升级2.4

    Apache Httpd Server 2.2升级2.4 (2 votes, average: 5.00 out of 5) 2,302 views 2012 年 3 月 20 日Web服务器.服务器 ...

  2. Bootstrap 图标

    Bootstrap 图标由 Glyphicons 提供.详情可以去bootstrap官网进行查看. 用法: <i class="icon_class_name">< ...

  3. SQL练习1关于插入删除,修改,单表查询

    --创建数据库create database studentsDB --创建表create table student( id int primary key, stuid char(10), stu ...

  4. EasyUI Editable Tree

    效果如图: Create Tree <ul id="tt"></ul> $('#tt').etree({ url: 'tree_data.json', cr ...

  5. #define命令的一些高级用法

    =========================================================== define中的三个特殊符号:#,##,#@ ================= ...

  6. Lync Server 2013中央管理存储:自动收集配置数据失败

    Lync Server 2013在安装本地配置存储到配置中央管理存储的本地副本时候提示错如信息:自动收集配置数据失败. 打开Lync Shell,输入Get-CsConfigurationStoreL ...

  7. hadoop集群安装

    首现非常感谢 虾皮(http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html) 安装过程是参照他的<Hadoop集群(第5期 ...

  8. javascript call()函数

    js中的call()函数,简单的说就是用来纠正指正的吧! 调用一个对象的方法,用另一个对象替换当前对象,这样说显得相当的空洞与抽象,实例说明一切! <script type="text ...

  9. ASP.NET基础之HttpModule学习

    最近学习WCF知识时看到有关IIS版本的知识,发现对HttpContext,HttpModule,HttpHandler的内容都不是很了解,这三个也是ASP.NET相对基础的内容,晚上特地花点时间针对 ...

  10. ArcEngine关于单位转换示例

    示例界面: 转换代码: private void Button1_Click(object sender, System.Windows.RoutedEventArgs e) { // Get the ...