dp( l , r ) = sum( l , r ) - min( dp( l + 1 , r ) , dp( l , r - 1 ) )

被卡空间....我们可以发现 l > r 是无意义的 , 所以可以省下一半的空间

--------------------------------------------------------------------------------

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#define rep( i , n ) for( int i = 0 ; i < n ; ++i )
#define clr( x , c ) memset( x , c , sizeof( x ) )
#define Rep( i , n ) for( int i = 1 ; i <= n ; ++i )
using namespace std;
const int maxn = 5000 + 10;
int d[ maxn * maxn >> 1 ];
int sum[ maxn ];
int n;
#define f( l , r ) ( r + ( ( ( n << 1 ) - l + 2 )  * ( l - 1 ) >> 1 ) )
int dp( int l , int r ) {
int &ans = d[ f( l , r ) ];
if( ans != -1 ) return ans;
return ans = sum[ r ] - sum[ l - 1 ] - min( dp( l + 1 , r ) , dp( l , r - 1 ) );
}
int main() {
freopen( "test.in" , "r" , stdin );
cin >> n;
sum[ 0 ] = 0;
clr( d , -1 );
Rep( i , n ) {
int v;
scanf( "%d" , &v );
d[ f( i , i ) ] = v;
sum[ i ] = sum[ i - 1 ] + v;
}
cout << dp( 1 , n ) << "\n";
return 0;
}

--------------------------------------------------------------------------------

2101: [Usaco2010 Dec]Treasure Chest 藏宝箱

Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 374  Solved: 174
[Submit][Status][Discuss]

Description

Bessie and Bonnie have found a treasure chest full of marvelous gold coins! Being cows, though, they can't just walk into a store and buy stuff, so instead they decide to have some fun with the coins. The N (1 <= N <= 5,000) coins, each with some value C_i (1 <= C_i <= 5,000) are placed in a straight line. Bessie and Bonnie take turns, and for each cow's turn, she takes exactly one coin off of either the left end or the right end of the line. The game ends when there are no coins left. Bessie and Bonnie are each trying to get as much wealth as possible for themselves. Bessie goes first. Help her figure out the maximum value she can win, assuming that both cows play optimally. Consider a game in which four coins are lined up with these values: 30 25 10 35 Consider this game sequence: Bessie Bonnie New Coin Player Side CoinValue Total Total Line Bessie Right 35 35 0 30 25 10 Bonnie Left 30 35 30 25 10 Bessie Left 25 60 30 10 Bonnie Right 10 60 40 -- This is the best game Bessie can play.

  贝西和邦妮找到了一个藏宝箱,里面都是金币!但是身为两头牛,她们不能到商店里把金币换成好吃的东西,于是她们只能用这些金币来玩游戏了。
    藏宝箱里一共有N枚金币,第i枚金币的价值是Ci。贝西和邦妮把金币排成一条直线,她们轮流取金币,看谁取到的钱最多。贝西先取,每次只能取一枚金币,而且只能选择取直线两头的金币,不能取走中间的金币。当所有金币取完之后,游戏就结束了。
    贝西和邦妮都是非常聪明的,她们会采用最好的办法让自己取到的金币最多。请帮助贝西计算一下,她能拿到多少钱?

Input

* Line 1: A single integer: N * Lines 2..N+1: Line i+1 contains a single integer: C_i

第一行:单个整数N,表示硬币的数量,1<=N≤5000
第二行到第N+1行:第i+l行有一个整数Ci,代表第i块硬币的价值,1≤Ci≤5000

Output

* Line 1: A single integer, which is the greatest total value Bessie can win if both cows play optimally.

  第一行:单个整数,表示如果双方都按最优策略玩游戏,先手可以拿到的最大价值

Sample Input

4
30
25
10
35

Sample Output

60

HINT

(贝西最好的取法是先取35,然后邦妮会取30,贝西再取25,邦妮最后取10)

Source

Silver

转载于:https://www.cnblogs.com/JSZX11556/p/4592378.html

