1 条题解
-
0
自动搬运
来自洛谷,原作者为

TainityAnle
My excellence is undeniable!搬运于
2025-08-24 23:10:50,当前版本为作者最后更新于2025-03-05 20:10:39,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题意
给定长度为 的序列 和 ,求出一个最小的 ,使得 最小。
思路
这个题是大原题,CF1730B,连样例都一样。
发现无论 怎么取, 对答案都没有影响。所以考虑把它转化一下。
如果没有 的话,肯定是最左边的和最右边的中点最优。 可以这样转化:我们不妨考虑先把 转成都往左走,取这时的最左边;再让所有人先往右走 ,取这时的最右,就可以得到答案。
因为 最大的一定在最右边, 最小的一定在最左边,如果取最小的 和最大的 是正确的。
答案就是 。
注意保留一位小数。
AC Code
代码很简短。
#include<bits/stdc++.h> using namespace std; int a[114514],n,x,T,maxx,minn; double ans; int main() { cin>>T; while(T--) { cin>>n; for(int i=1; i<=n; i++) cin>>a[i]; maxx=-1000000007,minn=1000000007; for(int i=1; i<=n; i++) { cin>>x; maxx=max(maxx,a[i]+x); minn=min(minn,a[i]-x); } ans=(maxx+minn)/2.0; if(floor(ans)==ans) printf("%d\n",(int)ans); else printf("%.1f\n",ans); } return 0; }
- 1
信息
- ID
- 10122
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 4
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者