ARC152B-Pass-on-Path题解
题意:有一个
的数轴,分布有 个休息站,每个休息站坐标为 。A、B 两人速度均为 ,他们分别从某个休息站开始,向某个方向走,每人都遍历完两个端点后回到原地。两人只有在休息站才能交错,而不能在路上穿过。求最小时间。
首先发现一个性质:AB 一定会交错两次,总时间即为
By Um_nik
const ll INF = (ll)1e12;
const int N = 500500;
int n;
ll L;
ll a[N];
ll ans = INF;
int main()
{
startTime = clock();
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
scanf("%d%lld", &n, &L);
for (int i = 0; i < n; i++)
scanf("%lld", &a[i]);
sort(a, a + n);
int p = 0, q = n - 1;
while(p < n && q >= 0) {
ans = min(ans, abs(a[p] + a[q] - L));
if (a[p] + a[q] >= L)
q--;
else
p++;
}
printf("%lld\n", 2 * L + 2 * ans);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步