[luogu5426]Balancing Inversions
由于交换是相邻交换,所以分为两类:
1.左右区间内部交换,那么一定会让逆序对数量$\pm 1$,也就是说如果没有左右区间之间交换,那么答案就是$|ansL-ansR|$(ans表示逆序对数量)
2.左右区间之间交换,考虑枚举左边最终有多少个1,不妨假设比原来多(原来少一样,但不能都异或1之后重复一遍,会错的),首先一定尽量交换左边的最右边的若干个0和右边最左边的若干个1,然后快速的去维护两边的逆序对数量
维护方式很简单,由于假如左边如果改变了一个点,说明它的右边一定都是同样的数字,所以不用线段树,只需要维护左边的前缀和即可(右边同理)

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 200005
4 int n,a[N],sum[N];
5 long long s,ans1,ans2,ans;
6 int pre(int k){
7 k--;
8 while ((k)&&(!a[k]))k--;
9 return k;
10 }
11 int nex(int k){
12 k++;
13 while ((k<=2*n)&&(a[k]))k++;
14 return k;
15 }
16 void calc1(){
17 s=ans1=ans2=0;
18 for(int i=1;i<=n;i++)
19 if (!a[i])ans1+=sum[i-1];
20 for(int i=2*n;i>n;i--)
21 if (a[i])ans2+=sum[i+1];
22 ans=min(ans,abs(ans1-ans2));
23 for(int x=pre(n+1),y=nex(n);(x)&&(y<=2*n);x=pre(x),y=nex(y)){
24 s+=y-x;
25 ans1+=sum[x];
26 ans2+=sum[y];
27 ans=min(ans,s+abs(ans1-ans2));
28 }
29 }
30 void calc2(){
31 s=ans1=ans2=0;
32 for(int i=1;i<=n;i++)
33 if (a[i])ans1+=sum[i-1];
34 for(int i=2*n;i>n;i--)
35 if (!a[i])ans2+=sum[i+1];
36 for(int x=pre(n+1),y=nex(n);(x)&&(y<=2*n);x=pre(x),y=nex(y)){
37 s+=y-x;
38 ans1-=sum[x];
39 ans2-=sum[y];
40 ans=min(ans,s+abs(ans1-ans2));
41 }
42 }
43 int main(){
44 scanf("%d",&n);
45 for(int i=1;i<=2*n;i++)scanf("%d",&a[i]);
46 for(int i=1;i<=n;i++)sum[i]=sum[i-1]+a[i];
47 for(int i=2*n;i>n;i--)sum[i]=sum[i+1]+(a[i]^1);
48 ans=1LL*n*n;
49 calc1();
50 for(int i=1;i<=2*n;i++)a[i]^=1;
51 calc2();
52 printf("%lld",ans);
53 }
[luogu5426]Balancing Inversions的更多相关文章
- 2019-08-25 纪中NOIP模拟A组
T1 [JZOJ6314] Balancing Inversions 题目描述 Bessie 和 Elsie 在一个长为 2N 的布尔数组 A 上玩游戏. Bessie 的分数为 A 的前一半的逆序对 ...
- [UCSD白板题] Number of Inversions
Problem Introduction An inversion of a sequence \(a_0,a_1,\cdots,a_{n-1}\) is a pair of indices \(0 ...
- 【架构】How To Use HAProxy to Set Up MySQL Load Balancing
How To Use HAProxy to Set Up MySQL Load Balancing Dec 2, 2013 MySQL, Scaling, Server Optimization U ...
- POJ 1655 Balancing Act 树的重心
Balancing Act Description Consider a tree T with N (1 <= N <= 20,000) nodes numbered 1...N. ...
- CF# Educational Codeforces Round 3 C. Load Balancing
C. Load Balancing time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Codeforces Educational Codeforces Round 3 C. Load Balancing 贪心
C. Load Balancing 题目连接: http://www.codeforces.com/contest/609/problem/C Description In the school co ...
- UVA 12904 Load Balancing 暴力
Load Balancing Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/vi ...
- Load Balancing 折半枚举大法好啊
Load Balancing 给出每个学生的学分. 将学生按学分分成四组,使得sigma (sumi-n/4)最小. 算法: 折半枚举 #include <iostrea ...
- [zz] pgpool-II load balancing from FAQ
It seems my pgpool-II does not do load balancing. Why? First of all, pgpool-II' load balancing is &q ...
随机推荐
- 4 个场景揭秘,如何低成本让容器化应用 Serverless 化?
作者 | changshuai FaaS 的门槛 Serverless 形态的云服务帮助开发者承担了大量复杂的扩缩容.运维.容量规划.云产品打通集成等责任,使得开发者可以专注业务逻辑.提高交付速度 ( ...
- Django对表单进行增删改查
查 首先在url中写好路径 其次在后面参数的views里写函数类xxxxxxx的基本逻辑 定义一个函数xxxxxxx,继承request,注意这个request对数据库操作结果都会存放在request ...
- docker中Jenkins启动无法安装插件,版本过低
一.问题现象: 使用docker启动jenkins,在jenkins启动后却无法安装jenkins的插件,一直提示安装失败且从log看到提示信息显示为需要升级jenkins的版本 二.原因分析: 在使 ...
- 2020.3.28-ICPC训练联盟周赛,选用试题:UCF Local Programming Contest 2016
A.Majestic 10 签到题. #include<iostream> #include<cstdio> #include<cstring> #include& ...
- Kubernetes-Service介绍(三)-Ingress(含最新版安装踩坑实践)
前言 本篇是Kubernetes第十篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战. Kubernetes系列文章: Kubernetes介绍 Kubernetes环境搭建 Kuberne ...
- MeteoInfo-Java解析与绘图教程(五)
MeteoInfo-Java解析与绘图教程(五) 最近太忙了,终于有时间继续写了,上文说到了基本上的绘图方法,但缺少色阶呈现,一般图叠加着地图上,后端不需要管色阶,但也要注意web页面色阶和我们的生成 ...
- 每日一题,是否存在(c语言)
每日一题:1.是否存在 是否存在描述猫咪非常喜欢饼干,尤其是字母饼干.现在,她得到一些字母饼干,她希望选择他们中的一些拼写某些单词. 你的任务是确定她是否可以拼出自己想要的单词. 输入输入包含若干测试 ...
- 【UE4 材质】一些小功能
利用材质实现物体自转 物体外轮廓高亮 使用postprocess+custom depth(防遮挡) https://www.tomlooman.com/soft-outlines-in-ue4/ h ...
- 论文解读丨表格识别模型TableMaster
摘要:在此解决方案中把表格识别分成了四个部分:表格结构序列识别.文字检测.文字识别.单元格和文字框对齐.其中表格结构序列识别用到的模型是基于Master修改的,文字检测模型用到的是PSENet,文字识 ...
- 了解 js 堆内存 、栈内存 。
js中的堆内存与栈内存 在js引擎中对变量的存储主要有两种位置,堆内存和栈内存. 和java中对内存的处理类似,栈内存主要用于存储各种基本类型的变量,包括Boolean.Number.String.U ...