滑雪课程
贝西去科罗拉多州去滑雪,不过还她不太会玩,只是个能力为 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. JQuery的两个each方法的注意点

    Jquery官网上两个each用法: http://api.jquery.com/jQuery.each/ http://api.jquery.com/each/ 使用时注意点 <!DOCTYP ...

  2. SpringMVC类型转换、数据绑定

    SpringMVC类型转换.数据绑定详解[附带源码分析] 目录 前言 属性编辑器介绍 重要接口和类介绍 部分类和接口测试 源码分析 编写自定义的属性编辑器 总结 参考资料 前言 SpringMVC是目 ...

  3. socket串口通信

    SocketServer: #include <arpa/inet.h> #include <stdio.h> #include <stdlib.h> #inclu ...

  4. WPF/Silverlight中的RichTextBox总结

    WPF/Silverlight中的RichTextBox总结   在WPF或者是在Silverlight中有个非常强大的可以编辑的容器控件RichTextBox,有的时间会采取该控件来作为编辑控件.鉴 ...

  5. 使用upstream和subrequest访问第三方服务

    本文是对陶辉<深入理解Nginx>第5章内容的梳理以及实现,代码和注释基本出自此书. 一.upstream:以向nginx服务器的请求转化为向google服务器的搜索请求为例 (一)模块框 ...

  6. 支持虚拟化也开来虚拟化就是装不上HyperV的解决方法

    使用NTBOOTautofix修复BCD 今日换了台性能更强劲的电脑,本是想好好爽一下,结果却是满满的悲剧.先是硬盘里的游戏一个都打不开,8.1你要不要这么烂.好吧,不娱乐,那工作吧,结果hyper又 ...

  7. Closures in OOC

    Closures in OOC 接上一篇Complexity Behind Closure,这次来专注于Rock是如何在C里实现Closure的. 这篇文章同时发布在Github上. Block as ...

  8. PostgreSQL数据的导出导入 save your data!

    PostgreSQL数据的导出导入 导出PostgreSQL数据库中的数据: $ pg_dump -U postgres  -f mydatabase.sql  mydatabase 导入数据时首先创 ...

  9. spring不依赖注入得到实体bean

    如题,我们一般用spring的ioc,通过配置注入接口得到这个实现类,现在通过研究公司平台框架发现还有一种方法得到spring文件配置的bean方法,举个例子(注:这个ApplicationConte ...

  10. 关于ActiveMQ的一点总结

    ActiveMQ入门 作者:一路向北 摘要:本文主要讲述ActiveMQ的基本知识和使用方法,并简单结合spring使用ActiveMQ. 一.ActiveMQ特性和使用总览 企业消息软件从80年代起 ...