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. RTC@@@Real-Time Clock(实时时钟的简称)及电路问题分析

    RTC@@@Real-Time Clock(实时时钟的简称) 实时时钟(Real-Time Clock)是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,提供稳定的时钟信号给后续电路用.主要功能有 ...

  2. k8s_使用k8s部署博客系统svc、secret、configmap(三)

    service service是抽象Pod对外提供服务的地址,将其固化的作用:屏蔽因pod的创删以及扩缩容带来ip变化.service通过自身定义文件的selector的标签配置匹配到需要提供服务的对 ...

  3. 选择/插入/冒泡/快速排序之R语言实现

    题目来自于<R语言的科学编程与仿真>第9章第7题. 选择排序法.这是一种最简单,但是效率最低的排序算法.算法步骤如下: 对于给定的一个向量x,令最初的未排序向量u等于x,并且最初的已排序向 ...

  4. 好用的天气插件www.tianqi.com/plugin/

    1.好用的天气插件https://www.tianqi.com/plugin/ 根据访问IP地址可以判断当地的天气,生成天气预报信息放到页面上. 2.天气预报接口: import requests U ...

  5. 39.Feign

    Java方式配置 /**局部**/ @FeignClient(value = "user-center", /*修改(user-center)feign的日志级别*/ config ...

  6. leetcode 98. 验证二叉搜索树 【一遍dfs】【时间击败99.72%】【内存击败94.23%】

    复用left[],[时间击败73.33%]-->[时间击败99.72%] [内存击败36.17%]-->[内存击败94.23%] dfs(r)返回值=new long[]{包括r节点的子树 ...

  7. VUE学习-基础(基础语法 & 模板语法)

    基础语法 引入vue <!-- 开发环境版本,包含了有帮助的命令行警告 --> <script src="https://cdn.jsdelivr.net/npm/vue/ ...

  8. Telerik——GridView总结(Winform)

    在使用Telerik控件时有很多的方法,属性经常被用到,分享在此总结也便于查看复习. 1.基本属性 GridViewTextBoxColumn col = new GridViewTextBoxCol ...

  9. HCIP-ICT实战进阶02-OSPF特殊区域及其他特性

    HCIP-ICT实战进阶02-OSPF特殊区域及其他特性 1 ospf区域 如果ospf只有单个区域, 会有什么问题? 如果只有当个区域, 该区域设备数量如果比较多, 对应一类LSA数量可能较少, 但 ...

  10. STM32F103 的 USART5使用

    STM32F103zet6 的串口5是UART5   不是  USART5