博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
csust1086蘑菇真的贵,友情价更高
阅读量:4579 次
发布时间:2019-06-09

本文共 1314 字,大约阅读时间需要 4 分钟。

Description

由于提莫为巡逻准备的蘑菇太多了,多余的蘑菇路上种不下,于是他精心挑选了一些蘑菇拜访他的好朋友小炮

提莫的蘑菇一共有n个,对于编号为i的蘑菇魔力值是ai。蘑菇的魔力值越高,小炮就越喜欢。当然因为二人是好朋友,蘑菇魔力值最低也不会小于0

提莫要与小炮分享这些蘑菇,他们制定了一个因吹斯听的分配规则:

两人按1-n的顺序逐个分配每个蘑菇的归属权

对于一个蘑菇,如果这一轮的分配者将这个蘑菇分给自己,那么下一轮分配权将转让给对方

反之,如果分配者将蘑菇分配给对方,下一轮他还将持有分配权

你可能会以为提莫会让着小炮,不你想多了!爱恶作剧的提莫会尽力让小炮所获得的蘑菇的魔力值的总和尽可能小!(友尽警告

请你帮小炮算算,如果小炮先手分配,他所能获得的蘑菇的魔力值之和的最大值会是多少?

注意:提莫和小炮都足够聪明且均采取最优策略

Input

单组输入

第一行输入一个n,代表物品的数量,1 <= n <= 3e5

第二行输入n个数字a1-an,代表这n个蘑菇的魔力值,0 <= ai <= 1e9

Output

一个数字,小炮所能获得的蘑菇的魔力值之和的最大值。

Sample Input 1

2

10 20
Sample Output 1

20

Hint

对于样例1,小炮可以要走第一个蘑菇,提莫拿走第二个蘑菇,小炮的喜爱程度是10

小炮也可以把第一个蘑菇给提莫,继续持有第二个蘑菇的分配权,然后拿走第二个蘑菇喜爱程度是20
所以小炮能拿到蘑菇的最大喜爱程度是20

Source

2019年集训队选拔赛

思路:基础博弈论dp,因为是最优策略, 那么先手后手都没区别,都是最优的,也就不需要开而二维了。这是一道CF原题改编的,下次找找贴过来。

注:学校的OJ数据范围毒瘤啊,开long long保险一些。

#include 
#include
#include
#include
using namespace std;#define ll long longconst int maxn = 3e5;ll sum[maxn];ll dp[maxn];ll th[maxn];int main(int argc, char *argv[]) {
ll n; while(~scanf("%lld",&n)) {
for(ll i = 1;i<=n;i++) {
scanf("%lld",&th[i]); } for(ll i = n;i>=1;i--) {
sum[i] = sum[i + 1] + th[i]; dp[i] = max(dp[i + 1],sum[i + 1] - dp[i + 1] + th[i]); } printf("%lld\n",dp[1]); } return 0;}

转载于:https://www.cnblogs.com/tomjobs/p/10612570.html

你可能感兴趣的文章
2016012032四则运算网页版结对项目报告
查看>>
淘宝专业版改基础版方法
查看>>
[转]ARM Pipeline
查看>>
[转]Blocking Code Injection on iOS and OS X
查看>>
颜色分类函数
查看>>
(中等) HDU 4725 The Shortest Path in Nya Graph,Dijkstra+加点。
查看>>
sort-归并排序
查看>>
django 快速实现完整登录系统(cookie)
查看>>
.NET中的out和ref关键字
查看>>
Python之ftp服务器
查看>>
KMP预处理
查看>>
oracle的wm_concat函数实现行转列
查看>>
C语 三子棋小游戏
查看>>
[BZOJ 1861] 书架
查看>>
送给毕业生的一个学习建议
查看>>
基于redis+lua实现高并发场景下的秒杀限流解决方案
查看>>
Oracle 块修改跟踪 (Block Change Tracking) 说明
查看>>
阿里云 Redis 服务遇到的问题
查看>>
Jwt Token 安全策略使用 ECDSA 椭圆曲线加密算法签名/验证
查看>>
Window2008通过web.config进行限制ip访问
查看>>