当前位置: 首页 > news >正文

ABC20260718E题

传送门

题意:

  • 给长度为 \(n\)\(n-1\) 的序列 \(A\)\(B\),所有元素都在 \([0, M-1]\) 内。
  • 一次操作:将 \(A_i\) 增加 \(1\)
  • 目标:满足 \((A_i + A_{i+1}) \bmod M = B_i\)
  • 求最少操作次数。

\(?\) \(!\) \(拆拆\) \(!\) \(?\)

设最终数组为 \(x\),则满足 \(x_i+x_{i+1}\bmod M=B_i\)。可以发现 \(x_1\) 确定则整个序列 \(x\) 确定。
\(x_2 \equiv B_1-x_1 \pmod M\)
\(x_3 \equiv B_2-x_2 \equiv B_2-B_1+x_1\pmod M\)
\(\dots\)
\(x_n \equiv B_n-B_{n-1}+B_{n-2}-\dots +(-1)^{n+1}B_1\pmod M\)

所以设 \(s_1=0,s_{i+1}=(B_i-s_i)\bmod M\)(其实这里\(s\)就是一个满足条件的\(x\)),\(x_i=(s_i+(-1)^{i+1}x_1)\bmod M\)

\(A_i\) 到达 \(x_i\) 的最小步数为 \((x_i-A_i)\bmod M\)

我们想求 \(f(x_1)=\sum_{i=1}^{n}(x_i-A_i)\bmod M\) 的最小值,设 \(v_i=(s_i-A_i)\bmod M\),考察第 \(i\)

\(i\) 是奇数是 \((v_i+x_1)\bmod M\),反之为 \((v_i-x_1)\bmod M\)

\(i\) 为奇时 \(v_i+x_1-M*[x_1\ge M-v_i]\),反之为 \(v_i-x_1+M*[x1\ge v_i+1]\)

\(f\) 就是一个分段函数,那最小值一定是在每一段的分界上,用 map 记录每个临界点计算 \(x_1\) 在这个区间的 \(f(x_1)\),开头 \(1\) 结尾 \(M\) 也计算一遍,取最小。复杂度 \(O(n\log n)\)

CODE
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define dwn(i,a,b) for(int i=(a);i>=(b);i--)
const int N=200005;
#define int long long
int a[N],b[N],s[N],v[N],n,m;
map<int,int>mp;
signed main()
{cin>>n>>m;rep(i,1,n) cin>>a[i];rep(i,1,n-1) cin>>b[i];rep(i,2,n){s[i]=(b[i-1]-s[i-1])%m;if(s[i]<0) s[i]+=m;}int cnt=0,c0=0;rep(i,1,n){v[i]=(s[i]-a[i])%m;if(v[i]<0) v[i]+=m;cnt+=v[i];if(i&1) ++c0;else --c0;}rep(i,1,n)if(i&1){int x=(m-1-v[i])%m;if(x<=m-2) mp[x]-=m;}else if(v[i]<=m-2) mp[v[i]]+=m;int ans=cnt,tot=0;for(auto&p:mp) tot+=p.second;ans=min(ans,cnt+c0*(m-1)+tot);int ls=0;for(auto&p:mp){ls+=p.second;ans=min(ans,cnt+c0*(p.first+1)+ls);}cout<<ans<<'\n';
}
http://www.jsqmd.com/news/1221121/

相关文章:

  • 石家庄业主必看!2026筑宅安本地化防水,告别反复渗漏 - 筑宅安
  • PMSuperButton项目架构解析:理解其设计模式和实现原理
  • Expression库测试策略:如何为函数式Python代码编写测试
  • Ecommerce Price Monitor MCP MCP 服务说明文档
  • 如何在VSCode扩展中使用node-jsonc-parser增强JSON编辑体验:终极指南
  • Unity安卓打包全攻略:从环境配置到自动化构建的实战指南
  • TI F28003x Bootloader配置与安全引导实践指南
  • Slug性能优化技巧:提升URL短链服务响应速度的10个方法
  • 未来已来:Laguna-XS-2.1-6bit如何通过DFlash推测解码技术提升15倍生成速度
  • 沁源县专业除甲醛公司怎么选?工艺、药剂、售后全维度对比,本地靠谱机构详细测评 - 专注室内空气检测治理
  • Apache Commons Collections 与Java Stream API:如何选择最佳数据处理方案
  • 伯爵官方更换原装表带价格查询|热线与地址权威信息公告(2026年7月最新) - 亨得利官方服务中心
  • fluxsort可视化分析:通过动画理解快速排序算法的工作原理
  • rtsp-stream与Nginx集成:实现高效RTSP-HLS反向代理与缓存的完整指南
  • 福州名表上门回收避坑全解|2026 交易新规落地,教你挑选靠谱手表回收店铺 - 大牌深度测评
  • 如何使用node-jsonc-parser实现JSON配置文件的热更新
  • 基于66AK2L06 SoC的SAR信号处理:如何应对SWaP挑战并优化性能
  • LogAI完全指南:开源日志智能分析框架如何革新你的系统监控
  • 英雄联盟Akari助手:免费开源的终极游戏效率工具,快速提升你的操作水平
  • node-jsonc-parser与主流JSON库对比:何时选择JSONC解析器
  • Diplomat用户指南:从安装到高级配置的全面教程
  • 【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解
  • 武乡县室内除异味哪家效果好?甲醛异味一体治理对比,优选长治沐科环保长效不反弹 - 专注室内空气检测治理
  • 2026江苏留学机构推荐 综合实力排行完整名录梳理 - 互联网科技品牌测评
  • xamarin-forms-book-samples样式与主题设计:打造专业UI界面的终极教程
  • MPI-IS Mesh几何处理:三角形网格的几何计算与变换终极指南
  • TMS320F2838x DCSM Zone 2寄存器配置与安全内存管理实战
  • 手把手教你学 Simulink——考虑线路阻抗影响的并网逆变器下垂控制(Droop Control)仿真
  • 武汉钻石回收价格怎么算?2026 最新行情 + 4C 标准全解析 - 奢侈品回收机构参考
  • 2026国内靠谱的金银线厂商选购指南:高端绣花线采购全攻略 - 贰拾壹度