18.12.20 POJ 3661 跑步

描述

奶牛们打算通过锻炼来培养自己的运动细胞,作为其中的一员,贝茜选择的运动方式是每天进行N(1 <= N <= 10,000)分钟的晨跑。在每分钟的开始,贝茜会选择下一分钟是用来跑步还是休息。 贝茜的体力限制了她跑步的距离。更具体地,如果贝茜选择在第i分钟内跑步,她可以在这一分钟内跑D_i(1 <= D_i <= 1,000)米,并且她的疲劳度会增加 1。不过,无论何时贝茜的疲劳度都不能超过M(1 <= M <= 500)。如果贝茜选择休息,那么她的疲劳度就会每分钟减少1,但她必须休息到疲劳度恢复到0为止。在疲劳度为0时休息的话,疲劳度不会再变动。晨跑开始时,贝茜的疲劳度为0。 还有,在N分钟的锻炼结束时,贝茜的疲劳度也必须恢复到0,否则她将没有足够的精力来对付这一整天中剩下的事情。 请你计算一下,贝茜最多能跑多少米。

输入第1行: 2个用空格隔开的整数:N 和 M
第2..N+1行: 第i+1为1个整数:D_i输出第1行: 输出1个整数,表示在满足所有限制条件的情况下,贝茜能跑的最大 距离

样例输入

5 2
5
3
4
2
10

样例输出

9

提示

对于30%的数据,N <= 50, M <= 10

来源

USACO 2008 January Silver

 1 #include <iostream>
 2 #include <string.h>
 3 #include <algorithm>
 4 #include <stack>
 5 #include <string>
 6 #include <math.h>
 7 #include <queue>
 8 #include <stdio.h>
 9 #include <string.h>
10 #include <set>
11 #include <vector>
12 #include <fstream>
13 #define maxn 10005
14 #define inf 999999
15 #define cha 127
16 #define eps 1e-6
17 using namespace std;
18
19 int dp[maxn][505], dis[maxn];
20 int n, m;
21
22 void f() {
23     for (int i = 2; i <= n; i++)
24     {
25         dp[i][0] = dp[i - 1][0];
26         for (int j = 0; j < m; j++)
27         {
28             dp[i][j + 1] = max(dp[i - 1][j] + dis[i], dp[i][j + 1]);
29             if(i>=j+1)dp[i][0] = max(dp[i-j-1][j + 1], dp[i][0]);
30         }
31     }
32     printf("%d\n", dp[n][0]);
33 }
34
35 void init() {
36     scanf("%d%d", &n, &m);
37     for (int i = 1; i <= n; i++) {
38         scanf("%d", &dis[i]);
39         dp[i][1] = dis[i];
40         dp[i + 1][0] = dis[i];
41     }
42     f();
43 }
44
45 int main() {
46     init();
47     return 0;
48 }

dp要一层层dp,不然也会TLE,思路要清晰

牧场物语USACO……

请问DSA为什么要考dp?

原文地址:https://www.cnblogs.com/yalphait/p/10148579.html

时间: 2024-10-10 07:11:18

18.12.20 POJ 3661 跑步的相关文章

18.12.17 POJ 1569 Myacm Triangles

描述 There has been considerable archeological work on the ancient Myacm culture. Many artifacts have been found in what have been called power fields: a fairly small area, less than 100 meters square where there are from four to fifteen tall monuments

18.12.17 POJ 1269 Intersecting Lines

描述 We all know that a pair of distinct points on a plane defines a line and that a pair of lines on a plane will intersect in one of three ways: 1) no intersection because they are parallel, 2) intersect in a line because they are on top of one anoth

12.17 Nginx负载均衡;12.18 ssl原理;12.19 生产ssl密钥对;12.20 Nginx配置ssl

扩展: 针对请求的uri来代理 http://ask.apelearn.com/question/1049 根据访问的目录来区分后端web http://ask.apelearn.com/question/920 12.17 Nginx负载均衡 1. 安装dig命令: [[email protected] ~]# yum install -y bind-utils 2. 用dig获取qq.com的ip地址: [[email protected] ~]# dig qq.com 3. 创建ld.co

12.17 Nginx负载均衡;12.18 ssl原理;12.19 生产ssl密钥对;12.20 N

12.17 Nginx负载均衡:12.18 ssl原理:12.19 生产ssl密钥对:12.20 Nginx配置ssl 扩展: 针对请求的uri来代理 : http://ask.apelearn.com/question/1049 根据访问的目录来区分后端的web : http://ask.apelearn.com/question/920 nginx长连接 : http://www.apelearn.com/bbs/thread-6545-1-1.html nginx算法分析 : http:/

12.17 Nginx负载均衡 12.18 ssl原理 12.19 生成ssl密钥对 12.20 N

12.17 Nginx负载均衡 [[email protected] ~]# yum install -y bind-utils[[email protected] ~]# dig www.qq.comANSWER SECTION:www.qq.com. 73 IN A 59.37.96.63www.qq.com. 73 IN A 14.17.42.40www.qq.com. 73 IN A 14.17.32.211[[email protected] ~]# curl -x127.0.0.1:

2015.12.14-2015.12.20 大论文计划

利用一周时间完成大论文,大论文优先级大于前端学习 12.14周一,写第一章绪论部分; 12.15周二,写完第三章 12.16周三,写完第五章 12.17周四,写完中英文摘要,各章节总结重新增加内容 12.18周五,重修1,2章 12.19周六,重修3,4章 12.20周七,重修5章,写完第6章 附:前端研修的内容

java 18 - 12 模拟斗地主洗牌、发牌,并对发的牌进行排序

1 /* 2 模拟斗地主的发牌功能(发牌完毕后发到手上的牌是有顺序的) 3 分析: 4 A:创建一个HashMap集合 5 B:创建一个ArrayList集合 6 C:创建两个字符串,一个是花色,一个是牌的数字 (发牌得有一盒牌) 7 为了方便以后的排序,创建这两个字符串的时候,按照大小顺序排列(斗地主中的大小顺序) 8 大小王除外 9 D:把这两个字符串放进HashMap集合中(拼接一起 花色+牌号) 同时给每个放进去牌进行编码0--52并存储 10 同时也给ArrayList集合中存储编码,

12.19&amp;12.20 -基础命令练习二

12.19&12.20 基础命令练习二 第1章 Linux开机启动过程 linux启动过程 1.开启开关 2.bios开机自检 3.mbr引导 4.grub菜单 选择内核 5.加载内核 6.启动init进程  init进程是linux启动的时候运行的第一个进程 7.从/etc/inittab读取运行级别 8.根据/etc/rc.d/rc.sysinit 初始化系统 (设置主机名 ip地址) 9.根据运行级别启动对应的软件(开机自启动软件) 10.运行mingetty 显示登录界面 第2章 PAT

poj 3661 Running dp

题意: 有n分钟时间,每分钟牛能跑d[i]路程,在每分钟,牛可以选择跑,这样疲劳度会+1,也可以选择不跑,这样疲劳度会-1(最少到0),问n分钟后疲劳度为0时最多能跑多远,注意牛要疲劳度为0才能继续跑. 分析: 设dp[i][j]表示i分钟结束奶牛疲劳度为j时能跑的最远距离,则转移有:dp[i-1][j-1]->dp[i][j]+d[i],dp[i][j]->dp[i+j][0]; 代码: //poj 3661 //sep9 #include <iostream> using na