【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. Nginx配置 隐藏入口文件index.php

    Nginx配置文件里放入这段代码 server { location / { index index.php index.html index.htm l.php; autoindex on; if ...

  2. react----父子组件之间的参数传递

    1.父组件向子组件传递参数 //父组件 import React from 'react'; import './header.css' import ComponentChild from './h ...

  3. Ajax_数据格式_JSON

    [JSON] 1.JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSO ...

  4. nyoj 95 众数问题(set)

    众数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重 ...

  5. noip模拟赛 戏

    [问题背景]zhx 和他的妹子(们) 做游戏.[问题描述]考虑 N 个人玩一个游戏,任意两个人之间进行一场游戏(共 N*(N-1)/2 场),且每场一定能分出胜负.现在, 你需要在其中找到三个人构成“ ...

  6. 仪仗队(codevs 2296)

    题目描述 Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来 ...

  7. java多线程编程核心技术(一)--多线程技能

    1.进程和线程的概念 1.进程:进程是操作系统的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的活动,是程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的一个独立单位. ...

  8. ZFS

    zfs是128bit文件系统,那么为什么容量是2^64byte? 不应该是2^128 / 2^3=2^125 byte吗 文件系统不再局限于单独的物理设备,而且文件系统还允许物理设备把他们自带的那些文 ...

  9. python列表可以加可以乘

    python列表可以加可以乘 list=['abcd',786,2.23,'runoob',70.2] tinylist = [123,'runoob'] print(list) print(list ...

  10. [Vue @Component] Define Props on a Vue Class with vue-property-decorator

    While traditional Vue components require a data function which returns an object and a method object ...