题目链接:点击查看

题目大意:给出n个坐标轴上的点,两个人轮流操作,每次取走其中的一个点,直到最后剩余两个点为止,Vova先手,Vova希望两个点的距离尽可能小,Lesha希望两个点的距离尽可能大,问最后剩余两个点的距离是多少

题目分析:这个题在读题的时候就被样例的解释卡住了,不太明白为什么两个人要那样选择,所以一下子陷入了思维定式,所以说有时候提示也可能是误导人的。。吃了大亏了

首先这是一个无胜负求最优值的博弈,我们需要每一次分析两个人的动作:

  1. Vova希望距离尽可能小,所以他肯定会选择左右两个端点,因为万一最后剩下了端点,距离肯定会比最优解要大,所以Vova不会选择[l,r]中间的点
  2. Lesha希望距离尽可能大,可以和Vova的情况反着分析,得到Lesha只会选择[l,r]中间的点,而不会选择左右的端点

因为两人一共会被拿掉n-2个点,且题目中保证了n是偶数,所以n-2也一定是偶数,两个人分别取走了n/2-1个点

那么假设其中的一种情况:

  1. Vova一直选择取走右端点,而Lesha一直选择取走左数起第二个端点,这样最后剩下的两个点就是样例1中的情况了
  2. Vova第一次取走了左端点,剩下的都取右端点,而Lesha还是一直选择取走左数起的第二个端点,这样最后剩下的两个点就是点2和点2+n/2

再自己模拟几次我们可以发现,区间长度,也就是左右端点的距离,始终固定在了r-l=n/2,然而先手的是Vova,所以最后的答案一定是最小的才行,因为每个人都会选择最优解执行

简单证明到这里,我们可以直接下结论了,答案就是区间长度为n/2中,答案最小的那一组

简单实现一下就ok了,代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=2e5+100;int a[N];int main()
{
//  freopen("input.txt","r",stdin);int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",a+i);sort(a+1,a+1+n);int ans=inf;for(int i=1;i+n/2<=n;i++)ans=min(ans,a[i+n/2]-a[i]);printf("%d\n",ans);return 0;
}

CodeForces - 594A Warrior and Archer(思维+博弈)相关推荐

  1. Codeforces 1077B Disturbed People(思维题)

    Codeforces 1077B Disturbed People(思维题) There is a house with nn flats situated on the main street of ...

  2. Educational Codeforces Round 73 (Rated for Div. 2) E. Game With String 思维博弈 好题(2500)

    传送门 文章目录 题意: 思路: 题意: 思路: 我们将每一段...拿出来看成若干段,将其分成以下四种情况: (1)len<b(1)len<b(1)len<b (2)b≤len< ...

  3. CodeForces - 160D Edges in MST(思维+tarjan/树链剖分+线段树)

    题目链接:点击查看 题目大意:给出一张 n 个点 m 条边组成的带权无向图,现在对于每条边来说,确定一下其分类: 一定是最小生成树上的边 可能是最小生成树上的边 一定不是最小生成树的边 题目分析:两种 ...

  4. 创业与投资的思维博弈均衡,是创投长期成功之道

    2015年被普遍视为中国企业服务创业元年,自2015年至今三年来出现了不少优秀的企业服务创业案例.在2018年初的时候,专注于中国企业服务创投服务的咨询机构.定位于中国TMT产业升级与融合加速器钛资本 ...

  5. Codeforces 846 A Curriculum Vitae 思维 暴力

    题目链接: http://codeforces.com/contest/846/problem/A 题目描述: 给你一个串, 你可以做删除操作, 要求结果串0不能在1的右边, 问最多可以剩几个数字 解 ...

  6. Codeforces 861 B Which floor? 思维

    题目链接: http://codeforces.com/contest/861/problem/B 题目描述: 每个楼梯上有相同数量的数, 都是从1开始, 给你m个不矛盾的信息, 问你能不能判断n在第 ...

  7. CodeForces - 1494E A-Z Graph(构造+思维)

    题目链接:https://vjudge.net/problem/CodeForces-1494E 题目大意:给出一个初始时只有 nnn 个点的有向带权图,需要执行 mmm 次操作,每次操作分为下列三种 ...

  8. CodeForces - 1504C Balance the Bits(思维+构造)

    题目链接:https://vjudge.net/problem/CodeForces-1504C 题目大意:给出一个长度为 nnn 的 010101 串,现在要求构造出两个长度为 nnn 的合法括号序 ...

  9. CF--思维练习--CodeForces - 216C - Hiring Staff (思维+模拟)

    ACM思维题训练集合 A new Berland businessman Vitaly is going to open a household appliances' store. All he's ...

最新文章

  1. Java基础-集合:set
  2. ios .a文件支持结构合并arm64 armv7 i386 x86_64
  3. 先睹为快:Visual Studio 11测试版已于2.29在微软官方网站正式发布
  4. 如何反编译,防止反编译,常见问题总结
  5. jsp mysql驱动程序_JSP通过JDBC驱动MySQL数据库方法
  6. linux如何查看系统架构?(查看系统架构命令)(armv7l)
  7. 吴恩达《Machine Learning》精炼笔记 6:关于机器学习的建议
  8. matchers依赖_Hamcrest Matchers教程
  9. [react] 在react中无状态组件有什么运用场景
  10. c语言scanf函数隐藏的缓冲区,零基础学C语言 笔记四 Scanf函数清除缓冲区
  11. 为什么Kaggle不会让你成为一名出色的数据科学家?
  12. 两组数据的偏差怎么算_数据随机性,如何利用游程检验来检测?
  13. 学习React之前你需要知道的的JavaScript基础知识
  14. PyTorch-07 卷积神经网络(什么是卷积、卷积神经网络、池化层、Batch normalization、经典卷积网络、深度残差网络 ResNet、nn.Module、数据增强)
  15. 视频剪切合并器如何分割音频文件
  16. 江西省谷歌高清卫星地图下载
  17. ShaderWeaver使用教程-动画序列帧
  18. html文本转成二进制,肿么把文本文件转换成二进制bin文件
  19. 周爱民 - 架构师能力模型
  20. php 获取酷狗音乐真实地址

热门文章

  1. Nacos源码HostReactor
  2. Consumer接口练习之按要求打印信息
  3. AdminLTE介绍
  4. ES6新特性之了解ES6以及其发展历史
  5. 外观模式源码解析(springjdbc+myabtis+tomcat)
  6. Java中的查找树和哈希表(一级)
  7. lepus mysql 复制监控_MySQL数据库之CentOS搭建lepus3.8监控MySQL
  8. Spring Cloud Gateway介绍(二)
  9. 微型计算机组装实验报告虚拟,微型计算机组装与维护实训(附光盘)
  10. pytorch教程龙曲良06-10