题意:给定若干数,问需多少次调换,可以变成升序数组。
思路:运用归并排序,计算需调换次数。
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int n; __int64 step,a[500005],tt[500005]; void merge(__int64 a[],int left,int mid,int right) { int i=left,j=mid+1,p=left; while(i<=mid&&j<=right) { if(a[i]<=a[j]) { tt[p++]=a[i++]; } else { tt[p++]=a[j++]; step+=mid-i+1;//左、右半部分已排序好,a[i]往后的数值全都大于a[j] } } while(i<=mid) tt[p++]=a[i++]; while(j<=right) tt[p++]=a[j++]; for(int k=left;k<=right;k++) { a[k]=tt[k]; } } void mergesort(__int64 a[],int p,int r) { int q; if(p<r) { q=(p+r)/2; mergesort(a,p,q); mergesort(a,q+1,r); merge(a,p,q,r); } } void solve() { int i;step=0; mergesort(a,0,n-1); printf("%I64d\n",step); } int main() { while(scanf("%d",&n)&&n) { for(int i=0;i<n;i++) scanf("%I64d",&a[i]); solve(); } return 0; }
您还没有登录,请您登录后再发表评论
北大POJ2299-Ultra-QuickSort 解题报告+AC代码
POJ水题集-----50道左右-----增加自信啊..
北大POJ1258-Agri-Net【Prim】 解题报告+AC代码
poj 2488——dfs深度优先遍历 //给行数列数,求问能否遍历,给出字典序的一种遍历
poj题目分类--acmer做题极有用资源
北大POJ3292-Semi-prime H-numbers 解题报告+AC代码
北大POJ1002-487-3279【Hash+Qsort】 解题报告+AC代码
非常全的poj答案库 1164-1874 1000-4007
poj 3131 Cubic Eight-Puzzle.md
poj 2196 Specialized Four-Digit Numbers.md
poj平台有关数据结构题的Java源码 1159 1276 2406 2502 2509 2513 2533 2778 3176
#include #define PI 3.1415926 int main() { int n,i,m,arr[100]; float x,y,halfcircle; scanf("%d",&n); ... printf("Property %d: This property will begin eroding in year %d.\n",i,arr[i]);...
很有用的解题报告。。是acm初级提高的必备资料。。。。。
北大POJ3253-POJ3253-Fence Repair【STL优先队列】 解题报告+AC代码
c表示有多少种珍珠 ai 表示第i种珍珠所需的数量 pi 表示第i种珍珠的价钱 每买一种珍珠都需要付额外的10 * pi的钱,便宜的珍珠可以用贵的珍珠来代替,求最少的钱的总数。
POJ 是“北京大学程序在线评测系统”(Peking University Online Judge)的缩写,是个提供编程题目的网站,兼容Pascal、C、C++、Java、Fortran、Python等多种语言。可以按照分类,在POJ上做题。
POJ北大在线测评系统离线题库,里面包含1002-3422题,可以离线刷题。
人们熟悉的四则运算表达式称为中缀表达式,例如(23+34*45/(5+6+7))。在程序设计语言中,可以利用堆栈的方法把中缀表达式转换成保值的后缀表达式(又称逆波兰表示法),并最终变为计算机可以直接执行的指令,得到...
POJ3211--Washing Clothes
poj 1690 Your-Term-Project.md
相关推荐
北大POJ2299-Ultra-QuickSort 解题报告+AC代码
POJ水题集-----50道左右-----增加自信啊..
北大POJ1258-Agri-Net【Prim】 解题报告+AC代码
poj 2488——dfs深度优先遍历 //给行数列数,求问能否遍历,给出字典序的一种遍历
poj题目分类--acmer做题极有用资源
北大POJ3292-Semi-prime H-numbers 解题报告+AC代码
北大POJ1002-487-3279【Hash+Qsort】 解题报告+AC代码
非常全的poj答案库 1164-1874 1000-4007
poj 3131 Cubic Eight-Puzzle.md
poj 2196 Specialized Four-Digit Numbers.md
poj平台有关数据结构题的Java源码 1159 1276 2406 2502 2509 2513 2533 2778 3176
#include #define PI 3.1415926 int main() { int n,i,m,arr[100]; float x,y,halfcircle; scanf("%d",&n); ... printf("Property %d: This property will begin eroding in year %d.\n",i,arr[i]);...
很有用的解题报告。。是acm初级提高的必备资料。。。。。
北大POJ3253-POJ3253-Fence Repair【STL优先队列】 解题报告+AC代码
c表示有多少种珍珠 ai 表示第i种珍珠所需的数量 pi 表示第i种珍珠的价钱 每买一种珍珠都需要付额外的10 * pi的钱,便宜的珍珠可以用贵的珍珠来代替,求最少的钱的总数。
POJ 是“北京大学程序在线评测系统”(Peking University Online Judge)的缩写,是个提供编程题目的网站,兼容Pascal、C、C++、Java、Fortran、Python等多种语言。可以按照分类,在POJ上做题。
POJ北大在线测评系统离线题库,里面包含1002-3422题,可以离线刷题。
人们熟悉的四则运算表达式称为中缀表达式,例如(23+34*45/(5+6+7))。在程序设计语言中,可以利用堆栈的方法把中缀表达式转换成保值的后缀表达式(又称逆波兰表示法),并最终变为计算机可以直接执行的指令,得到...
POJ3211--Washing Clothes
poj 1690 Your-Term-Project.md