4 条题解

  • 2
    @ 2024-8-9 14:48:59

    ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

    • 1
      @ 2024-8-5 15:10:27

      ??????????????????????????????

      • -2
        @ 2024-8-5 15:11:13

        #include<bits/stdc++.h>

        using namespace std;

        const int N=1e6;

        typedef long long ll;

        int a[N],b[N],n;

        ll total=0;

        inline int read()

        {

        char c=getchar();int num=0;
        
        for(;!isdigit(c);c=getchar());
        
        for(;isdigit(c);c=getchar())
        
            num=num*10+c-'0';
            
        return num;
        

        }

        void mergesort(int l,int r){

        if(l==r)
        
        	return;
        
        int mid=(l+r)/2;
        
        mergesort(l,mid);	
        
        mergesort(mid+1,r);
        
        int x=l,y=mid+1,z=l;
        
        while(x<=mid&&y<=r){
        
        	if(a[x]>a[y]){
        
        		b[z++]=a[y++];	
          
        		total=total+mid-x+1;
          
        	}
        
        	else
        
        		b[z++]=a[x++];
          
        }
        
        while(x<=mid)
        
        	b[z++]=a[x++];
        
        while(y<=r)
        
        	b[z++]=a[y++];
        
        for(int i=l;i<=r;i++)
        
        	a[i]=b[i];
        

        }

        int main() {

        cin>>n;
        
        for(int i=1;i<=n;i++)
        
        	a[i]=read();
        
        mergesort(1,n);
        
        cout<<total<<endl;
        
        return 0;
        

        }

        • -3
          @ 2024-8-5 15:09:12

          #include<bits/stdc++.h> using namespace std; const int N=1e6; typedef long long ll; int a[N],b[N],n; ll total=0; inline int read() { char c=getchar();int num=0; for(;!isdigit(c);c=getchar()); for(;isdigit(c);c=getchar()) num=num*10+c-'0'; return num; } void mergesort(int l,int r){ if(l==r) return; int mid=(l+r)/2; mergesort(l,mid); mergesort(mid+1,r); int x=l,y=mid+1,z=l; while(x<=mid&&y<=r){ if(a[x]>a[y]){ b[z++]=a[y++]; total=total+mid-x+1; } else b[z++]=a[x++]; } while(x<=mid) b[z++]=a[x++]; while(y<=r) b[z++]=a[y++]; for(int i=l;i<=r;i++) a[i]=b[i]; } int main() { cin>>n; for(int i=1;i<=n;i++) a[i]=read(); mergesort(1,n); cout<<total<<endl; return 0; }

          包对的

          • 1

          信息

          ID
          1029
          时间
          1000ms
          内存
          128MiB
          难度
          8
          标签
          (无)
          递交数
          17
          已通过
          6
          上传者