wikioi 黄金宝藏
来源:互联网 发布:winform开发框架源码 编辑:程序博客网 时间:2024/06/11 09:57
题目描述 Description
小毛终于到达宝藏点,他意外地发现有一个外星人(名叫Pluto)。宝藏是一些太空黄金,有n堆排成一行,每堆中有xi颗黄金。小毛和Pluto决定轮流从中取出黄金,规则是每次只能从最左边或最右边取出一堆黄金,直到所有黄金被取出。小毛先取,两人都以最优策略进行选取,求两人的最后所得。
输入描述 Input Description
第一行是正数n(≤500);第二行为n个正整数xi(≤300),表示每堆黄金的个数。
输出描述 Output Description
仅两个整数,分别表示小毛和Pluto的得分,以空格隔开。
样例输入 Sample Input
6
4 7 2 9 5 2
样例输出 Sample Output
18 11
题解
画一个表,用f[I][j]表示从第i位到第j位中先手可得到的最大得分,则f[i][j]=sum[i][j]-min(f[i+1][j], f[i][j-1])
代码如下
#include<cstdio>#include<cstring>#include<iostream>#include<cstdlib>#include<cmath>using namespace std;int n,a[502],f[502][502],sum[502];int main(){scanf("%d",&n);for(int i=1;i<=n;i++) {int x;scanf("%d",&x); f[i][i]=x; sum[i]=sum[i-1]+x; }for(int j=1;j<n;j++)for(int i=1;i<=n-j;i++) f[i][i+j]=sum[i+j]-sum[i-1]-min(f[i+1][i+j],f[i][i+j-1]);printf("%d %d",f[1][n],sum[n]-f[1][n]);return 0;}
0 0
- wikioi 黄金宝藏
- Codevs 3196 黄金宝藏
- 宝藏
- 宝藏
- 宝藏
- 宝藏
- 宝藏
- 黄金
- 黄金
- 黄金
- 寻找宝藏
- 收集宝藏
- 探寻宝藏
- NOIP2017D2T2 宝藏
- noip2017宝藏
- wikioi-1742
- wikioi-1038
- wikioi-1204
- Java中Vector和Arraylist的比较
- 服务端处理常用的5种基础策略
- Jsp开发基础知识+九大隐式对象+11个内置对象+标签库(实际web开发中的典型)
- 链路层常见报文格式及长度
- Myeclipse调整工具栏提高启动速度
- wikioi 黄金宝藏
- bzoj1021
- 技术成长三个月
- VIM学习笔记:设置VIM的配色方案
- ios 本地存储 (2)数据库存储
- 煮男日记2014-2-27
- Fedora内核升级
- Exercise 6: 字符串
- OracleCommand 构造函数