zoukankan      html  css  js  c++  java
  • 重刷信奥赛一本通日记-2

    今天是重刷一本通的第二天

    今天刷的是第二章的数据排序

    这次呢

    题有点多

    直接放上前两个题的代码罢

    T1车厢重组

    /*T1车厢重组
    这个小水题我们直接用冒泡排序过了罢*/
    #include<iostream>
    using namespace std;
    int main(){
    int n,a[n+1]={0},ans;
    cin>>n;
    for(int i=1;i<=n;i++){
    cin>>a[i];
    }
    for(int i=1;i<=n;i++){
    for(int j=1;j<=i;j++){
    if(a[i]<a[j]){
    int t=a[i];
    a[i]=a[j];
    a[j]=t;
    ans++;
    }
    }
    }
    cout<<ans;
    return 0;     
    }

    T2求逆序对

    /*T2求逆序对
    归并排序直接上*/
    #include<cstdio>
    int n,a[100001],c[100001];
    unsigned long long ans=0;
    void m(int l,int r){
    int mid=(l+r)/2,i,j,tmp;
    if(l>=r)
    return;
    m(l,mid);
    m(mid+1,r);
    tmp=l;
    for(i=l,j=mid+1;i<=mid&&j<=r;)
    if(a[i]>a[j])
    c[tmp++]=a[j++],ans+=mid-i+1;
    else c[tmp++]=a[i++];
    if(i<=mid)
    for(;i<=mid;)
    c[tmp++]=a[i++];
    if(j<=r)
    for(;j<=r;)
    c[tmp++]=a[j++];
    for(i=l;i<=r;i++)
    a[i]=c[i];
    }
    int main(void){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    scanf("%d",a+i);
    m(1,n);
    printf("lld",ans);
    return 0;
    }
  • 相关阅读:
    [CQOI2011]放棋子
    [JSOI2015]染色问题
    [ZJOI2016]小星星
    [NOI2018]你的名字
    bzoj2393 Cirno的完美算数教室
    [CQOI2012]局部极小值
    CF768F Barrels and boxes
    bzoj4402 Claris的剑
    烽火SATA SSD DSS200-B
    添加防火墙规则
  • 原文地址:https://www.cnblogs.com/hells/p/12927253.html
Copyright © 2011-2022 走看看