• 洛谷——排序


    2019-11-17

    11:30:34

    #include<iostream>
    using namespace std;
    int n,a[1000001];
    void qsort(int l,int r){
        int mid = a[(l+r)/2];//中间数
        int i = l,j = r;
        do{
            while(a[i]<mid) i++;
            while(a[j]>mid) j--;
            if(i<=j){
                swap(a[i],a[j]);
                i++;
                j--;
            }
        } while(i<=j);//这里注意要有=
        if(l<j) qsort(l,j);//递归搜索左半部分 
        if(i<r) qsort(i,r); //递归搜索右半部份 
    }
    int main(){
        cin>>n;
        for(int i=1;i<=n;++i) cin>>a[i];
        qsort(1,n);
        for(int i=1;i<n;++i) cout<<a[i]<<" ";
        return 0;
    } 

     

     

    #include<bits/stdc++.h>
    using namespace std;
    set<int> s;
    int a[105];
    int main(){
        int n;
        cin>>n;
        for(int i=0;i<n;++i){
            cin>>a[i];
            s.insert(a[i]);
        }
        cout<<s.size()<<endl;
        while(!s.empty()){
            cout<<*s.begin()<<" ";
            s.erase(s.begin());
        }
        return 0;
    }

    万能头文件:

     

     

     解法1:

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,i,f,k[5001],s[5001],sub[5001];
    bool cmp(int a,int b){
        if(s[a] == s[b]){
            return k[a]<k[b];
        }
        return s[a] > s[b];
    }
    int main(){
        cin>>n>>m;
        for(int i = 1;i<=n;++i){
            cin>>k[sub[i]=i]>>s[i];
        }
        sort(sub+1,sub+n+1,cmp);
        f = s[sub[int(m*1.5)]];//分数线
        for(i=1;s[sub[i]]>=f;++i);
        cout<<f<<" "<<i-1<<endl;
        for(i=1;s[sub[i]]>=f;++i){
            cout<<k[sub[i]]<<" "<<s[sub[i]]<<endl; 
        } 
    } 

     

     

     比较100位的数字,属于高精度。直接上字符串

    #include<bits/stdc++.h>
    #define f(a,b,c) for(int a=b;a<=c;a++)
    #define f1(a,b,c) for(int a=b;a>=c;i--)
    using namespace std;
    
    bool cmp(pair<int,string> a,pair<int,string> b){
        if(a.second.size() != b.second.size()){
            return a.second.size() > b.second.size();
        }else
            return a.second>b.second;
    }
    int main(){
        pair<int,string> t[21];
        int n;
        cin>>n;
        f(i,1,n) cin>>t[i].second,t[i].first = i;
        sort(t+1,t+n+1,cmp);
        cout<<t[1].first<<"
    "<<t[1].second;
        return 0;
    } 

  • 相关阅读:
    泛型接口协变和抗变
    泛型类功能
    泛型结构
    using 关键字给类和名称空间指定别名
    sqlite创建数据库问题
    sqlite命令
    必须输入大于0的整数
    最近在看c#本质论和B站上对应这本书的视频
    Linux系统管理笔记
    创建圆形类,其中包括set,get方法
  • 原文地址:https://www.cnblogs.com/JasonPeng1/p/11875953.html
Copyright © 2020-2023  润新知