CF1922C的题解
(一)
从
显然如果符合条件选第二种。
先考虑从左向右走。(和从右向左相同)
考虑走到了节点
用类似于前缀和的方法统计,由于每一步用哪种与前面无关(肯定能选第二种就第二种),那么只用从左到右,从右到左都扫一遍即可。
从
(二)
AC 代码。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n,l,r,q,a[100010],ltor[100010],rtol[100010];
signed main(){
scanf("%lld",&t);
while(t--){
scanf("%lld",&n);
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
for(int i=2;i<=n;i++){
if(a[i]-a[i-1]<=a[i-1]-a[i-2]||i==2)ltor[i]=ltor[i-1]+1;
else ltor[i]=ltor[i-1]+a[i]-a[i-1];
}
for(int i=n-1;i>=1;i--){
if(a[i+1]-a[i]<=a[i+2]-a[i+1]||i==n-1)rtol[i]=rtol[i+1]+1;
else rtol[i]=rtol[i+1]+a[i+1]-a[i];
}
scanf("%lld",&q);
while(q--){
scanf("%lld%lld",&l,&r);
if(l<r)printf("%lld\n",ltor[r]-ltor[l]);
else printf("%lld\n",rtol[r]-rtol[l]);
}
}
return 0;
}
```
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下