寫乙個歸併排序的模板,歸併排序也是非常實用的一種演算法吧,而且時間複雜度為o(nlgn)。並且可以求出逆序數等等問題。話不多說請看**。。。orz
void merge_sort(int
*a,int
x,int
y,int
*t) else
} for(i=x;i}
}
如poj2299,,hud4911
就拿hdu4911來說吧直接上歸併模板,話不多說,請看**,,orz
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
long
long maxn=1e5+10;
ll a[maxn],b[maxn],ans=0;
void meger_sort(ll *a,ll x,ll y,ll *t)
}for(i=x;iint main()
meger_sort(a,0,n,b);
printf("%lld\n",max(ans-k,(ll)0));//這裡要注意0的情況!!
//for(int i=0;i
// printf("%d ",a[i]);
// }
}}
hdu 4911 Inversion 歸併排序
problem description bobo has a sequence a 1,a2,a n.he is allowed to swap twoadjacentnumbers for no more than k times.find the minimum number of invers...
HDU 4911 樹狀陣列求逆序數 離散化
題意 最多可以交換k次,就最小逆序對數。思路 逆序數定理,當逆序對數大於0時,若ai要知道樹狀陣列的長度是資料範圍,由於資料比較大,所以要離散化。注意開long long。include using namespace std define mem a,b memset a,b,sizeof a d...
歸併排序(2 路歸併排序)
遞迴寫法 include define maxn 100 void merge int a,int l1,int r1,int l2,int r2 將陣列a的區間 l1,r1 和區間 l2,r2 合併為乙個有序區間 else while i r1 while j r2 for int i 0 i非遞...