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的更多相关文章

随机推荐

  1. Redis后端面试题

    目录 简要说一下什么是Redis? 为什么要⽤Redis(缓存)? 为什么要⽤Redis⽽不⽤map/guava做缓存? Redis与Memcached的区别 Redis的应⽤场景 redis为什么那 ...

  2. reids哨兵机制

    宏观上的哨兵机制 监控:哨兵不断的检查master和slave是否正常的运行. 通知:当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序. 自动故障转移:如果一个mas ...

  3. 第6课第4节_Binder系统_驱动情景分析_服务注册过程_分析

    Service_manager.c 8074 2017/6/30 首先从应用程序分析(Android) binder_loop(bs, svcmgr_handler) { readbuf[0] = B ...

  4. webpack从零开始打造react项目(更新中...)

    创建项目 创建文件夹 webpack-test  使用编辑器打开文件夹,我们初始化管理包 npm init -y 生成一个默认的 pageage.json 文件 要想创建react项目,思考我们之前使 ...

  5. javax.naming.NameNotFoundException: Name [aa.bb.cc/xx] is not bound in this Context. Unable to find [aa.bb.cc]

    今天尝试把一个SpringBoot项目由jdk11转移为jdk8,在IDEA里运行一切正常.打包,部署到tomcat启动后,在客户端调用WebSocket出现如下异常: java.lang.Illeg ...

  6. [AGC013B] Hamiltonish Path

    个人思路: 随便从一个节点开始搜索,只要当前节点不满足条件,随便找一个与它有边相连,不在序列里的节点加入序列.因为要么中途停止,要么把所有节点遍历一遍,一定能找到一个端点. 我们直接从节点 \(1\) ...

  7. 修改 input框、textarea框的placeholder样式

    /* 设置input框提示内容的样式 */ input::-webkit-input-placeholder { font-size: 14px; color: #ccc; font-weight: ...

  8. Oracle查看异常未提交事务

    1.查看归档日志都有哪些 SELECT * from v$archived_log 2.查看某个SCN号的归档文件是否存在 SELECT * from v$archived_log WHERE 113 ...

  9. 请求/响应拦截器 给请求添加token认证

  10. 进程间通信测试-signal

    截图 代码 #include <stdio.h> #include <unistd.h> #include <signal.h> #include <stri ...