[Vijos1763]Wormhole (贪心/模拟?)
已经是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 (贪心/模拟?)相关推荐
- 校内hu测(10.6T2,T3)(乱搞+贪心+模拟)
@liu_runda T2.便(then) [题目描述] 给出一个R*C的棋盘.共有R行C列,R*C个格子.现要在每个格子都填一个非负整数.使得任意一个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, ...
- HDU - 6746 Civilization(贪心+模拟)
题目链接:点击查看 题目大意:中文题面 题目分析:一道比赛时写崩了的模拟,赛后参考别人的代码,发现原来这个题目可以写的如此简单 说会题目,n 只有 500 ,可以 n * n 枚举每个位置作为起点,对 ...
- CodeForces - 1362E Johnny and Grandmaster(贪心+模拟)
题目链接:点击查看 题目大意:给出一个基数 p ,再给出 n 个指数 k ,换句话说,现在有一个长度为 n 的序列,每个元素都是 p^k[ i ] ,现在需要将这个序列分到两个集合中,使得两个集合元素 ...
- CodeForces - 1321C Remove Adjacent(贪心+模拟)
题目链接:点击查看 题目大意:给出一个长度不超过100且只包含小写字母的字符串,现在规定,如果某个位置 i 的相邻位置存在着当前位置所代表字母的前一个字母,即 i - 1 和 i + 1 中存在着 a ...
- CodeForces - 1303D Fill The Bag(贪心+模拟)
题目链接:点击查看 题目大意:给出一个背包,容量为 k ,再给出 n 个物品,每个物品的大小保证是 2 的幂次,现在可以进行操作,使得一个物品分为大小相等的,且大小等于原物品一半的两个物品,比如一个物 ...
- [cf797c]Minimal string(贪心+模拟)
题意: 给出了字符串s的内容,字符串t,u初始默认为空,允许做两种操作: 1.把s字符串第一个字符转移到t字符串最后 2.把t字符串最后一个字符转移到u字符串最后 最后要求s.t字符串都为空,问u字符 ...
- Codeforces Round #656 (Div. 3) F. Removing Leaves 贪心 + 模拟
传送门 文章目录 题意: 思路: 题意: 思路: 首先有一个贪心策略就是每次都找一个叶子节点最多的点,让后删掉他的kkk个叶子节点,现在我们就来考虑如何模拟这个过程. 我们整一个vector<s ...
- 国王游戏(贪心+模拟)
题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最 ...
最新文章
- 082_Timing事件
- Acwing第 2 场周赛【完结】
- linux编译lua,Linux CentOS 编译LUA。。搞半天终于对了= =
- Android ABI
- 如何修改服务器mac地址,如何修改服务器mac地址
- 服务器搭建2 VSFTP搭建FTP服务器
- 关于“100g文件全是数组,取最大的100个数”解决方法汇总
- Asp.net MVC应用在IIS7上部署后403错误解决方案
- Mysql 监控性能状态 QPS/TPS
- TouchDesigner处理串口数据
- 厦门宏发有机器人_2020新版福建省厦门工业机器人工商企业公司名录名单黄页大全23家...
- 用python制作上海疫情评论词云图-自定义形状
- 山寨手机拇指30掌盟APP软件游戏下载安装破解激活图文教程2
- leetcode 73 矩阵归零
- CSAPP LAB4 键盘驱动程序的分析与修改(谢罪)
- mysql插入成功返回主键_MyBatis + MySQL返回插入成功后的主键id
- [JZOJ5498]【清华集训2017模拟12.10】大佬的难题
- 2857: 编程题AB-第二价格密封拍卖
- U盘为什么需要安全删除才能拔出呢?
- 网页分享如何展示标题,描述,缩略图
热门文章
- 对于学习率与梯度下降的通俗总结:
- 使用zabbix监控VMware
- java之旅(1)序言
- 解三元一次方程c语言,解三元一次方程的c语言程序
- History lives on in this distinguished Polish city 2017/1/4
- 谁是西方历史上“第一个”数学家?
- [BZOJ4355] Play with sequence(线段树)
- 用python爬取智联招聘
- java71-GUL边界布局管理器
- 无线个人区域网WPAN 802.11局域网的MAC层协议 CSMA/CA