BZOJ 2101: [Usaco2010 Dec]Treasure Chest 藏宝箱( dp )相关推荐

  1. bzoj2101【Usaco2010 Dec】Treasure Chest 藏宝箱

    2101: [Usaco2010 Dec]Treasure Chest 藏宝箱 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 418  Solved: ...

  2. BZOJ 2097 [Usaco2010 Dec]Exercise 奶牛健美操

    [题意] 给出一棵树.现在可以在树中删去m条边,使它变成m+1棵树.要求最小化树的直径的最大值. [题解] 二分答案.$Check$的时候用$DP$,记录当前节点每个儿子的直径$v[i]$,如果$v[ ...

  3. Uva12325 Zombie's Treasure Chest [二分区间+模拟退火]

    Zombie's Treasure Chest 题目链接 https://cn.vjudge.net/problem/UVA-12325 题意 两种物品无穷多个,第一种物品重量s1s_1s1​,价值v ...

  4. UVA 12325 宝箱 Zombie‘s Treasure Chest

    宝箱 Zombie's Treasure Chest 题面翻译 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1::宝物2的体积为S2,价值为V2.输入均为32位带符号整数. ...

  5. BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会 树形DP

    [Usaco2010 Mar]gather 奶牛大集会 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1 ...

  6. bzoj 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(DP)

    1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 941  Solved ...

  7. [DP/单调队列]BZOJ 2059 [Usaco2010 Nov]Buying Feed 购买饲料

    首先我想吐槽的是题目并没有表明数据范围... 这个题目 DP方程并不难表示. dp[i][j]表示前i个地点携带了j个货物的最小花费 dp[i][j] = dp[i-1][k] + (j-k) * c ...

  8. 洛谷P3004 宝箱Treasure Chest——DP

    题目:https://www.luogu.org/problemnew/show/P3004 似乎有点博弈的意思,但其实是DP: f[i][j] 表示 i~j 的最优结果,就可以进行转移: 注意两个循 ...

  9. bzoj 1778: [Usaco2010 Hol]Dotp 驱逐猪猡【dp+高斯消元】

    算是比较经典的高斯消元应用了 设f[i]为i点答案,那么dp转移为f[u]=Σf[v]*(1-p/q)/d[v],意思是在u点爆炸可以从与u相连的v点转移过来 然后因为所有f都是未知数,高斯消元即可( ...

  10. BZOJ 1778 [Usaco2010 Hol]Dotp 驱逐猪猡 ——期望DP

    思路和BZOJ 博物馆很像. 同样是高斯消元 #include <map> #include <ctime> #include <cmath> #include & ...

最新文章

  1. 对于量子计算来说,99%的准确度足够吗?
  2. Using-更精彩更有用的做法-短签名
  3. libSVM 参数选择
  4. requests用法
  5. weather at Cambridge will be fine next week
  6. 北京内推 | ​美团无人车团队招聘视觉算法实习生
  7. JUnit 5 –动态测试
  8. insert into select 优化_数据库优化总结
  9. python定义二维数组_在python中定义二维数组
  10. OJ系统原理与实现:Python自动化测试另一个Python程序功能是否正确
  11. Modernizr 浏览器兼容功能检测
  12. Vray2.0材质手册
  13. 递归(recurse)与迭代(iteration)
  14. 笔记本移动热点打开电脑断网、台式机无线wifi打开电脑断网的解决办法
  15. 该虚拟机似乎正在使用中。如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。
  16. vi/vim的一些干货命令及快捷键(跳转最后一行,跳转行末等)~舒服!!!
  17. zabbix3.4绘制网络拓扑图
  18. 解锁 Elastic 最新的数据采集模块 - Ingest manager 和 Elastic Agent
  19. STM32 USB 开发(一)HID Slave 通信
  20. asp.net后台代码如何通过动态的id给aspx中的html控件赋值

热门文章

  1. 【Microsoft Office】免密破解Microsoft Word文档(.docx)的文档保护
  2. vlookup函数使用过程
  3. QT 水晶圆角按钮样式
  4. mysql基础学习--day7
  5. 射频识别技术漫谈(4)——数据编码
  6. 【转】个性化二级域名Nginx配置
  7. Python 树状图怎么画
  8. Miracle - Database Knowledge center
  9. Cadence学习笔记-第二章-瞬态仿真
  10. No input file specified. Nginx PHP