Cow Cycling 动态规划
1552: Cow Cycling
时间限制(普通/Java):1000MS/10000MS 内存限制:65536KByte
总提交: 39 测试通过:20
描述
The cow bicycling team consists of N (1 <= N <= 20) cyclists. They wish to determine a race strategy which will get one of them across the finish line as fast as possible.
Like everyone else, cows race bicycles in packs because that's the most efficient way to beat the wind. While travelling at x laps/minute (x is always an integer), the head of the pack expends x*x energy/minute while the rest of pack drafts behind him using only x energy/minute. Switching leaders requires no time though can only happen after an integer number of minutes. Of course, cows can drop out of the race at any time.
The cows have entered a race D (1 <= D <= 100) laps long. Each cow has the same initial energy, E (1 <= E <= 100).
What is the fastest possible finishing time? Only one cow has to cross the line. The finish time is an integer. Overshooting the line during some minute is no different than barely reaching it at the beginning of the next minute (though the cow must have the energy left to cycle the entire minute). N, D, and E are integers.
输入
A single line with three integers: N, E, and D
输出
A single line with the integer that is the fastest possible finishing time for the fastest possible cow. Output 0 if the cows are not strong enough to finish the race.
样例输入
3 30 20
样例输出
7
提示
as shown in this chart:
leader E
pack total used this
time leader speed dist minute
1 1 5 5 25
2 1 2 7 4
3 2* 4 11 16
4 2 2 13 4
5 3* 3 16 9
6 3 2 18 4
7 3 2 20 4
* = leader switch
题意:有N头奶牛,每头奶牛的能量是E,现在有一个任务是跑完D圈,但是只要有一头奶牛完成这个任务就算通过。每次需要有一头奶牛领跑,其他的奶牛可以选择继续跟着跑或者离开队伍。领跑的奶牛能量
消耗是x*x laps/min,跟跑的能量消耗是x laps/min,然后让你计算最短需要多少时间完成任务。
题解:有N头奶牛,那么当N-1头奶牛都领跑过,那么最后一头奶牛去完成任务就成了。
状态:wxl[i][j][t],第i头奶牛跑 j 圈,消耗t能量所花费的最短时间。
状态转移方程:wxl[i+1][j][j]=min(wxl[i+1][j][j],wxl[i][j][t]);//换奶牛领跑不消耗时间 wxl[i][j+l][l*l+t]=min(wxl[i][j][t]+1,wxl[i][j+l][l*l+t]);
#include "bits/stdc++.h"
using namespace std;
#define INF 0x3f3f3f3f
int wxl[][][];//存状态,第i头奶牛跑j圈,第i头奶牛消耗t所花费的最小时间
int main()
{
ios::sync_with_stdio(false);
cin.tie();cout.tie();//输入输出加速
int n,e,d,i,j,t,l,sum=INF;
cin>>n>>e>>d;
for(i=;i<=n;++i)for(j=;j<=d;++j)for(t=;t<=e;++t)wxl[i][j][t]=INF;
wxl[][][]=;
for(i=;i<=n;++i)for(j=;j<=d;++j)for(t=;t<=e;++t)
{
if(wxl[i][j][t]==INF)continue;
for(l=;l+j<=d&&l*l+t<=e;++l)wxl[i][j+l][l*l+t]=min(wxl[i][j][t]+,wxl[i][j+l][l*l+t]);
wxl[i+][j][j]=min(wxl[i+][j][j],wxl[i][j][t]);//换奶牛领跑不消耗时间
}
for(i=;i<=e;++i)sum=min(sum,wxl[n][d][i]);
cout<<sum<<endl;//当完不成任务时输出wxl[n][d][0];
}
//状态转移方程是wxl[i][t+l][l*l+t]=min(wxl[i][j][t]+1,wxl[i][t+l][l*l+t]);wxl[i+1][j][j]=min(wxl[i+1][j][j],wxl[i][j][t]);
Cow Cycling 动态规划的更多相关文章
- [USACO2002][poj1946]Cow Cycling(dp)
Cow CyclingTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 2468 Accepted: 1378Description ...
- POJ 1946 Cow Cycling
Cow Cycling Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 2516 Accepted: 1396 Descr ...
- POJ3267——The Cow Lexicon(动态规划)
The Cow Lexicon DescriptionFew know that the cows have their own dictionary with W (1 ≤ W ≤ 600) wor ...
- POJ3176——Cow Bowling(动态规划)
Cow Bowling DescriptionThe cows don't use actual bowling balls when they go bowling. They each take ...
- POJ - 3176 Cow Bowling 动态规划
动态规划:多阶段决策问题,每步求解的问题是后面阶段问题求解的子问题,每步决策将依赖于以前步骤的决策结果.(可以用于组合优化问题) 优化原则:一个最优决策序列的任何子序列本身一定是相当于子序列初始和结束 ...
- POJ 1946 Cow Cycling(抽象背包, 多阶段DP)
Description The cow bicycling team consists of N (1 <= N <= 20) cyclists. They wish to determi ...
- 【BZOJ3939】[Usaco2015 Feb]Cow Hopscotch 动态规划+线段树
[BZOJ3939][Usaco2015 Feb]Cow Hopscotch Description Just like humans enjoy playing the game of Hopsco ...
- PKU 3267 The Cow Lexicon(动态规划)
题目大意:给定一个字符串和一本字典,问至少需要删除多少个字符才能匹配到字典中的单词序列.PS:是单词序列,而不是一个单词 思路: ...
- poj 3267 The Cow Lexicon (动态规划)
The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8167 Accepted: 3845 D ...
随机推荐
- DDD关键知识点整理汇总
创建领域对象采用构造函数或者工厂,如果用工厂时需要依赖于领域服务或仓储,则通过构造函数注入到工厂: 一个聚合是由一些列相联的Entity和Value Object组成,一个聚合有一个聚合根,聚合根是E ...
- Oracle游标使用
Oracle游标介绍: --声明游标 CURSOR cursor_name IS select_statement --For 循环游标 --()定义游标 --()定义游标变量 --()使用for循环 ...
- 【Python学习】iterator 迭代器小练习
http://anandology.com/python-practice-book/iterators.html Problem 1: Write an iterator class revers ...
- The type com.google.protobuf.GeneratedMessageV3$Builder cannot be resolved. It is indirectly referenced from required .classfiles
在做项目的时候,导入了几个类,导入了相关的jar. 结果在package处报了The type com.google.protobuf.GeneratedMessageV3$Builder canno ...
- 微信小程序中的rpx与移动设备物理像素
如下图: pt也称逻辑像素点,px物理像素点,1pt等于2px或者3px或更多; iphone6下面0.5pt=1px=1rpx; 使用rpx,小程序在不同设备分辨率下自行转换: PPI=物理像素开根 ...
- 【转】jenkins+gitlab配置遇到问题
搭建jenkins+gitlab拉取代码失败,日志如下: ERROR: Error fetching remote repo 'origin'hudson.plugins.git.GitExcepti ...
- VScode中运行python程序,使用Code Runner插件
把我的py文件加载在里面,想要运行一下. 可是...没有动静 于是我又到网上去查,原来要配置tasks.json,可我照着网上的方法弄好后还是没法运行,于是我便投入了code runner的怀抱 co ...
- Linux开局配置注意事项
1.修改ssh配置文件远程端口号,防止攻击 sed -ri 's/“#Port 22”/“Port 10086”/g‘ /etc/ssh/sshd_config 2.修改ssh配置文件 ...
- 向日葵连CentOS
TeamViewer可以连CentOS,但TeamViewer最近老是提示“检测为商业用途”,5分钟就会自动断,用起来非常不爽,所以决定改用向日葵试下,向日葵目前的口碑也不错,更何况是国产软件,更要支 ...
- 2.获取指定目录及子目录下所有txt文件的个数,并将这些txt文件复制到F盘下任意目录
package cn.it.text; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...