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 动态规划的更多相关文章

  1. [USACO2002][poj1946]Cow Cycling(dp)

    Cow CyclingTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 2468 Accepted: 1378Description ...

  2. POJ 1946 Cow Cycling

    Cow Cycling Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 2516   Accepted: 1396 Descr ...

  3. POJ3267——The Cow Lexicon(动态规划)

    The Cow Lexicon DescriptionFew know that the cows have their own dictionary with W (1 ≤ W ≤ 600) wor ...

  4. POJ3176——Cow Bowling(动态规划)

    Cow Bowling DescriptionThe cows don't use actual bowling balls when they go bowling. They each take ...

  5. POJ - 3176 Cow Bowling 动态规划

    动态规划:多阶段决策问题,每步求解的问题是后面阶段问题求解的子问题,每步决策将依赖于以前步骤的决策结果.(可以用于组合优化问题) 优化原则:一个最优决策序列的任何子序列本身一定是相当于子序列初始和结束 ...

  6. POJ 1946 Cow Cycling(抽象背包, 多阶段DP)

    Description The cow bicycling team consists of N (1 <= N <= 20) cyclists. They wish to determi ...

  7. 【BZOJ3939】[Usaco2015 Feb]Cow Hopscotch 动态规划+线段树

    [BZOJ3939][Usaco2015 Feb]Cow Hopscotch Description Just like humans enjoy playing the game of Hopsco ...

  8. PKU 3267 The Cow Lexicon(动态规划)

    题目大意:给定一个字符串和一本字典,问至少需要删除多少个字符才能匹配到字典中的单词序列.PS:是单词序列,而不是一个单词 思路:                                     ...

  9. poj 3267 The Cow Lexicon (动态规划)

    The Cow Lexicon Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8167   Accepted: 3845 D ...

随机推荐

  1. 使用@Autowired时,取值为null

    如果取不到,可以考虑其他方式 场景: @Autowired private StringRedisTemplate redisTemplate; 想使用redisTemplate,但是使用时为null ...

  2. Oracle debug

    执行慢的使用使用debug环境变量,可以收集详细的日志 rootcrs.pl/roothas.pl执行慢 参考如下文档设置debug环境变量,重现问题并收集详细日志. How to turn on r ...

  3. leaflet.toolbar.js

    leaflet.toolbar.js 参考:https://www.javascriptcn.com/read-38464.html

  4. javascript中 for-in和 for-of的区别

    其中for-of是ES6新增的迭代语法 在MDN上的解释: for...in语句以任意顺序遍历一个对象的可枚举属性.对于每个不同的属性,语句都会被执行.for...of语句在可迭代对象(包括 Arra ...

  5. 北京大学Cousera学习笔记--2-计算导论与C语言基础-第一讲.计算机的基本原理-图灵机

    有限状态读写头从一个初始状态开始,对存储器上的输入数据进行读或写操作,经过有限步操作之后停机,此时存储器上的输出数据就是计算结果 (1) 图灵机的构成: 1.一条存储带:双向无限延长:上有一个个的小方 ...

  6. (转载)WinRAR离购买许可只剩x天

    在WinRAR的安装目录下,新建文件RarReg.key(C:\Program Files\WinRAR\RarReg.key) 粘贴以下内容即可: RAR registration dataFede ...

  7. python精进之路1---基础数据类型

    python精进之路1---基本数据类型 python的基本数据类型如上图,重点需要掌握字符串.列表和字典. 一.int.float类型 int主要是用于整数类型计算,float主要用于小数. int ...

  8. nginx 阻止非自己域名解析到服务器

    server模块加入 default_server server { listen 80 default_server; return 403; # return 301 https://$serve ...

  9. Python 上下文管理协议中的__enter__和__exit__基本理解

    所谓上下文管理协议,就是咱们打开文件时常用的一种方法:with __enter__(self):当with开始运行的时候触发此方法的运行 __exit__(self, exc_type, exc_va ...

  10. storm-sql-kafka问题情况

    首先上官方文档:http://storm.apache.org/releases/1.2.2/storm-sql.html 解决的问题 1.kafka版本不对 开始测试时采用storm1.2.2+ka ...