【归并排序】ZOJ-3574-Under Attack II

来源:互联网 发布:网络军事小说 编辑:程序博客网 时间:2024/05/19 01:13

这个用归并算法求逆序数的算法正的是很赞……贴下以后当模板……

题目

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;struct T{int l,r;}p[30005];int cnt,a[30005];bool cmp(T x,T y){return x.l<y.l;}void msort(int l,int r){int i,x,y,m,b[30005];if(l==r)return;m=(l+r)/2;msort(l,m);msort(m+1,r);x=i=l,y=m+1;while(x<=m||y<=r){if(y>r||(x<=m&&a[x]<=a[y]))b[i++]=a[x++];else{b[i++]=a[y++];cnt+=m-x+1;}}for(i=l;i<=r;i++)a[i]=b[i];}int main(){int i,n,k,b,x1,x2;while(scanf("%d%d%d",&x1,&x2,&n)!=EOF){for(i=0;i<n;i++){scanf("%d%d",&k,&b);p[i].l=k*x1+b;p[i].r=k*x2+b;}sort(p,p+n,cmp);for(i=0;i<n;i++)a[i]=p[i].r;cnt=0;msort(0,n-1);printf("%d\n",n+1+cnt);}return 0;}



原创粉丝点击