zoukankan      html  css  js  c++  java
  • 洛谷——排序

    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;
    } 

  • 相关阅读:
    IP路由选择过程
    Netstat命令详解
    路由器的硬件结构
    路由器发展编年史 完结篇
    制作自己博客园文章签名
    路由器发展编年史 发展篇
    距离矢量路由协议_(4)
    路由器的基本功能
    分组交换、报文交换、电路交换
    动态路由中的几种常见metric
  • 原文地址:https://www.cnblogs.com/JasonPeng1/p/11875953.html
Copyright © 2011-2022 走看看