【USACO3.3.5】一个游戏
2015-04-07 21:23
323 查看
程序里有解释
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int n;
int a[105], s[105]={0};
int f[105][105];
/*
f[i][j] 面对[i,j]的区间, 所能取得的最大值 显然后面对的,能取得的值就是s[j]-s[i - 1] - f[i][j]
f[i][j] 过后肯定是 f[i +1][j] f[i][j - 1]的局势
所以f[i][j] = max(s[j] - s[i] - f[i + 1][j] + a[i], s[j - 1] - s[i - 1] - f[i][j - 1] + a[j]);
f[i][i] = a[i]
*/
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; ++ i)
{
scanf("%d", &a[i]);
s[i] = s[i-1] + a[i];
f[i][i] = a[i];
}
for (int k = 1; k != n ; ++ k)
for (int i = 1; i + k <= n; ++ i)
{
int j = i + k;
f[i][j] = max(s[j] - s[i] - f[i + 1][j] + a[i], s[j - 1] - s[i - 1] - f[i][j - 1] + a[j]);
}
printf("%d %d\n", f[1]
, s
- f[1]
);
return 0;
}
/*
6
4 7 2 9 5 2
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int n;
int a[105], s[105]={0};
int f[105][105];
/*
f[i][j] 面对[i,j]的区间, 所能取得的最大值 显然后面对的,能取得的值就是s[j]-s[i - 1] - f[i][j]
f[i][j] 过后肯定是 f[i +1][j] f[i][j - 1]的局势
所以f[i][j] = max(s[j] - s[i] - f[i + 1][j] + a[i], s[j - 1] - s[i - 1] - f[i][j - 1] + a[j]);
f[i][i] = a[i]
*/
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; ++ i)
{
scanf("%d", &a[i]);
s[i] = s[i-1] + a[i];
f[i][i] = a[i];
}
for (int k = 1; k != n ; ++ k)
for (int i = 1; i + k <= n; ++ i)
{
int j = i + k;
f[i][j] = max(s[j] - s[i] - f[i + 1][j] + a[i], s[j - 1] - s[i - 1] - f[i][j - 1] + a[j]);
}
printf("%d %d\n", f[1]
, s
- f[1]
);
return 0;
}
/*
6
4 7 2 9 5 2
*/
相关文章推荐
- 【USACO3.3.5】游戏(区间dp的滚动数组与编码问题)
- Cpp环境【USACO3.3.5】【CQYZOS1256】A Game 游戏
- 动规——【USACO3.3.5】A Game游戏 IOI'96
- 【USACO题库】3.3.5 A Game游戏
- 一个高度简化的游戏主循环
- 刚刚开始学习j2me,目标是开发一个小游戏
- 一个MIDP俄罗斯方块游戏的设计和实现
- 一个FC游戏的下载站点
- 一个猜数字游戏的算法
- 超想做一个网络游戏!有兴趣的人进来讨论讨论!
- 一个新游戏的思路;大家来说说看,觉得好的话,我做成游戏
- 游戏做了一个界面,j2me总算有些入门了。
- 提交给移动三个wap游戏,终于通过了一个
- 最近正在计划编写一个麻将游戏
- 听说政府作了个网络游戏,寒一个先
- 一个新游戏完成情况
- 发布一个J2ME RPG 游戏地图编辑eclipse plugin(Tiles MapEditor)
- 一个连连看游戏的通路检测算法
- 一个递归实现的取数游戏
- 玩了一个厚道的游戏