由于交换是相邻交换,所以分为两类:
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的更多相关文章

  1. 2019-08-25 纪中NOIP模拟A组

    T1 [JZOJ6314] Balancing Inversions 题目描述 Bessie 和 Elsie 在一个长为 2N 的布尔数组 A 上玩游戏. Bessie 的分数为 A 的前一半的逆序对 ...

  2. [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 ...

  3. 【架构】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 ...

  4. POJ 1655 Balancing Act 树的重心

    Balancing Act   Description Consider a tree T with N (1 <= N <= 20,000) nodes numbered 1...N. ...

  5. 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 ...

  6. Codeforces Educational Codeforces Round 3 C. Load Balancing 贪心

    C. Load Balancing 题目连接: http://www.codeforces.com/contest/609/problem/C Description In the school co ...

  7. UVA 12904 Load Balancing 暴力

    Load Balancing Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/vi ...

  8. Load Balancing 折半枚举大法好啊

    Load Balancing 给出每个学生的学分.   将学生按学分分成四组,使得sigma (sumi-n/4)最小.         算法:   折半枚举 #include <iostrea ...

  9. [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 ...

随机推荐

  1. Python | JSON 数据解析(Json & JsonPath)

    一.什么是JSON? JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一 ...

  2. 土壤稳定性评估(ArcPy实现)

    一.背景 在进行区域土地开发时,需要对整个区域的土壤稳定性评估.应用GIS空间分析方法,能够快速有效地对影响土壤稳定性的因子进行制图并评估打分,通过构建评价体系,利用叠加分析,形成土壤稳定性专题图,以 ...

  3. SpringBoot下使用AspectJ(CTW)下不能注入SpringIOC容器中的Bean

    SpringBoot下使用AspectJ(CTW)下不能注入SpringIOC容器中的Bean 在SpringBoot中开发AspectJ时,使用CTW的方式来织入代码,由于采用这种形式,切面Bean ...

  4. k8s学习笔记(2)- Rancher2.x部署springboot应用及高可用、扩容

    前言:上一篇介绍基于k3s环境,使用kubectl部署springboot简单项目应用,本篇介绍基于rancher2.x部署应用程序 1.上篇已部署一个springboot应用,我们可以通过ranch ...

  5. 如何在印刷品中使用遵循SIL Open Font License协议的字体

    如何在印刷品中使用遵循SIL Open Font License协议的字体 昨天在知乎看到了一个问题,( 如何在设计中声明字体开源许可证? - 知乎 (zhihu.com),恰好最近在研究一些开源协议 ...

  6. TX-LCN分布式事务之LCN模式

    什么是LCN模式 LCN模式是TX-LCN分布式事务模式的一种,L-lock-锁定事务单元.C-confirm-确认事务模块状态. notify-通知事务单元 原理 LCN模式是通过Spring AO ...

  7. Gitflow branch与Docker image tag命名冲突怎么办?

    谷歌还是比必应要好用一点. 在前公司,我根据主流的git flow 给团队搭建了一套devops流程,运行在 docker & k8s上. 在现代devops流程中,一般推荐使用git分支名或 ...

  8. Asp.Net 熟悉 Spring

    注:(为加强记忆,所以记录下来,对于有些地方为什么那样写,我也不太理解) 一.我们先创建个窗体应用程序Demos,事先熟悉它是这么实现的 第一步,先在项目的根目录下建一个library文件夹,目的是放 ...

  9. 外网访问vm虚拟机

    目录 一.准备 二.外网访问主机电脑 三.外网访问VM虚拟机 一.准备 外网ip:39.189.8.5 访问https://www.ip138.com 可以查询外网ip 内网主机ip:192.168. ...

  10. 转载: XILINX GT的基本概念

    https://zhuanlan.zhihu.com/p/46052855 本来写了一篇关于高速收发器的初步调试方案的介绍,给出一些遇到问题时初步的调试建议.但是发现其中涉及到很多概念.逐一解释会导致 ...