题意:

给你n个数字的序列 每次把第一个数字放到最后 得到一个新序列 一共有n个序列求这些序列中哪个序列含最小的总的逆序数 (输出最小总逆序数)

分析:

用BIT求出初始各数的逆序数,第一个数放最后它逆序数变正序,正序变逆序。

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <string>
#include <cctype>
#include <complex>
#include <cassert>
#include <utility>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
#define lson l,m,rt<<1
#define pi acos(-1.0)
#define rson m+1,r,rt<<11
#define All 1,N,1
#define read freopen("in.txt", "r", stdin)
#define N 5010
const ll INFll = 0x3f3f3f3f3f3f3f3fLL;
const int INF= 0x7ffffff;
const int mod = ;
int bit[N],a[N],n;
int sum(int x){
int num=;
while(x>){
num+=bit[x];
x-=(x&(-x));
}
return num;
}
void add(int x,int d){
while(x<=n){
bit[x]+=d;
x+=(x&(-x));
}
}
int main()
{
while(~scanf("%d",&n)){
for(int i=;i<n;++i){
scanf("%d",&a[i]);
}
memset(bit,,sizeof(bit));
int total=;
for(int i=n-;i>=;i--){
total+=sum(a[i]+);
add(a[i]+,);
}
int minv=total;
for(int i=;i<n;++i){
total+=n--*a[i];
minv=min(minv,total);
}
printf("%d\n",minv);
}
return ;
}

最新文章

  1. [LeetCode] Sum of Two Integers 两数之和
  2. js 在页面上模拟多选,蚂蚁线线框
  3. 自己存档:table 的css
  4. oracle 行列转换的运用
  5. xUtils类库的使用
  6. PullToRefreshListView调用onRefreshComplete方法 无法取消刷新的bug
  7. Ubuntu下hadoop2.4搭建集群(单机模式)
  8. Ubuntu 制作U盘启动盘
  9. Pyqt4的对话框 -- 预定义对话框
  10. Fullpage参数说明
  11. [转]Deciding on a Project Coding Mask
  12. 在JavaEE中使用Hibernate框架
  13. leetcode 编译问题:Line x: member access within null pointer of type &#39;struct TreeNode&#39;
  14. #电脑磁盘分区#新买的电脑一般只有C盘或者C盘和D盘,怎么加多几个盘呢
  15. 网络抓包 Fiddler
  16. 【BZOJ3527】【ZJOI2014】力
  17. Git pull error: Your local changes to the following files would be overwritten by merge:
  18. CF 217A Ice Skating
  19. 发送电子邮件模块smtplib
  20. Java知识系列 -- 反射

热门文章

  1. 在cmd命令行下登录本地oracle数据库与服务器上的oracle
  2. 隐藏和显示效果js动画
  3. PAT-乙级-1027. 打印沙漏(20)
  4. 【leetcode】Divide Two Integers (middle)☆
  5. UR #13 Ernd
  6. sqlserver查询指定树形结构的所有子节点
  7. DataTable ,XML和JSON相互转化
  8. 捕获Java线程池执行任务抛出的异常
  9. php register_shutdown_function
  10. Node.js学习(11)----HTTP服务器与客户端