考虑某一种状态,无论如何调整卡片位置,都不会减少逆序对数量,这就是我们要找的最优解。

显然在对于一个颜色的数字有序时,达到了上述状态。

于是,我们根据一个颜色的值排序后再计算逆序对就得到了答案。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
typedef pair<int,int> card; const int maxn=100000+1;
card c1[maxn],c2[maxn];
bool cmp(const card &a,const card &b)
{
return a.first<b.first|| (a.first==b.first&&a.second<b.second);
} bool cmp1(card a,card b)
{
return a.second<b.second;
}
void merges(vector<card> & cc,int l,int r,long long int &ans)
{
if(l==r)return;
if(l==r-1)
if(cmp1(cc[r],cc[l])){swap(cc[r],cc[l]);ans++;return ;}
else return ;
int mid=(l+r)/2;
vector<card>left,right;
for(int i=l;i<=mid;i++)left.push_back(cc[i]);
for(int i=mid+1;i<=r;i++)right.push_back(cc[i]);
merges(left,0,mid,ans);merges(right,0,r-mid-1,ans);
int l1=0,l2=0,len=0;
while(l1<left.size()&&l2<right.size())
{
if(cmp1(right[l2],left[l1])){cc[len++]=right[l2++];ans+=left.size()-l1;}
else{cc[len++]=left[l1++];}
}
while(l1<left.size())
{
cc[len++]=left[l1++];
}
while(l2<right.size())
{
cc[len++]=right[l2++];
}
} int main()
{freopen("john.in","r",stdin);
//freopen("john.out","w",stdout);
long long int ans1=0,ans2=0;
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d%d",&c1[i].first,&c1[i].second);
c2[i].first=c1[i].second;
c2[i].second=c1[i].first;
}
sort(c1,c1+n,cmp);
sort(c2,c2+n,cmp);
vector<card> s1,s2;
for(int i=0;i<n;i++)
{
s1.push_back(c1[i]);
s2.push_back(c2[i]);
}
merges(s1,0,n-1,ans1);
merges(s2,0,n-1,ans2);
printf("%lld\n",min(ans1,ans2));
return 0;
}

  

2011–2012, Northern Subregional J. John’s Inversions的更多相关文章

  1. 2010–2011, NEERC, Northern Subregional C.Commuting Functions

    C.Commuting Functions 由于要求答案字典序最小,我们肯定希望从g(1)开始对函数g进行赋值,于是又公式f(g(x))=g(f(x)) 设f(x)=i 我们推导出 由于f是双射,当i ...

  2. [SinGuLaRiTy] COCI 2011~2012 #2

    [SinGuLaRiTy-1008] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 测试题目 对于所有的题目:Time Limit:1s   ...

  3. 模拟赛小结:2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest

    2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest 2019年10月11日 15:35-20:35(Solved 8,Penalty 675 ...

  4. 2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest (9/12)

    $$2015-2016\ ACM-ICPC,\ NEERC,\ Northern\ Subregional\ Contest$$ \(A.Alex\ Origami\ Squares\) 签到 //# ...

  5. 【2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest D】---暑假三校训练

    2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest D Problem D. Distribution in Metagonia Input ...

  6. VRay 2.0 SP1 2.10.01 for 3ds max 9/2008/2009/2010/2011/2012 32/64位 顶渲简体中文版+英文版[中国室内设计论坛-室内人]

    VRay 2.0 SP1 2.10.01 for 3ds max 9/2008/2009/2010/2011/2012 32/64位 顶渲简体中文版+英文版[中国室内设计论坛-室内人] 对最新版本的V ...

  7. ACM ICPC 2016–2017, NEERC, Northern Subregional Contest Problem J. Java2016

    题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229510 时间限制:2s 空间限制:256MB 题目大意: 给定一个数字c 用 " ...

  8. 2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest

    A. Anniversary Cake 随便挑两个点切掉就好了. #include<bits/stdc++.h> using namespace std; const int Maxn=2 ...

  9. 2017-2018 ACM-ICPC, NEERC, Northern Subregional Contest

    A. Auxiliary Project 完全背包. #include<stdio.h> #include<iostream> #include<string.h> ...

随机推荐

  1. jsp include html 乱码问题解决

    方法一: 在被包含的html中,在首行加上 <%@ page language="java" import="java.util.*" pageEncod ...

  2. mysql 替换数据库字段内容

    去掉数据库字段单引号 update company_info set company=REPLACE(company,"'","");

  3. mac 解决mysql启动不了

    mac升级了mysql,没有替换原来的链接的情况下, 启动mysql restart 会失败 解决方法,找到mysql真正的安装目录 mysql.server start

  4. python 字典实现三级菜单

    简介:1.用字典建立一个省市县的三级菜单 2.开始显示所有的省份,输入要进入的省份之后,显示该省份下的所有市,输入市显示该市下的所有县 3.在每一级菜单下都可以返回到上一层菜单 4.随时可以退出 me ...

  5. 13-看图理解数据结构与算法系列(Trie树)

    Trie树 Trie树,是一种搜索树,也称字典树或单词查找树,此外也称前缀树,因为某节点的后代存在共同的前缀.它的key都为字符串,能做到高效查询和插入,时间复杂度为O(k),k为字符串长度,缺点是如 ...

  6. ppt_旋转抽奖_制作步骤

    1 ppt制作抽奖转盘 插入饼状图,更改比例,更改颜色(一般选取相邻的一组颜色匹配比较好看): 插入竖文本框,编辑每一个部分为特等奖.一等奖.二等奖.三等奖: 全部选中,ctrl+G组合: 添加陀螺旋 ...

  7. SQLAlchemy(1):单表操作

    SQLAlchemy 是一个 ORM框架:类对应表,类中的字段对应表中的列,类的对象对应表的一条记录:作用:帮助我们使用类和对象快速实现数据库操作操作数据库的方式: 1. 原生SQL - pymysq ...

  8. 前端开发:CSS3

    CSS介绍: CSS能够使页面具有美观一致的效果,并且能够让内容与格式分离,利于扩展 所以,CSS解决了下面两个问题: 1. 将HTML页面的内容与格式分离: 2. 提高web开发的工作效率. CSS ...

  9. 修改phpMyAdmin导入SQL文件的大小限制

    用phpMyAdmin导入mysql数据库时,我的10M的数据库不能导入,提示mysql数据库最大只能导入2M. phpMyAdmin数据库导入出错: You probably tried to up ...

  10. Ubuntu 16.04设置Redis为开机自动启动服务

    继上一篇文章http://www.cnblogs.com/EasonJim/p/7599941.html安装好Redis后,假设文件已经安装到/usr/local/redis目录下.假设我安装的版本为 ...