【USACO2002 Feb】奶牛自行车队

Time Limit: 1000 ms
Memory Limit: 131072 KBytes

Description

N 头奶牛组队参加自行车赛。车队在比赛时排成一列,需要绕场S 圈。由于空气阻力的作用,领队奶牛消耗的体力要比后面的多。每头奶牛的初始体力都是相同的,记作M,体力减为负数的奶牛只能中途退赛,体力也不会在比赛途中恢复,但最后只要有一位队员到达终点就算完成了比赛。

比赛最小的单位时间是分钟。车队在每分钟必须绕赛场整数圈,最少是每分钟一圈。如果车队在一分钟里绕场x圈,领队奶牛会消耗sqr(x)点体力,跟在后面的所有奶牛将会消耗X点体力。每分钟开始的时刻,车队可以自由选择是否换下领队奶牛,让其他奶牛做领队,并且设定这一分钟的速度。如果设定该分钟的速度为x圈,则要保证领队奶牛的体力至少要大于sqr(x)。

作为它们教练,请你计划一下,应采用什么样的策略才能让车队以最快的时间完成比赛?输入数据保证 S ≤ M,因此一定存在完成比赛的方案。

Input

第一行:三个整数 N,M 和 S,1 ≤ N ≤ 20, 1 ≤ S ≤ M ≤ 100

Output

单个整数:表示最早完成比赛的时间

Sample Input

3 30 20

Sample Output

7

Hint

(时间5领队的奶牛为C)

Solution

再来写一道dp

首先设计状态

不不不,我们先来看数据范围,1≤N≤20,1≤S≤M≤100,这么小(露出邪♂恶的微笑)

那就大胆设计状态f[i][j][k]表示领头的为第i只奶牛走了j圈领头的奶牛体力剩余k的最少时间

为什么这么设计呢?

因为每头奶牛的初始体力相同,如果在最优解中该头奶牛还需继续领头则不要换奶牛

那么开始转移,这道题的转移比较绕,因为数据小方程维数多,这道题有4重循环,很难受,其实这题的转移只需分为两种状况,一种是由当前领头奶牛继续领头,另一种是由上一头奶牛换成这头奶牛

接下来挂方程:

