题目描述

Farmer John wants to take Bessie skiing in Colorado. Sadly, Bessie is not really a very good skier.

Bessie has learned that the ski resort is offering S (0 <= S <= 100) ski classes throughout the day. Lesson i starts at time M_i (1 <= M_i <= 10,000) and lasts for time L_i (1 <= L_i <= 10,000). After lesson i, Bessie's ski ability becomes A_i (1 <= A_i <= 100). Note: this ability is an absolute, not an incremental change.

Bessie has purchased a map which shows all N (1 <= N <= 10,000) ski slopes along with the time D_i (1 <= D_i <= 10,000) required to ski down slope i and the skill level C_i (1 <= C_i <= 100) required to get down the slope safely. Bessie's skill level must be greater than or equal to the skill level of the slope in order for her to ski down it.

Bessie can devote her time to skiing, taking lessons, or sipping hot cocoa but must leave the ski resort by time T (1 <= T <= 10,000), and that means she must complete the descent of her last slope without exceeding that time limit.

Find the maximum number of runs Bessie can complete within the time limit. She starts the day at skill level 1.

Extra feedback will be provided on the first 50 submissions.

Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪。很不幸,Bessie滑雪技术并不精湛。 Bessie了解到,在滑雪场里,每天会提供S(0<=S<=100)门滑雪课。第i节课始于M_i(1<=M_i<=10000),上的时间为L_i(1<=L_i<=10000)。

上完第i节课后,Bessie的滑雪能力会变成A_i(1<=A_i<=100). 注意:这个能力是绝对的,不是能力的增长值。

Bessie买了一张地图,地图上显示了N(1 <= N <= 10,000)个可供滑雪的斜坡,从第i个斜坡的顶端滑至底部所需的时长D_i(1<=D_i<=10000),以及每个斜坡所需要的滑雪能力C_i(1<=C_i<=100),以保证滑雪的安全性。Bessie的能力必须大于等于这个等级,以使得她能够安全滑下。

Bessie可以用她的时间来滑雪,上课,或者美美地喝上一杯可可汁,但是她必须在T(1<=T<=10000)时刻离开滑雪场。这意味着她必须在T时刻之前完成最后一次滑雪。 求Bessie在实现内最多可以完成多少次滑雪。这一天开始的时候,她的滑雪能力为1.

输入输出格式

输入格式:

  • Line 1: Three space-separated integers: T, S, and N

  • Lines 2..S+1: Line i+1 describes ski lesson i with three

space-separated integers: M_i, L_i, and A_i

  • Lines S+2..S+N+1: Line S+i+1 describes ski slope i with two

space-separated integers: C_i and D_i.

输出格式:

A single integer on a line by itself, the maximum number of runs that Bessie may ski within the time limit.

输入输出样例

输入样例#1:

10 1 2
3 2 5
4 1
1 3
输出样例#1:

6

说明

Ski the second slope once, take the lesson, and ski the first slope 5 times before time is up: a total of 6 slopes.

首先分析数据范围,显然不能和时间和斜坡扯上关系

那么我们可以构想以课程为状态的dp方程

因为两个课程之间肯定是尽可能选择耗时最小的作业

首先贪心求出能力为i时,做1份作业需要的最短时间c[i],然后dp

令f[i]为第i课程开始时的最大作业数

f[i]=max(f[j]+(class[i].t-class[j].t-class[j].s)/(c[class[j].c]))

这一题要注意细节,比如课程之间的间隙

还有初始值和T时刻,两个都可以当作课程,但初始课程的t为1(仔细想想)

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct Messi
{
int m,l,a;
}a[];
int t,s,n,c[],d[],ss,f[];
bool cmp(Messi a,Messi b)
{
return (a.m<b.m||(a.m==b.m&&a.l<b.l));
}
int first[];
int main()
{int i,j;
//freopen("file.in","r",stdin);
cin>>t>>s>>n;
memset(first,/,sizeof(first));
for (i=;i<=s;i++)
{
scanf("%d%d%d",&a[i].m,&a[i].l,&a[i].a);
}
a[s+].a=;a[s+].m=t;a[s+].l=;a[s+].a=;
for (i=;i<=n;i++)
{
scanf("%d%d",&c[i],&d[i]);
first[c[i]]=min(first[c[i]],d[i]);
}
for (i=;i<=;i++)
first[i]=min(first[i],first[i-]);
sort(a+,a+s+,cmp);
for (i=;i<=s+;i++)
{
for (j=;j<=i-;j++)
{
int d=a[i].m-a[j].m-a[j].l;
if (d)
f[i]=max(f[i],f[j]+d/first[a[j].a]);
}
}
cout<<f[s+];
}

