zoj 3471Running
2016-01-30 10:42
274 查看
Description
The cows are trying to become better athletes, so Bessie is running on a track for exactly N (1 ≤ N ≤ 10,000) minutes. During each minute, she can choose to either run or rest for the whole minute.
The ultimate distance Bessie runs, though, depends on her 'exhaustion factor', which starts at 0. When she chooses to run in minute i, she will run exactly a distance of Di (1 ≤ Di ≤ 1,000) and her exhaustion factor will increase by 1 -- but must never be allowed
to exceed M (1 ≤ M ≤ 500). If she chooses to rest, her exhaustion factor will decrease by 1 for each minute she rests. She cannot commence running again until her exhaustion factor reaches 0. At that point, she can choose to run or rest.
At the end of the N minute workout, Bessie's exaustion factor must be exactly 0, or she will not have enough energy left for the rest of the day.
Find the maximal distance Bessie can run.
Input
* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: Line i+1 contains the single integer: Di
Output
* Line 1: A single integer representing the largest distance Bessie can run while satisfying the conditions.
Sample Input
5 2
5
3
4
2
10
Sample Output
9
题意:
有n种气体,当第i种和第j种碰撞,如果j消失,会产生a[i][j]的能量,如果[i]消失,会产生a[j][i]的能量,问最多产生多少能量。
设dp[i]表示在i状态下产生的最大能量,则状态转移方程为 dp[i|(1<<k)]=max(dp[i|(1<<k)],dp[i]+a[j][k]);
代码如下:
The cows are trying to become better athletes, so Bessie is running on a track for exactly N (1 ≤ N ≤ 10,000) minutes. During each minute, she can choose to either run or rest for the whole minute.
The ultimate distance Bessie runs, though, depends on her 'exhaustion factor', which starts at 0. When she chooses to run in minute i, she will run exactly a distance of Di (1 ≤ Di ≤ 1,000) and her exhaustion factor will increase by 1 -- but must never be allowed
to exceed M (1 ≤ M ≤ 500). If she chooses to rest, her exhaustion factor will decrease by 1 for each minute she rests. She cannot commence running again until her exhaustion factor reaches 0. At that point, she can choose to run or rest.
At the end of the N minute workout, Bessie's exaustion factor must be exactly 0, or she will not have enough energy left for the rest of the day.
Find the maximal distance Bessie can run.
Input
* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: Line i+1 contains the single integer: Di
Output
* Line 1: A single integer representing the largest distance Bessie can run while satisfying the conditions.
Sample Input
5 2
5
3
4
2
10
Sample Output
9
题意:
有n种气体,当第i种和第j种碰撞,如果j消失,会产生a[i][j]的能量,如果[i]消失,会产生a[j][i]的能量,问最多产生多少能量。
设dp[i]表示在i状态下产生的最大能量,则状态转移方程为 dp[i|(1<<k)]=max(dp[i|(1<<k)],dp[i]+a[j][k]);
代码如下:
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int a[12][12]; int dp[1<<11]; int main() { int n,i,j,k; while(scanf("%d",&n)!=EOF) { if(n==0) break; for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); memset(dp,0,sizeof(dp)); for(i=0;i<(1<<n);i++) { for(j=0;j<n;j++) { if(i&(1<<j)) continue; for(k=0;k<n;k++) { if(j==k||i&(1<<k)) continue; dp[i|(1<<k)]=max(dp[i|(1<<k)],dp[i]+a[j][k]); } } } int ans=0; for(i=0;i<(1<<n);i++) ans=max(ans,dp[i]); printf("%d\n",ans); } return 0; }
相关文章推荐
- Windows Chocolatey
- myBatis 通过包含的jdbcType类型
- ubuntu安装jdk
- Java注解学习二:package-info.java的使用
- 解决方法:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
- mybatis时间类型映射:java.util.date到mysql的datetime
- jsp servlet接收中文乱码的问题
- Linux生成core文件、core文件路径设置
- Effective Java读书笔记(六)
- Erlang - Download and Install for Linux
- Java注解学习:注解术语以及自定义注解
- 23种设计模式
- windows安装MySQL压缩包
- Linux-2.6.39在Tiny6410上的移植
- 数据结构——线性表
- 前端笔记十一,盒模型与布局相关属性
- python爬虫抓取新华网新闻并自动生成word文档
- 2012年第三届蓝桥杯(C/C++)预赛题目及个人答案(欢迎指正)
- Xib
- HDU 2147