题目大意:

给出N个正整数,AB两个人轮流取数,A先取。每次可以取任意多个数,直到N个数都被取走。每次获得的得分为取的数中的最小值,A和B的策略都是尽可能使得自己的得分减去对手的得分更大。在这样的情况下,最终A的得分减去B的得分为多少。

分析:

我们身临其境地考虑一下,先手肯定是要从大到小取数,并且一定取的是连续的一段。

证明:

从大到小取数显然,若不是连续取数,则留下的数更多,大的数更多,会给对方更多的机会。所以必然是连续取数。

所以我们倒着来考虑一下,将所有的数从小到大排列之后,f[i]表示两人取完前i个数,先手减去后手的最大值,(这里先手后手是相对的,因为我们是倒序的,和实际取法是完全相反的,它实际上是处理出了1~i个数的情况下的最优解,A先从i开始往左边取,所以说考虑先手减后手最大值)

这样的话,每到一个i,我们可以枚举一下A先手第一步从i取到哪里。而剩下的一段必然是换B当先手来操控。

f[i]=max(a[j]-f[j-1])(1<=j<=i)

j的意义是:A先手从i取到j,由于单调递减,所以他的得分就是a[j],但是剩下的肯定由B来操控出f[j-1],即1~j-1数的先手最大值,这样,A实际做出的超越,就是a[j]-f[j-1],保证先手使得差距最大,所以从所有的a[j]-f[j-1]中取一个max值。

这个max可以前缀最大值优化处理。

更简单的是:因为f[i-1]就是由这个max值转移过来的,所以f[i]=max(f[i-1],a[i]-f[i-1])

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=+;
int n,a[N];
long long f[N];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
sort(a+,a+n+);
for(int i=;i<=n;i++)
f[i]=max(f[i-],a[i]-f[i-]);
printf("%lld",f[n]);
return ;
}

P3507 GRA-The Minima Game的更多相关文章

  1. 洛谷 P3507 [POI2010]GRA-The Minima Game

    P3507 [POI2010]GRA-The Minima Game 题目描述 Alice and Bob learned the minima game, which they like very ...

  2. 洛谷P3507 [POI2010]GRA-The Minima Game

    题目描述 Alice and Bob learned the minima game, which they like very much, recently. The rules of the ga ...

  3. P3507 [POI2010]GRA-The Minima Game

    题目描述 Alice and Bob learned the minima game, which they like very much, recently. The rules of the ga ...

  4. Codeforces Gym 100342E Problem E. Minima 暴力

    Problem E. MinimaTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/attac ...

  5. BZOJ2091: [Poi2010]The Minima Game

    2091: [Poi2010]The Minima Game Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 243  Solved: 163[Subm ...

  6. Góra urządzenia z dwoma zwiększyć moc może sprawić

    Zaprojektowany z rzeczywistym komfortu i łatwości od sportowca w swoim umyśle, kolejna edycja ze wzr ...

  7. bzoj2091: [Poi2010]The Minima Game DP

    2091: [Poi2010]The Minima Game DP 链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2091 思路 这类问题好迷 ...

  8. 2091: [Poi2010]The Minima Game

    2091: [Poi2010]The Minima Game 链接 分析: 首先排序后,一定是选的连续的一段. f[i]表示前i个位置,先手-后手的最大得分. 那么考虑第i个位置是否选,如果选,先手选 ...

  9. Gym 100342E Minima (暴力,单调队列)

    3e7暴力,800ms+过,单调队列维护区间最小值. #include<bits/stdc++.h> using namespace std; typedef long long ll; ...

随机推荐

  1. Nginx的location配置规则梳理

    Nginx几乎是当下绝大多数公司在用的web应用服务,熟悉Nginx的配置,对于我们日常的运维工作是至关重要的,下面就Nginx的location配置进行梳理: 1)location匹配的是nginx ...

  2. Scrum Meeting NO.7

    Scrum Meeting No.7 1.会议内容 经过老师提醒,我们认识到,应尽快把主要功能实现,其他的细枝末节应在这之后慢慢添加.当今最重要的任务是和online组和数据处理组实现数据共享. 此外 ...

  3. 软件项目第一次sprint评论

    软件项目第一次sprint评论 组名:天线宝宝四人组                                   姓名:高长志 1. 组名:9-652组 项目:炸弹人游戏 对于炸弹人游戏,首先 ...

  4. 思甜雅---关于qq的NABCD的模型分析

    个人连接:http://www.cnblogs.com/xiaoliulang/ 关于QQ的NABCD模型 N--Need 随着电脑的普及,人们在网络上进行交流的时间越来越多,由于现有的交流工具还不是 ...

  5. 广商博客冲刺第六七天new

    第四五天沖刺傳送門 第一版的網頁已經放到 云服務器(估計快到期了) 傳送門. (不怎么會玩服務器啊..求指教..目前問題如下: 1.我的電腦mysql密碼跟服務器的密碼不一樣..上傳的時候要把代碼里面 ...

  6. linux和Mac上安装composer

    使用命令行方式,可以直接使用下面的命令,顺序执行: php -r "copy ('https://getcomposer.org/installer','composer-setup.php ...

  7. PAT 1036 跟奥巴马一起编程

    https://pintia.cn/problem-sets/994805260223102976/problems/994805285812551680 美国总统奥巴马不仅呼吁所有人都学习编程,甚至 ...

  8. Ehcache配置参数示例

    从Ehcache的jar包里抽取的 <!-- ~ Licensed to the Apache Software Foundation (ASF) under one ~ or more con ...

  9. eclipse里面找不到databaseexplorer

    在window==>show view==>Other==>Data Management==>Database explorer配置:在右下方点击Database Sourc ...

  10. Node fs模块异步读取验证并异步写入

    console.log("1:开始读成取文件内容...");fs.readFile('./public/2.log',function(err,data){ if(err){ co ...