
[CF351E]Jeff and Permutation
发布日期:2021-05-07 01:03:22
浏览次数:34
分类:原创文章
本文共 1491 字,大约阅读时间需要 4 分钟。
题目
思路
假设两个数字 x , y x,y x,y 满足 ∣ x ∣ < ∣ y ∣ |x|<|y| ∣x∣<∣y∣ ,则何如?
若 y y y 选择了负数,无论 x x x 选正还是负,都大于 y y y 。反之,若 y y y 选择正数,则一定大于 x x x 对应的数。
于是我们得出结论,对两个数字的大小比较只跟绝对值较大者的选择有关。所以我们将每个逆序对的贡献都放到绝对值较大者身上,直接在选正数、选负数中取 m i n \tt min min 即可。
绝对值相等的呢?不难发现,越靠前,越容易选择负数;越靠后,越容易选择正数。于是绝对值相同就会自动的有序(即,形如 − x , − x , − x , x , x -x,-x,-x,x,x −x,−x,−x,x,x ,其中 x x x 为正),不贡献逆序对。
然后做完了。
代码
#include <cstdio>#include <iostream>#include <vector>#include <algorithm>using namespace std;inline int readint(){ int a = 0; char c = getchar(), f = 1; for(; c<'0'||c>'9'; c=getchar()) if(c == '-') f = -f; for(; '0'<=c&&c<='9'; c=getchar()) a = (a<<3)+(a<<1)+(c^48); return a*f;}template < typename T >void getMax(T&a,const T&b){ if(a<b)a=b;}template < typename T >void getMin(T&a,const T&b){ if(b<a)a=b;}const int MaxN = 2005;struct Node{ int val, id; bool operator < (const Node &that) const { return val < that.val; }} node[MaxN]; int c[MaxN];int main(){ int n = readint(); for(int i=1; i<=n; ++i){ node[i].val = readint(); if(node[i].val < 0) node[i].val *= -1; node[i].id = i; } sort(node+1,node+n+1); int ans = 0; node[n+1].val = 1000000; for(int l=1,r=0; l<=n; l=r+1){ while(node[r+1].val == node[l].val) ++ r; for(int i=l; i<=r; ++i){ int sum = 0, t = node[i].id; for(int j=t; j; j-=(j&-j)) sum += c[j]; ans += min(sum,(l-1)-sum); } for(int i=l; i<=r; ++i){ int t = node[i].id; for(int j=t; j<=n; j+=(j&-j)) ++ c[j]; } } printf("%d\n",ans); return 0;}
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月19日 05时21分40秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CSUOJ Water Drinking
2019-03-06
自定义博客园博客的背景图片
2019-03-06
Spring MVC+javamail实现邮件发送
2019-03-06
gRPC在 ASP.NET Core 中应用学习(一)
2019-03-06
@SuppressWarnings 用法
2019-03-06
看完你就明白的锁系列之锁的状态
2019-03-06
看完这篇操作系统,和面试官扯皮就没问题了
2019-03-06
我的价值观
2019-03-06
真香!Linux 原来是这么管理内存的
2019-03-06
一文详解 Java 并发模型
2019-03-06
阅站无数!不过我只推荐下面这些
2019-03-06
值类型与引用类型(中)
2019-03-06
MSSQL 2005 数据库变成可疑状态
2019-03-06
QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)
2019-03-06
秋色园引发CPU百分百命案的事件分析与总结
2019-03-06
安装jdk并配置环境变量
2019-03-06
稀疏数组
2019-03-06
js的严格模式
2019-03-06
idea的安装和无限期试用
2019-03-06
Oracle VM VirtualBox安装PVE虚拟机
2019-03-06