$f\left[ i \right]\left[ j \right]\left[ k \right] = min\left\{ \begin{array}{l}f[i][j - l][k + l*l],1 < = l < = j\& \& k + l*l < = m - j + l\\f[i - 1][j - l][t],1 < = l < = j\& \& 0 < = t < = m\& \& m - j + l = = k + l{\rm{*}}l\end{array} \right.$

这里还有一个小优化(并不知道有没有用),当你处理出f[i][j][k]时,你便可以更新f[i+1][j][m-j](即换一只奶牛)

答案只需扫一遍f[i][s][k]取min即可

代码如下OwO

 
 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int f[][][],n,m,s;
int main()
{
memset(f,,sizeof(f));
scanf("%d%d%d",&n,&m,&s);
f[][][m]=;
for (int i=;i<=n;i++)
for (int j=;j<=s;j++)
for (int k=;k<=m;k++)
for (int l=;l<=j;l++){
int p=pow(l,)+k;if (p<=m-j+l){
f[i][j][k]=min(f[i][j][k],f[i][j-l][p]+);
f[i+][j][m-j]=min(f[i+][j][m-j],f[i][j][k]);
}
}
int ans=;
for (int i=;i<=n;i++)
for (int k=;k<=m;k++) ans=min(ans,f[i][s][k]);
printf("%d",ans);
return ;
}
 
 

 

【USACO2002 Feb】奶牛自行车队的更多相关文章

  1. [Usaco2002 Feb]Rebuilding Roads重建道路

    题目描述 一场可怕的地震后,奶牛用N个牲口棚(1 <= N <= 150,编号1..N)重建了农民John的牧场.奶牛没有时间建设多余的道路,所以现在从一个牲口棚到另一个牲口棚的道路是唯一 ...

  2. 2272: [Usaco2011 Feb]Cowlphabet 奶牛文字

    2272: [Usaco2011 Feb]Cowlphabet 奶牛文字 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 138  Solved: 97 ...

  3. 树的直径 【bzoj3363】[Usaco2004 Feb]Cow Marathon 奶牛马拉松

    3363: [Usaco2004 Feb]Cow Marathon 奶牛马拉松 Description ​ 最近美国过度肥胖非常普遍,农夫约翰为了让他的奶牛多做运动,举办了奶牛马拉松.马拉 松路线要尽 ...

  4. 【bzoj2272】[Usaco2011 Feb]Cowlphabet 奶牛文字 dp

    题目描述 Like all bovines, Farmer John's cows speak the peculiar 'Cow'language. Like so many languages, ...

  5. 树的直径【bzoj3363】 [Usaco2004 Feb]Cow Marathon 奶牛马拉松

    Description 最近美国过度肥胖非常普遍,农夫约翰为了让他的奶牛多做运动,举办了奶牛马拉松.马拉松路线要尽量长,所以,告诉你农场的地图(该地图的描述与上题一致),请帮助约翰寻找两个最远农场间的 ...

  6. BZOJ 3363: [Usaco2004 Feb]Cow Marathon 奶牛马拉松

    Description 给你一个图,两个点至多有一条路径,求最长的一条路径. \(n \leqslant 4\times 10^4\) Sol DFS?DP? 这就是一棵树,方向什么的都没用... 然 ...

  7. BZOJ2272: [Usaco2011 Feb]Cowlphabet 奶牛文字

    n<=250个大写字母和m<=250个小写字母,给p<=200个合法相邻字母,求用这些合法相邻字母的规则和n+m个字母能合成多少合法串,答案mod 97654321. 什么鬼膜数.. ...

  8. 洛谷 2344 奶牛抗议 Generic Cow Protests, 2011 Feb

    [题解] 我们可以轻松想到朴素的状态转移方程,但直接这样做是n^2的.所以我们考虑采用树状数组优化.写法跟求逆序对很相似,即对前缀和离散化之后开一个权值树状数组,每次f[i]+=query(sum[i ...

  9. USACO翻译:USACO 2012 FEB Silver三题

    USACO 2012 FEB SILVER 一.题目概览 中文题目名称 矩形草地 奶牛IDs 搬家 英文题目名称 planting cowids relocate 可执行文件名 planting co ...

随机推荐

  1. 用php生成HTML文件的类

    目的 用PHP生成HTML文档, 支持标签嵌套缩进, 支持标签自定义属性 起因 这个东西确实也是心血来潮写的, 本来打算是输出HTML片段用的, 但后来就干脆写成了一个可以输出完整HTML的功能; 我 ...

  2. 使用NamedParameterJdbcTemplate

    [在JDBC模板中使用具名参数] 1.在经典的JDBC用法中,SQL参数使用占位符?表示,并且受到位置的限制.定为参数的问题在于,一旦参数的顺序发生变化,就必须改变参数绑定. 2.在Spring JD ...

  3. Spring Tool Suite 安装

    第一步:到http://spring.io/tools/sts/all/上下载对应版本.(此处以博主Windows64位系统为例) 第二步: 进入eclipse,依次点击help-->Insta ...

  4. CodeForcesGym 100753B Bounty Hunter II

    Bounty Hunter II Time Limit: 5000ms Memory Limit: 262144KB This problem will be judged on CodeForces ...

  5. JAVA虚拟机运行时内存划分--运行时数据区域

    Java虚拟机在执行java程序时会把内存划分为以下几个不同的数据区域: java虚拟机内存划分(运行时)1.线程私有的: 程序计数器(Program Counter Register):可以看作当前 ...

  6. T1082 线段树练习3 codevs

    http://codevs.cn/problem/1082/ 题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. 输入描述 ...

  7. 【sql技巧】mysql修改时,动态指定要修改的字段 update `table` set (case when ....) = 1 where id = xx

    如果你点进了这篇帖子,那么你一定遇到了跟我一样的问题.别看题目的set case when...,我一开始也是第一反应是用case when但是发现并不好使. 问题呢,说得高大上一点:动态指定要修改的 ...

  8. 第3章 ES文档和故障处理

    第3章 ES文档和故障处理 一.ES网络配置表 ES网络配置表是ES的硬件和软件组成的列表.ES网络配置常包括以下项目: 分级 项目 杂项信息 系统名.系统厂商/型号.CPU速率.RAM.存储器.系统 ...

  9. 【JAVA】两点经纬度直线距离的计算

    来自谷歌地图的计算公式: 通过JAVA的Math类各种方法调用.实现上述公式 private static double EARTH_RADIUS = 6378.137;// 单位千米 /** * 角 ...

  10. TensorFlow 官方文档中文版

    http://wiki.jikexueyuan.com/list/deep-learning/ TensorFlow 官方文档中文版 你正在阅读的项目可能会比 Android 系统更加深远地影响着世界 ...