2011–2012, Northern Subregional J. John’s Inversions

考虑某一种状态,无论如何调整卡片位置,都不会减少逆序对数量,这就是我们要找的最优解。
显然在对于一个颜色的数字有序时,达到了上述状态。
于是,我们根据一个颜色的值排序后再计算逆序对就得到了答案。
#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的更多相关文章
- 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 ...
- [SinGuLaRiTy] COCI 2011~2012 #2
[SinGuLaRiTy-1008] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 测试题目 对于所有的题目:Time Limit:1s ...
- 模拟赛小结: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 ...
- 2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest (9/12)
$$2015-2016\ ACM-ICPC,\ NEERC,\ Northern\ Subregional\ Contest$$ \(A.Alex\ Origami\ Squares\) 签到 //# ...
- 【2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest D】---暑假三校训练
2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest D Problem D. Distribution in Metagonia Input ...
- 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 ...
- ACM ICPC 2016–2017, NEERC, Northern Subregional Contest Problem J. Java2016
题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229510 时间限制:2s 空间限制:256MB 题目大意: 给定一个数字c 用 " ...
- 2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest
A. Anniversary Cake 随便挑两个点切掉就好了. #include<bits/stdc++.h> using namespace std; const int Maxn=2 ...
- 2017-2018 ACM-ICPC, NEERC, Northern Subregional Contest
A. Auxiliary Project 完全背包. #include<stdio.h> #include<iostream> #include<string.h> ...
随机推荐
- jsp include html 乱码问题解决
方法一: 在被包含的html中,在首行加上 <%@ page language="java" import="java.util.*" pageEncod ...
- mysql 替换数据库字段内容
去掉数据库字段单引号 update company_info set company=REPLACE(company,"'","");
- mac 解决mysql启动不了
mac升级了mysql,没有替换原来的链接的情况下, 启动mysql restart 会失败 解决方法,找到mysql真正的安装目录 mysql.server start
- python 字典实现三级菜单
简介:1.用字典建立一个省市县的三级菜单 2.开始显示所有的省份,输入要进入的省份之后,显示该省份下的所有市,输入市显示该市下的所有县 3.在每一级菜单下都可以返回到上一层菜单 4.随时可以退出 me ...
- 13-看图理解数据结构与算法系列(Trie树)
Trie树 Trie树,是一种搜索树,也称字典树或单词查找树,此外也称前缀树,因为某节点的后代存在共同的前缀.它的key都为字符串,能做到高效查询和插入,时间复杂度为O(k),k为字符串长度,缺点是如 ...
- ppt_旋转抽奖_制作步骤
1 ppt制作抽奖转盘 插入饼状图,更改比例,更改颜色(一般选取相邻的一组颜色匹配比较好看): 插入竖文本框,编辑每一个部分为特等奖.一等奖.二等奖.三等奖: 全部选中,ctrl+G组合: 添加陀螺旋 ...
- SQLAlchemy(1):单表操作
SQLAlchemy 是一个 ORM框架:类对应表,类中的字段对应表中的列,类的对象对应表的一条记录:作用:帮助我们使用类和对象快速实现数据库操作操作数据库的方式: 1. 原生SQL - pymysq ...
- 前端开发:CSS3
CSS介绍: CSS能够使页面具有美观一致的效果,并且能够让内容与格式分离,利于扩展 所以,CSS解决了下面两个问题: 1. 将HTML页面的内容与格式分离: 2. 提高web开发的工作效率. CSS ...
- 修改phpMyAdmin导入SQL文件的大小限制
用phpMyAdmin导入mysql数据库时,我的10M的数据库不能导入,提示mysql数据库最大只能导入2M. phpMyAdmin数据库导入出错: You probably tried to up ...
- Ubuntu 16.04设置Redis为开机自动启动服务
继上一篇文章http://www.cnblogs.com/EasonJim/p/7599941.html安装好Redis后,假设文件已经安装到/usr/local/redis目录下.假设我安装的版本为 ...