Atcoder Regular Contest 072 E Alice in Linear Land

本文解析了一道关于调整行走距离以阻止角色到达终点的算法题。通过预处理和动态规划,介绍了如何快速响应询问并确定关键参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目大意

在最开始Alice离终点的距离为D,第i天,Alice会有一个行走距离a[i],如果当前距离s>abs(s-a[i]),那么s就更新为abs(s-a[i]),s变为0时到达终点。
先给出若干询问,每次询问一个位置x,问能否通过改变a[x]的值,来使得Alice经过n天后不能到达终点
1q,n105

题解

显然我们可以预处理出pre[i]表示经过前i天之后的s,那么一次询问x其实就相当于我们可以设置初始距离s(0spre[x1]),使得Alice不能到达终点
设suf[i]表示要使Alice从第i天开始到第n天不能到达终点的初始距离(第i天开始)的最小值。
考虑如何处理suf[i]
显然suf[n]=1
然后对于1i<n
首先很显然的suf[i]suf[i+1],因为如果这个不成立,那么suf[i+1]一定会更小
考虑a[i]与suf[i+1]的关系
如果a[i]/2下取整大于等于suf[i+1],那么suf[i]=suf[i+1],因为显然,如果这样的话,a[i]是没有影响的,而这样一定可以就是最小
suf[i]<a[i]abs(suf[i]-a[i]) suf[i+1]suf[i]=a[i]+suf[i+1]
Done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值