博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDOJ 2689
阅读量:7221 次
发布时间:2019-06-29

本文共 1694 字,大约阅读时间需要 5 分钟。

Sort it

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 1940    Accepted Submission(s): 1390

Problem Description
You want to processe a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted in ascending order. Then how many times it need.
For example, 1 2 3 5 4, we only need one operation : swap 5 and 4.
 

 

Input
The input consists of a number of test cases. Each case consists of two lines: the first line contains a positive integer n (n <= 1000); the next line contains a permutation of the n integers from 1 to n.
 

 

Output
For each case, output the minimum times need to sort it in ascending order on a single line.
 

 

Sample Input
3 1 2 3 4 4 3 2 1
 

 

Sample Output
0 6
 

 

Author
WhereIsHeroFrom
 

 

Source
 

 

Recommend
yifenfei
 
题意是给你一个序列,问你最少交换多少次可以使整个序列单调上升。
数据只有1000,直接n^2可做,但是有一种更为精妙的方法——树状数组 0Ms
我们先初始化整个序列为0,然后每输入一个数x,就在x位置将0换成1,此时求该位置的sum,就是比x小的数字数目,显然i - sum就是是这个数字要交换的次数。
#include
#include
#include
#include
using namespace std;int a[1010], c[1010] , n;int lowbit(int x){ return x & (-x);}int sum(int x){ int sum = 0; while(x > 0) { sum += c[x]; x -= lowbit(x); } return sum;}void update(int x , int num){ while(x <= n) { c[x] += num; x += lowbit(x); }}int main(){ while(~scanf("%d" , &n)) { memset(a , 0 , sizeof(a)); memset(c , 0 , sizeof(c)); int ans = 0; int x; for(int i = 1 ; i <= n ; i++) { scanf("%d" , &x); update(x , 1); ans += i - sum(x); } printf("%d\n" , ans); } return 0;}

 

转载地址:http://kchym.baihongyu.com/

你可能感兴趣的文章
windows10安装体验(win8.1升级win10)
查看>>
Eclipse插件checkstyle安装使用
查看>>
使用Volley传送网络数据
查看>>
centos下的tree的使用
查看>>
笔记本在公司内部分工位有线连接不识别无法上网
查看>>
Windows 8 Hyper-v和MinWin:一个扭转战局的策略?
查看>>
mybatis问题
查看>>
__attribute__ 你知多少?
查看>>
Android Bluetooth 学习(3)蓝牙设备之间自动配对
查看>>
调用系统相册和拍照,取得返回文件
查看>>
android View 1
查看>>
Zabbix 监控windows的网卡流量
查看>>
Oracle 查询当前系统时间的几种方式
查看>>
python 爬虫系列(1) --- requests库入门
查看>>
使用Apache Httpclient访问Spring rest接口下载文件
查看>>
机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)
查看>>
Dockerfile多阶段构建
查看>>
MySQL配置文件mysql.ini参数详解
查看>>
通知UI thread的一个方法
查看>>
offsetof宏—求结构体中一个成员在该结构体中的偏移量
查看>>