已经是NOIP考前的最后一天了

现在在杭州的宾馆里

因为自己没带电脑

因此用ADMAN的电脑

题目描述

一维的世界就是一个数轴。这个世界的狭小我们几乎无法想象。

在这个数轴上,有N个点。从左到右依次标记为点1到N。第i个点的坐标为Xi。经过漫长时间的物理变化和化学变化,这个一维世界中产生了一个高等智慧文明,而这N个点都成为了这个文明的一座城市。而点1则成为了这个文明的首都。

出于政治上和经济上的需要,首都不能和任何城市相距太远。所以政府决定在某两个城市耗巨资修建虫洞。一个修建了虫洞的城市可以瞬移到另一个修建了虫洞的城市,从而大大缩短了N个城市相互之间的距离。原先从任意城市i到城市j的路程等于它们的距离|Xi - Xj|,而现在若两个城市附近都有修建了虫洞的城市,则可以先从i移动到附近的虫洞瞬移到城市j附近的虫洞再移动到j。

政府希望在两个合适的城市修建虫洞,使得修建虫洞以后从点1移动到任意城市经过的最短路程的最大值尽量小。请你计算这个路程的最小值是多少。

输入包含多组数据。

格式

输入格式

第一行包括一个正整数T,表示有T组测试数据。接下来依次是T组测试数据。

每组测试数据的第一行包括一个整数N,表示有N个城市。第二行,N个递增的整数,依次表示N个城市的坐标。

输出格式

输出文件包括T行,每行一个整数,依次表示每组测试数据的答案。

样例

2
3
0 1 21
5
0 100 101 102 103

样例输入

1
2

样例输出

思路

我觉得是一个很好的题目了

第一次提交我才10……

大致就是枚举第二个虫洞的位置

然后取值就可以

在这里附上一个大佬的题解

我的方法是O(n)的,木有下面的二分神。
题意就是加一条权值为0的边,使得最远点距离最小.
容易证明边的起点一定是1.
那么可以枚举边的终点。
假设边的终点在点X,那么可以分2部分来计算,1-X之间的点和点X+1-N.显然后面部分中最远的点是N。
对于前面部分,距离最远的点肯定是在中间的(就是它到1的距离和到X的距离尽可能接近),假设是Y,显然当X变大的时候,Y也会变大,只要移动一下就可以了。

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[200005];
int main()
{int T;scanf("%d",&T);while(T--){int j=2;int ans=0x7fffffff; memset(a,0,sizeof(a));int n;scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);ans=max(a[2]-a[1],a[n]-a[2]);for(int i=3;i<=n;i++){while(j<i && a[i]-a[j]>a[j]-a[1]) ++j;ans=min(max(a[i]-a[j],max(a[j-1]-a[1],a[n]-a[i])),ans);}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/lincold/p/9935404.html

[Vijos1763]Wormhole (贪心/模拟?)相关推荐

  1. 校内hu测(10.6T2,T3)(乱搞+贪心+模拟)

    @liu_runda T2.便(then) [题目描述] 给出一个R*C的棋盘.共有R行C列,R*C个格子.现要在每个格子都填一个非负整数.使得任意一个2*2的正方形区域都满足这样的性质:左上角的数字 ...

  2. 【NOIP2013】积木大赛(差分数组,贪心模拟)

    题目 原题链接 问题描述 分析 直观思路--贪心模拟:每次都处理最长正整数区段. 以[2,3,4,1,2][2,3,4,1,2][2,3,4,1,2]为例: [2,3,4,1,2]⟹[1,2,3,0, ...

  3. HDU - 6746 Civilization(贪心+模拟)

    题目链接:点击查看 题目大意:中文题面 题目分析:一道比赛时写崩了的模拟,赛后参考别人的代码,发现原来这个题目可以写的如此简单 说会题目,n 只有 500 ,可以 n * n 枚举每个位置作为起点,对 ...

  4. CodeForces - 1362E Johnny and Grandmaster(贪心+模拟)

    题目链接:点击查看 题目大意:给出一个基数 p ,再给出 n 个指数 k ,换句话说,现在有一个长度为 n 的序列,每个元素都是 p^k[ i ] ,现在需要将这个序列分到两个集合中,使得两个集合元素 ...

  5. CodeForces - 1321C Remove Adjacent(贪心+模拟)

    题目链接:点击查看 题目大意:给出一个长度不超过100且只包含小写字母的字符串,现在规定,如果某个位置 i 的相邻位置存在着当前位置所代表字母的前一个字母,即 i - 1 和 i + 1 中存在着 a ...

  6. CodeForces - 1303D Fill The Bag(贪心+模拟)

    题目链接:点击查看 题目大意:给出一个背包,容量为 k ,再给出 n 个物品,每个物品的大小保证是 2 的幂次,现在可以进行操作,使得一个物品分为大小相等的,且大小等于原物品一半的两个物品,比如一个物 ...

  7. [cf797c]Minimal string(贪心+模拟)

    题意: 给出了字符串s的内容,字符串t,u初始默认为空,允许做两种操作: 1.把s字符串第一个字符转移到t字符串最后 2.把t字符串最后一个字符转移到u字符串最后 最后要求s.t字符串都为空,问u字符 ...

  8. Codeforces Round #656 (Div. 3) F. Removing Leaves 贪心 + 模拟

    传送门 文章目录 题意: 思路: 题意: 思路: 首先有一个贪心策略就是每次都找一个叶子节点最多的点,让后删掉他的kkk个叶子节点,现在我们就来考虑如何模拟这个过程. 我们整一个vector<s ...

  9. 国王游戏(贪心+模拟)

    题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最 ...

最新文章

  1. 082_Timing事件
  2. Acwing第 2 场周赛【完结】
  3. linux编译lua,Linux CentOS 编译LUA。。搞半天终于对了= =
  4. Android ABI
  5. 如何修改服务器mac地址,如何修改服务器mac地址
  6. 服务器搭建2 VSFTP搭建FTP服务器
  7. 关于“100g文件全是数组,取最大的100个数”解决方法汇总
  8. Asp.net MVC应用在IIS7上部署后403错误解决方案
  9. Mysql 监控性能状态 QPS/TPS
  10. TouchDesigner处理串口数据
  11. 厦门宏发有机器人_2020新版福建省厦门工业机器人工商企业公司名录名单黄页大全23家...
  12. 用python制作上海疫情评论词云图-自定义形状
  13. 山寨手机拇指30掌盟APP软件游戏下载安装破解激活图文教程2
  14. leetcode 73 矩阵归零
  15. CSAPP LAB4 键盘驱动程序的分析与修改(谢罪)
  16. mysql插入成功返回主键_MyBatis + MySQL返回插入成功后的主键id
  17. [JZOJ5498]【清华集训2017模拟12.10】大佬的难题
  18. 2857: 编程题AB-第二价格密封拍卖
  19. U盘为什么需要安全删除才能拔出呢?
  20. 网页分享如何展示标题,描述,缩略图

热门文章

  1. 对于学习率与梯度下降的通俗总结:
  2. 使用zabbix监控VMware
  3. java之旅(1)序言
  4. 解三元一次方程c语言,解三元一次方程的c语言程序
  5. History lives on in this distinguished Polish city 2017/1/4
  6. 谁是西方历史上“第一个”数学家?
  7. [BZOJ4355] Play with sequence(线段树)
  8. 用python爬取智联招聘
  9. java71-GUL边界布局管理器
  10. 无线个人区域网WPAN 802.11局域网的MAC层协议 CSMA/CA