[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行,每行一个整数,依次表示每组测试数据的答案。
样例
样例输入
样例输出
思路
我觉得是一个很好的题目了
第一次提交我才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[];
int main()
{
int T;scanf("%d",&T);
while(T--)
{
int j=;
int ans=0x7fffffff;
memset(a,,sizeof(a));
int n;scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i]); ans=max(a[]-a[],a[n]-a[]);
for(int i=;i<=n;i++)
{
while(j<i && a[i]-a[j]>a[j]-a[]) ++j;
ans=min(max(a[i]-a[j],max(a[j-]-a[],a[n]-a[i])),ans);
}
printf("%d\n",ans);
}
return ;
}
[Vijos1763]Wormhole (贪心/模拟?)的更多相关文章
- 贪心+模拟 Codeforces Round #288 (Div. 2) C. Anya and Ghosts
题目传送门 /* 贪心 + 模拟:首先,如果蜡烛的燃烧时间小于最少需要点燃的蜡烛数一定是-1(蜡烛是1秒点一支), num[g[i]]记录每个鬼访问时已点燃的蜡烛数,若不够,tmp为还需要的蜡烛数, ...
- 贪心+模拟 ZOJ 3829 Known Notation
题目传送门 /* 题意:一串字符串,问要最少操作数使得成为合法的后缀表达式 贪心+模拟:数字个数 >= *个数+1 所以若数字少了先补上在前面,然后把不合法的*和最后的数字交换,记录次数 岛娘的 ...
- CodeForces ---596B--Wilbur and Array(贪心模拟)
Wilbur and Array Time Limit: 2000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Su ...
- UVA 10714 Ants 蚂蚁 贪心+模拟 水题
题意:蚂蚁在木棍上爬,速度1cm/s,给出木棍长度和每只蚂蚁的位置,问蚂蚁全部下木棍的最长时间和最短时间. 模拟一下,发现其实灰常水的贪心... 不能直接求最大和最小的= =.只要求出每只蚂蚁都走长路 ...
- CodeForces 797C Minimal string:贪心+模拟
题目链接:http://codeforces.com/problemset/problem/797/C 题意: 给你一个非空字符串s,空字符串t和u.有两种操作:(1)把s的首字符取出并添加到t的末尾 ...
- CodeForces - 730A 贪心+模拟
贪心策略: 1.只有一个最大值,选着第二大的一起参加比赛减分. 2.有奇数个最大值,选择三个进行比赛. 3.偶数个最大值,选择两个进行比赛. 为什么不把最大值全部选择? 因为最多只能选五个,有可能选择 ...
- (贪心 模拟?) codeVs1098 均分纸牌
题目描述 Description 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸 ...
- UVA 11776 - Oh Your Royal Greediness! - [贪心/模拟]
题目链接:https://cn.vjudge.net/problem/UVA-11776 题意: 给出数字n(0<=n<=1000),代表有n个农民,接下来有n行,每行两个数字S和E代表这 ...
- Population Size CodeForces - 416D (贪心,模拟)
大意: 给定$n$元素序列$a$, 求将$a$划分为连续的等差数列, 且划分数尽量小. $a$中的$-1$表示可以替换为任意正整数, 等差数列中必须也都是正整数. 贪心策略就是从前到后尽量添进一个等差 ...
随机推荐
- shell 处理文件脚本
[root@centos-6 ~]# cat info_file.txt lys:28:shanxi zhy:28:shanxi [root@centos-6 ~]# cat info_file2.t ...
- last与lastb命令 读取的日志文件
在linux系统中,last与lastb命令用来列出目前与过去登录系统的用户相关信息.指令英文原义: last, lastb - show listing of last logged in user ...
- flanneld,flannel和cni逐步深入
这个问题,现在慢慢搞定. 把这两者的关系搞清楚了. 还有kubeadm join和手工安装Node的故事, 也没那么玄乎~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ htt ...
- elk服务器和运维服务器的IPTABLES
--运维服务器 iptables -P INPUT ACCEPT iptables -F iptables -X iptables -Z iptables -A INPUT -i lo -j ACCE ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-3项目架构说明
本文目录1. 摘要2. 框架介绍 3. 权限管理之多一点说明4. 总结 1. 摘要 NCMVC角色权限管理框架是由最近练习Net Core时抽时间整理的系统,后续能不能发展成一个cms还要看朋友们是 ...
- Codeforces 1053C Putting Boxes Together 树状数组
原文链接https://www.cnblogs.com/zhouzhendong/p/CF1053C.html 题目传送门 - CF1053C 题意 有 $n$ 个物品,第 $i$ 个物品在位置 $a ...
- 第一章:python基础语法| 字符编码| 条件语句...
1.编程语言介绍 编程就是写代码,让计算机帮你做事情.计算机底层是电路,只认识二进制0和1.机器语言&汇编语言语言进化历史:机器.汇编.高级.机器语言只接受二进制代码:汇编语言是采用英文缩写的 ...
- 【python】数据库
No1: [SQLite] 插入 # 导入SQLite驱动: >>> import sqlite3 # 连接到SQLite数据库 # 数据库文件是test.db # 如果文件不存在, ...
- python爬虫积累(一)--------selenium+python+PhantomJS的使用(转)
阅读目录 一.Selenium介绍 二.爬虫为什么要用selenium? 三.PhantomJS介绍 四.PhantomJS安装 五.操作实战 六.在此推荐虫师博客的学习资料 selenium + p ...
- ASP.NET Core 新建线程中使用依赖注入的问题
问题来自博问的一个提问 .net core 多线程数据保存的时候DbContext被释放 . TCPService 通过构造函数注入了 ContentService , ContentService ...