CF823div2B
cf823div2B
题目大意
多组测试数据,有\(n\)个点在数轴上,他们想要集会,每个点到目标点\(y\)的时间为$$t_i+|x_i-y|$$
试求所有点到\(y\)中最长时间的最小值。
思路
一共有三种解法。
一,枚举时间二分,对于每个时间,去判断每个\(x_i\)所能到达的地方。会得到一个一个区间。当最小的区间右端点和最大的区间左端点恰有交集的点就是我们的目标。
二,三分地点,这个只是大概思路,没有细想,但是有题解是这样做的
三,转化。对于每个\(x_i\)可以分成两个点\(x_i-ti,xi+ti\)。这样整个区间会出现\(2n\)个点。可以证明,答案\(y\)一定位于这些点构成的区间之中。先考虑一般情况,\(y=(x_{min}^`+x_{max}^`)/2\)
这个结论对于\(y\)位于扩展到两个\(x_i\)中间是很容易成立的。再考虑特殊情况。假设\(x_{max}^`\)对应的\(x_i\)在\(y\)的左边,那么可以得到最小的那个 \(x_{min}^、\) 一定也是\(x_i\)扩展的。换句话说,\(y\)点一定是和\(x_i\)重合,同上面公式相同。
代码
#include<cstdio>
#include<iostream>
#include<cmath>
#include<vector>
#include<string>
#include<cstring>
#include<algorithm>
#define rep(i,l,n) for(int i=(l);i<=(n);++i)
#define ll long long
#define N 100005
using namespace std;
double eps=1e-9;
int t,n;
int x[N],a[N];
double pd(int x)
{
double ans=0;
rep(i,1,n)
{
ans=max(ans,fabs(x-i)+a[i]);
}
return ans;
}
void solve()
{
scanf("%d",&n);
rep(i,1,n)scanf("%d",&a[i]);
rep(i,1,n)scanf("%d",&x[i]);
vector<int> g;
rep(i,1,n)
{
g.push_back(a[i]-x[i]);
g.push_back(a[i]+x[i]);
}
int mn=g.front(),mx=g.front();
for(auto xi:g)
{
mn=min(xi,mn);
mx=max(xi,mx);
}
printf("%d",(mx+mn)/2);
if((mn+mx)&1)printf(".5");
cout<<endl;
return ;
}
int main()
{
scanf("%d",&t);
while(t--)
{
solve();
}
system("pause");
return 0;
}
CF823div2B的更多相关文章
随机推荐
- CDO学习1 CDO简介
参考自如下网站 http://www.ceda.ac.uk/static/media/uploads/ncas-reading-2015/cdo.pdf 介绍 一个有几百种操作符的单独命令 CDO受N ...
- RPS网卡多队列
一体机上传1G文件导致服务器很卡,怀疑是网卡未开启多核多队列导致. 脚本如下 #!/bin/bash # Enable RPS (Receive Packet Steering) read -p &q ...
- vs2019下 c++中 dll 的新建和引用步骤
在工作目录下新建文件夹 DllImportTest ,作为解决方案所在目录 新建项目动态链接库(DLL)项目 DllDemo 位置 指定到 上面新建文件夹 DllImportTest 所在的路径, ...
- 根据XML生成实体类
因为对接系统的XML所需映射的实体类有几十个,自己来处理不太现实,于是一直找寻找这样的工具,终于让我发现了jaxb2-maven-plugin: http://www.mojohaus.org/jax ...
- 【1】java之类与对象
一.前言 面向对象就是一种组件化的设计思想. 面向对象特性 封装性:保护内部的定义结构安全性: 继承性:在已有的程序结构上继续扩充新的功能: 多态性:在某一个概念范围内的满足. 二.类与对象的定义和使 ...
- robots.txt详解[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君. 怎样查看robots文件? 浏览器输入 主域名/robots.txt robots.txt的作用 robots.txt 文件规定了搜索引擎抓取工具可以访问网站 ...
- Blender2.8 使用笔记
基本 视口 小键盘/: 隔离 Z:切换线框与实体显示 Ctrl+Alt+Q : 多视图切换 Shift+C:回原点 Shift+鼠标中键 视口平移 Ctrl+上下移动 视口放大缩小 导出FBX 几何数 ...
- ue项目--浏览器出现卡顿及崩溃的原因查找与解决方案
一些内存泄露的情况进行了排查 全局变量 定时器 使用未销毁的全局事件和第三方库 v-if和v-show不合理使用,v-if和v-for不合理使用 使用watch
- git拉取本地或者分支
拉取本地 git clone 拉取的仓库地址 新建一个文件夹,然后右键 拉取分支到本地 也是新建一个文件夹右键点击 Git Bash Here 然后输入 git clone -b 分支名称 分支地址 ...
- yum install的时候提示:Loaded plugins: fastestmirror
fastestmirror是yum的一个加速插件,这里是插件提示信息是插件不能用了. 不能用就先别用呗,禁用掉,先yum了再说. 1.修改插件的配置文件 # vi /etc/yum/pluginco ...