题目链接

90 Points:智障的区间 DP……设 dp[i][j] 表示区间 [i, j] 能取的最大价值,但我还是 sd 地开了第三维表示先取还是后取的价值。

交上去以为能 A,结果 #2 开心地 MLE……一看内存,64MB(把评测机吊起来打一顿)……

100 Points:有些神仙……区间 DP 的滚动数组,dp[i] 表示以 i 为首的区间得到的最大价值。

换一种思路,定义 dp[l][r] 为在区间 [l,r] 先手的人能取到的最大值,区间的长度每加 1,先手就会互换一次,为了让这一次的先手更大,就要让上一次更小,于是得到:

$ dp[l][r] = sum[r] - sum[l - 1] - min(dp[l][r - 1], dp[l + 1][r]); $

斜着滚掉一维……dp[i] 为从 i 到 i + l - 2 区间最优解:

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

放上代码。

90 分:

#include <queue>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;const int maxn = 5000 + 10;
int n, c[maxn], dp[maxn][maxn][2];int main(int argc, const char *argv[])
{freopen("..\\nanjolno.in", "r", stdin);freopen("..\\nanjolno.out", "w", stdout);scanf("%d", &n);for(int i = 1; i <= n; ++i) scanf("%d", &c[i]), dp[i][i][0] = c[i];for(int i = 1; i < n; ++i)dp[i][i + 1][0] = max(c[i], c[i + 1]), dp[i][i + 1][1] = min(c[i], c[i + 1]);for(int i = 3; i <= n; ++i) {for(int l = 1; l <= n - i + 1; ++l) {int r = l + i - 1;if( c[l] + dp[l + 1][r][1] > c[r] + dp[l][r - 1][1] )dp[l][r][0] = c[l] + dp[l + 1][r][1], dp[l][r][1] = dp[l + 1][r][0];else dp[l][r][0] = c[r] + dp[l][r - 1][1], dp[l][r][1] = dp[l][r - 1][0];}}printf("%d %d\n", dp[1][n][0], dp[1][n][1]);fclose(stdin), fclose(stdout);return 0;
}

100 分:

#include <queue>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;const int maxn = 5000 + 10;
int n, c[maxn], dp[maxn];int main(int argc, const char *argv[])
{freopen("..\\nanjolno.in", "r", stdin);freopen("..\\nanjolno.out", "w", stdout);scanf("%d", &n);for(int i = 1; i <= n; ++i) scanf("%d", &dp[i]), c[i] = c[i - 1] + dp[i];for(int i = 2; i <= n; ++i) {for(int l = 1; l <= n - i + 1; ++l) {int r = l + i - 1;dp[l] = c[r] - c[l - 1] - min(dp[l], dp[l + 1]);}}printf("%d\n", dp[1]);fclose(stdin), fclose(stdout);return 0;
}

 —— 月光 委身依赖

    红莲 彻骨清明

    残留余韵 是抗争 徒留其名

转载于:https://www.cnblogs.com/nanjoqin/p/10090619.html

[USACO10DEC] Treasure Chest相关推荐

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

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

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

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

  3. UVA 12325 宝箱 Zombie‘s Treasure Chest

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

  4. BZOJ2490 Zombie’s Treasure Chest

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

  5. UVA12325Zombie's Treasure Chest 宝箱

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

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

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

  7. 【例题 7-11 UVA - 12325】Zombie's Treasure Chest

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 1.N/s1 < 1e6 枚举1的个数 2.N/s2<1e6 枚举2的个数 3.s1和s2的值较小 假设买了s2个1和s ...

  8. Uva 12325 Zombie's Treasure Chest (贪心,分类讨论)

    题意: 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物2的体积为S2,价值为V2.输入均为32位带符号的整数.你的任务是最多能装多少价值的宝物? 分析: 分类枚举, ...

  9. UVA 12325 Zombie's Treasure Chest

    题目大意: 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物2的体积为S2,价值为V2.输入均为32位带符号的整数.你的任务是最多能装多少价值的宝物? 对于宝物1和2, ...

最新文章

  1. c语言拟合线性直线误差最小,急~~~~~~!!!求解!用C语言编写最小二乘法求数据的拟合曲线~并做出图显示拟合效果!高分悬赏!...
  2. C#基础第三天-作业-集合-冒泡排序-模拟名片
  3. .NET Core:新的快速开发平台
  4. CodePage简介(转)
  5. 大数据系列1-规划安排
  6. BigDecimal 加减乘除
  7. kepware怎么读modbus/tcp数据_第479期丨看看这国企9000+的面试题目;国产PLC工控板质量怎么样?...
  8. nb物联网 bc95模块联网 bc95使用
  9. ubuntu安装pr_Ubuntu 18.04 安装 Openbravo-3.0PR19Q1
  10. java web安全框架_7.1 SpringSecurity安全框架
  11. 科研过程中Linux相关问题
  12. LAMP系列文章之一:泛泛而谈LAMP
  13. flutter源码下载(最新)
  14. Java 打印PPT幻灯片
  15. 二分图最佳完美匹配——KM算法总结
  16. Taro ui标签多选
  17. html5游戏引擎推荐
  18. 扒一扒呱哥Q1都干了什么
  19. dlist(随机选择手机品牌列表brandlist)
  20. python中的大括号{}的用法

热门文章

  1. 物联网通讯协议:MQTT,NB-IOT,Zigbee,CoAP,RFID,BLUETOOTH,NFC,4G,HTTP
  2. python发邮件给女朋友代码_python实现邮件发送完整代码(带附件发送方式)
  3. mysql可能锁的表命令_mysql 默许是表级锁一些不太常用命令
  4. 2013电大计算机应用基础试题及答案,[2017年电大]电大2013年计算机应用基础试题及答案[呕心沥血整理].doc...
  5. 21天学通c语言第四版pdf,21天学通Visual C++ PDF扫描版[116MB]
  6. 线程NEW状态和RUNNABLE状态
  7. Linux中Shell脚本函数库的笔记
  8. 数据库的那些事(全是干货)
  9. 智能家居项目开发准备工作
  10. 嵌入式C语言基础(三)