题目描述

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

输入

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

输出

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

样例输入

4
30
25
10
35

样例输出

60

提示

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

这题是神仙,大部分人都对那个鬼畜的方程式一脸蒙蔽(开始我也是的),

 dp[i][j]=sum[i][j]-min(dp[i+1][j],dp[i][j-1])

这个东西其实很好理解,dp【i】【j】表示从i到j这一段先手所能取得的最大值,(是先手,不一定是贝西)

所有金币都取完时,最后一个一定是后手的人去取,而我们的dp是从里往外扫,而现实游戏中是从外往里扫(其实就是反过来了),所以此时的DP数组的先手,其实是游戏中的后手,而所有金币,不是被先手拿,就是被后手拿,所以总的金币数减去后手所拿的最小金币数,就是先手的最大金币数,而后面的加一减一就表示是拿左边还是右边

然后

在你感觉这是道水题时,发现了空间是64MB,这就是坑人心态,卡时间可以用快读或其他鬼畜优化卡过去,卡空间就。。。。。(你又不能去吧测评机改了。。。)

所以,压维就显得很重要,其实j这一维是可以省掉的,枚举一下区间的长度就可以啦。。。然后DP方程式就变成了这样

dp[i---->i+len]=sum[i--->i+len]-min(dp[i+1----->i+len],dp[i----->i+len-1])

然后循环稍微改一下

1 for(int j=1;j<=n;j++)

2 for(int i=1;i<=n-j;i++)

这样就可以完美的卡掉一维,然后就过了,然后就没然后了。。。

感觉这题刷新了我的认知(还是太弱了,不像这位大佬,一眼就看出来了。。。。)

最后加下代码,巨短

 1 #include<iostream>
 2 #include<algorithm>
 3
 4 using namespace std;
 5 const int maxn=5010;
 6 int sum[maxn];
 7 int dp[maxn];
 8 int f[maxn];
 9 int n,x;
10 int main()
11 {
12     cin>>n;
13     for(int i=1;i<=n;i++)
14     {
15         cin>>x;
16         sum[i]=sum[i-1]+x;
17         dp[i]=x;
18     }
19     for(int j=1;j<=n;j++)
20     {
21         for(int i=1;i<=n-j;i++)
22         {
23             dp[i]=sum[i+j]-sum[i-1]-min(dp[i],dp[i+1]);
24         }
25     }
26     cout<<dp[1]<<endl;
27     return 0;
28 }

最后还是要膜一下机房的各位大佬,尤其是这位,一直坐他旁边感觉怪。。。。

转载于:https://www.cnblogs.com/2529102757ab/p/11341033.html

bzoj2101:[USACO2010 DEC]TREASURE CHEST 藏宝箱相关推荐

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

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

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

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

  3. UVA 12325 宝箱 Zombie‘s Treasure Chest

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

  4. 【BZOJ】2099: [Usaco2010 Dec]Letter 恐吓信

    [题意]给定长度为n和m的两个字符串S和T,要求在字符串S中取出若干段拼成T(可重复取),求最小段数,n,m<=50000. [算法]后缀自动机 || 后缀数组 [题解]对串S建SAM,然后在上 ...

  5. BZOJ2490 Zombie’s Treasure Chest

    如果n = lcm(s1, s2),那么就可以直接得到maxV = (v / s1 * v1, v / s2 *v2) 然后还剩下一点体积我们暴力枚举用s1的量,让s1为max(s1, s2)可以减少 ...

  6. BZOJ——T 2097: [Usaco2010 Dec]Exercise 奶牛健美操

    http://www.lydsy.com/JudgeOnline/problem.php?id=2097 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: ...

  7. UVA12325Zombie's Treasure Chest 宝箱

    题意:给定两个箱子体积s1,s2,价值v1,v2,给出一个体积为V的宝箱,求可装入的最大价值. 分析:正常写肯定是超时的,把状况简化,第一种,当s1,s2都很小时,就看它们的价值比,v1/s1 ,v2 ...

  8. [USACO10DEC] Treasure Chest

    题目链接 90 Points:智障的区间 DP--设 dp[i][j] 表示区间 [i, j] 能取的最大价值,但我还是 sd 地开了第三维表示先取还是后取的价值. 交上去以为能 A,结果 #2 开心 ...

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

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

  10. UVA - 12325 Zombie's Treasure Chest 暴力

    根据两种情况 选择不同枚举 哇!  这题开始用 int 类型的数写的,只有 存最大 价值量的 mix_ 用了long long ,结果交了一遍 wa ,查了一遍 没问题啊?? 后来意识到 max 函数 ...

最新文章

  1. 速览!CVPR 2020 最新论文
  2. python里面self_Python中的self详细解析
  3. python中元组_理解python中的元组
  4. php实现cookie加密解密
  5. 分布式实时日志分析解决方案ELK部署架构
  6. 【九度OJ】题目1078-二叉树遍历
  7. js 小数点 精准算法
  8. 存储函数和存储过程的区别
  9. 如何在Marketing Cloud里创建extension field扩展字段
  10. Java探索之旅(11)——抽象类与接口
  11. mysql sleep 5908_mysql连接卡死,很多线程sleep状态,导致CPU中mysqld占用率极高(问题原因还待考证)...
  12. 《当程序员的那些狗日日子》(三十六)无名的配角
  13. VMWare虚拟机安装RedHat Linux全过程
  14. python课堂点名_Python制作课堂点名器,原来还能这么玩!
  15. 噫吁嚱!文言文亦能编程!此诚年度最骚语言也
  16. 幂运算的O(lgn)算法
  17. MT6323详细芯片资料分享 MT6323设计原理图须知
  18. mac 下安装swoole
  19. 计算机图形学结课论文,计算机图形学基础教程结课论文
  20. Linux Perl安装

热门文章

  1. mysql 储存特殊符号表情报错
  2. php 生成思维导图,JavaScript如何生成思维导图(mindmap)
  3. deepin设置快捷键
  4. Modbus功能码及错误码说明
  5. 计算机处理器i3 i5,realme Book笔记本高清渲染图曝光 配置上搭载11代酷睿i3/i5处理器...
  6. 电驴搜索服务器正在连接,电驴未连接到服务器是什么原因?
  7. 俄勒冈大学计算机科学专业,美国俄勒冈大学计算机与信息科学博士后
  8. 2019年7月中国编程语言排行榜,Julia工资近四万
  9. 研究论文:Uniswap V3中的无常损失
  10. 第一次做Google SEO,如何才能做好谷歌的优化?