题目名称 | 754. [USACO Open09] 滑雪训练 |
---|---|
输入输出 | ski.in/out |
难度等级 | ★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 | cqw 于2012-04-13加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:32, 提交:97, 通过率:32.99% | ||||
胡嘉兴 | 100 | 0.022 s | 3.20 MiB | C++ |
201101 | 100 | 0.027 s | 4.27 MiB | C++ |
kaaala | 100 | 0.029 s | 4.28 MiB | C++ |
slongle | 100 | 0.046 s | 8.14 MiB | Pascal |
qing | 100 | 0.048 s | 4.97 MiB | C++ |
王者自由 | 100 | 0.051 s | 6.28 MiB | C++ |
Makazeu | 100 | 0.052 s | 4.23 MiB | C++ |
Lik | 100 | 0.068 s | 4.40 MiB | C++ |
沉迷学习的假的Keller | 100 | 0.068 s | 4.49 MiB | C++ |
Magic_Sheep | 100 | 0.069 s | 8.34 MiB | C++ |
本题关联比赛 | |||
20120413 |
关于 滑雪训练 的近10条评论(全部评论) | ||||
---|---|---|---|---|
hello
霖:404
2019-04-09 20:16
3楼
| ||||
回复 @ZXCVBNM_1 :
赞 | ||||
很好的一道动态规划。
f[i][j]为到i时刻,能力为j时的最多滑的次数,然后开三个数组来优化这个动规方程。ks[i][j]为滑雪课时间末端点为i,提到能力值为j时的始端点。我们可以贪心来确定这个值,只有这个值尽可能大才会最优。然后每次对于一次课程,要从f[ks[i][j]][任意能力值]转移过来,所以还要用g[i]表示f[ks[i][j]][任意能力值]的最大值。然后,对于能力要求值相同的滑雪坡道,贪心选择用时少的。然后就好啦 |
农夫约翰想带着他的奶牛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次滑坡。