D. Mister B and PR Shifts

const int N = 2e6 + ;//开两倍空间 int n;
arr p,cnt;
int l,r,m;
ll sum = ,ans; int main()
{
// file("test");
sdf(n);
For(i, , n) sdf(p[i]);
For(i, , n)
{
sum += abs(p[i] - i);
if (p[i] >= i)//起始默认中立派暂属于左翼
l++,cnt[+p[i]-i]++; //左翼,第(0+p[i]-i)轮的中立者个数+1
else if (p[i] < i)
r++;
}
int id = ;
ans = sum;
For(i, , n)
{
r += cnt[i - ], l -= cnt[i - ];//将上一轮的中立者从左翼变为右翼
sum = sum + (r - l) - ;//r代表有r个人一定向右移动了一格,对sum的贡献就是r,l同理。但是最后一个点要单独处理,不能参与这里的贡献
sum = sum - (n - p[n - i + ]) + (p[n - i + ] - ); //减掉最后一个点贡献,转移到加上第一个点贡献
r--;//不用担心最后一位是中立派的问题,因为反正到了那个时候,cnt[i-1]自然会处理的
l++;
cnt[i+p[n - i + ] - ]++;//第i轮后的p[n-i+1]-1轮的中立者个数+1
if (sum <ans)
{
ans = sum;
id = i;
}
}
cout << ans << " " << id; return ;
}
D. Mister B and PR Shifts的更多相关文章
- Codeforces Round #421 (Div. 2) D. Mister B and PR Shifts
Codeforces Round #421 (Div. 2) D. Mister B and PR Shifts 题意:给一个长度为\(n\)的排列,每次可以向右循环移位一次,计算\(\sum_{i= ...
- CF819B Mister B and PR Shifts 题解
题目 Some time ago Mister B detected a strange signal from the space, which he started to study. After ...
- [CF819B]Mister B and PR Shifts
题意:定义一个排列$p_{1\cdots n}$的“偏移量”$D=\sum _{i=1}^n\left|p_i-i\right|$ 求它所有的轮换排列中偏移量最小的是多少,要求输出轮换序数 暴力就是求 ...
- Codeforces Round #421 (Div. 2)D - Mister B and PR Shifts(模拟)
传送门 题意 给出n个数,计算在进行n-1次右移中\(min\sum_{i=1}^nabs(p_i-i)\) 分析 我们设置cnt[p[i]-i]为一个数p[i]与它标准位置(如1的标准位置为1)的左 ...
- codeforces 820 D. Mister B and PR Shifts(思维)
题目链接:http://codeforces.com/contest/820/problem/D 题意:求.有一种操作 k = 0: shift p1, p2, ... pn, k = 1: shif ...
- codeforces 819B - Mister B and PR Shifts(思维)
原题链接:http://codeforces.com/problemset/problem/819/B 题意:把一个数列整体往右移k位(大于n位置的数移动到数列前端,循环滚动),定义该数列的“偏差值” ...
- CF820D Mister B and PR Shifts
题目链接:http://codeforces.com/problemset/problem/820/D 题目大意: 给出一个\(n\)元素数组\(p[]\),定义数组\(p[]\)的误差值为\(\su ...
- CF819B Mister B and PR Shifts 思维题
分析 这道题\(n\leq10^{6}\),显然\(n^{2}\)的暴力是无法解决问题的 那么我们可以考虑数列的某一种性质 因为最终的答案是\(\sum{n \atop i=1} |p_i - i|\ ...
- Mister B and PR Shifts,题解
题目链接 分析: 题意很明白,不再多说了,直接分析题目,首先想一想暴力,直接枚举起点,然后求出来,时间复杂度n*n,显然不太好,所以我们考虑换一种方法枚举,当然本质还是枚举,其实你会发现变化i次和i+ ...
随机推荐
- canvas-6font.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- npm 走 privoxy 代理经常出现 shasum check failed 的解决办法
今天在下载一个比较大的项目,经常 shasum check failed ,太烦了,于是想切淘宝源,分别尝试 nrm 切换和传递 --registry ,结果都出现 Unexpected end of ...
- 我的Java之旅 第一课 开发环境准备
1.JDK JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK). SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从J ...
- Ansible--inventory
简介 Inventory 是 Ansible 管理主机信息的配置文件,相当于系统 HOSTS 文件的功能,默认存放在 /etc/ansible/hosts.为方便批量管理主机,便捷使用其中的主机分组, ...
- NoHttp封装--05 文件下载
xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:la ...
- 【锁】Oracle死锁(DeadLock)的分类及其模拟
[锁]Oracle死锁(DeadLock)的分类及其模拟 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...
- MVC| 路由测试代码
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using System.Web; using ...
- 实验吧web题(26/26)全writeup!超详细:)
#简单的SQL注入 http://www.shiyanbar.com/ctf/1875 1)试着在?id=1,没有错误 2)试着?id=1',出错了,有回显,说明有注入点: You have an e ...
- 15LaTeX学习系列之---LaTeX里插入数学公式
目录 目录 前言 (一)常用的数学公式命令 ==1.上下标== ==2.矢量== ==3.括号== ==4.符号关系== ==5.三角形符号== ==6.求和与累积== ==7.积分与微分== ==8 ...
- 在 vs2017 中使用 C# 7 新特性。
几个概念区分: 1.C# C# 是一种.net 语言,与此类似的还有 vb,F#.不同版本的语言要配合相应的解释器才能发挥作用.目前 最新版本 为 C# 7.3. 2.VS VS 是 ...