[USACO09OPEN]滑雪课Ski Lessons的更多相关文章

  1. P2948 [USACO09OPEN]滑雪课Ski Lessons

    题意:Bessie去滑雪,限时T,滑雪场有S节课 每节课开始于$m_i$,长度为$l_i$,可以将Bessie的能力值变成$a_i$(注意是变成不是增加) 有n个滑雪坡,去滑雪需要$c_i$的能力,并 ...

  2. [luoguP2948] [USACO09OPEN]滑雪课Ski Lessons(DP)

    传送门 f[i][j]表示i时刻能力值为j的最大滑雪数 显然f[0][1]=0,开始搜索 三种转移: ①美美的喝上一杯**:f[i+1][j]=max(f[i+1][j],f[i][j]) ②滑雪,f ...

  3. [USACO2009 OPEN] 滑雪课 Ski Lessons

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

  4. BZOJ 1571: [Usaco2009 Open]滑雪课Ski

    Description Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里,每天会提供S(0<=S& ...

  5. [bzoj1571][Usaco2009 Open]滑雪课Ski

    题目描述 Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里,每天会提供S(0<=S<=100 ...

  6. 【贪心优化dp决策】bzoj1571: [Usaco2009 Open]滑雪课Ski

    还有贪心优化dp决策的操作…… Description Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里 ...

  7. BZOJ——1571: [Usaco2009 Open]滑雪课Ski

    http://www.lydsy.com/JudgeOnline/problem.php?id=1571 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit:  ...

  8. 1571. [Usaco2009 Open]滑雪课Ski

    传送门 可以想到 $dp$,设 $f[i][j]$ 表示当前等级为 $i$,时间为 $j$ 的最大滑雪次数 显然上课不会上让自己等级降低的课,所以第一维 $i$ 满足无后效性 然后直接枚举 $i,j$ ...

  9. bzoj千题计划156:bzoj1571: [Usaco2009 Open]滑雪课Ski

    http://www.lydsy.com/JudgeOnline/problem.php?id=1571 DP不一定全部全状态转移 贪心的舍去一些不合法的反而更容易转移 在一定能力范围内,肯定滑雪所需 ...

随机推荐

  1. 敏捷开发每日报告--day5

    1 团队介绍 团队组成: PM:齐爽爽(258) 小组成员:马帅(248),何健(267),蔡凯峰(285)  Git链接:https://github.com/WHUSE2017/C-team 2 ...

  2. Python 图片转字符画

    Python 图片转字符画 一.课程介绍 1. 课程来源 原创 2. 内容简介 本课程讲述怎样使用 Python 将图片转为字符画 3. 前置课程 Python编程语言 Linux 基础入门(新版) ...

  3. Android属性动画 nineoldandroids

    各种资源链接 nineoldandroids 任玉刚的五个图片滑动,点击menu http://blog.csdn.net/singwhatiwanna/article/details/1763998 ...

  4. 如何书写高效的css样式

    如何书写高效的css样式? 有以下四个关键要素: 1.高效的css 2.可维护的css 3.组件化的css 4.hack-free  css 书写高效的css: 1.使用外联样式替代行间样式或内嵌样式 ...

  5. JAVA_SE基础——9.基本数据类型间的转换

    前面我已经教会大家基本的数据类型进行了介绍,   然后这篇文章,我来介绍下,基本数据类型的转换. Java中有两种类型转换形式,分别是自动类型转换和强制类型转换. Step1.自动类型转换. 自动类型 ...

  6. 解决SoapFault (looks like we got no XML document)问题

    今天在调试项目的时候出现下面的错误信息: SoapFault looks like we got no XML document (D:\phpStudy\WWW\self.shop.xunmall. ...

  7. 查找git ignore的追踪

    前言 版本控制说简单也简单,说复杂也困难的多.作为开发者,最基础的版本管理和团队协作的功能必须掌握.而其他一些相关的信息也可以了解下.比如,这次就有同事遇到了问题. 遇到的问题 在windows下,往 ...

  8. kubernetes入门(07)kubernetes的核心概念(4)

    一.pod 二.Volume volume可以为容器提供持久化存储,比如 三.私有镜像 在使用私有镜像时,需要创建一个docker registry secret,并在容器中引用.创建docker r ...

  9. 新概念英语(1-109)A Good Idea

    Lesson 109 A good idea 好主意 Listen to the tape then answer this question. What does Jane have with he ...

  10. 粒子系统(二):Canvas绘制精美图案

    准备 IDE:Visual Studio Code Language:JavaScript / ECMAScript 6+ GitHub:Natural2D.JS 本文主要讲述 Particles - ...