题面



其中 \(1 \leq n \leq 2 \times 10^6\)

分析

考虑每次移动,发现负数对答案贡献少 \(1\),非负数多 \(1\)

每次移动都加了 \(1\)

负数变非负数关键点在于 \(0\)

把所有值映射到数轴上,每次加一相当于原点向左移一位

讨论移位后负数数量的变化即可

首位则特别处理

我们只需要记录负数的情况(见 \(f\))

\(Code\)

#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
typedef long long LL; const int N = 4e6 + 5;
int n , s1 , s2 , s[N] , f[N];
LL ans , sum; int main()
{
scanf("%d" , &n);
for(register int i = 1; i <= n; i++)
{
scanf("%d" , &s[i]);
if (s[i] - i < 0) f[i - s[i]]++ , s2++;
ans += abs(s[i] - i);
}
s1 = n - s2 , sum = ans;
for(register int i = 1; i < n; i++)
{
sum += s1 - s2 - 1 - (s[i] - 1) + abs(s[i] - n);
s2 -= f[i] , s1 += f[i];
if (s[i] - n < 0) ++s2 , --s1 , ++f[n - s[i] + i];
ans = min(ans , sum);
}
printf("%lld\n" , ans);
}

最新文章

  1. 从Facebook跑来阿里的赵海平大叔,你要干啥?
  2. android之存储篇_SQLite数据库_让你彻底学会SQLite的使用
  3. 用户无法进入SDSF,报NO GROUP ASSIGNMENT错误
  4. AJAX验证用户是否存在
  5. 源码解析之setContentView
  6. 【JSON】JSON字符串的操作(不断积累中)
  7. uva 10128
  8. Head First 设计模式系列之一----模板模式(java版)
  9. net Random 随机数重复的问题
  10. PHP学习系列(1)&mdash;&mdash;字符串处理函数(4)
  11. 关于在xp(sp3 专业版)下安装sql2005开发版图解
  12. poj 1149
  13. python web开发-flask中日志的使用
  14. Docker-镜像源加速配置
  15. Django09-中间件
  16. axios的Get和Post方法封装及Node后端接收数据
  17. (转)Docker磁盘垃圾清理
  18. [转] 职业规划:一个老鸟眼中“IT民工”的发展方向
  19. linux内核netfilter连接跟踪的hash算法
  20. bzoj 1588 平衡树 splay

热门文章

  1. js文字无限循环向上滚动
  2. 关于Qt的QPixmap中不支持jpg文件格式的问题
  3. 【重难点总结】DMA与kafka零拷贝机制之间的关系
  4. 错误:Required request parameter &#39;XXX&#39; for method parameter type String is not present
  5. Navicat Premium无法连接到oracle数据库的解决方法
  6. AcWing341. 洛谷P1073, NOIP2009 最优贸易
  7. JavaScript:显式转换数据类型:如何转换为数值、字符串和布尔值类型?
  8. 【好软推荐】Scoop - Windows快速软件安装指南
  9. 学习ASP.NET Core Blazor编程系列二十——文件上传(完)
  10. ONNX模型分析与使用