第1期:牛客竞赛语法入门班数组栈、队列和stl习题

提纲

 

第1期:牛客竞赛语法入门班数组栈、队列和stl习题

老子的全排列呢 

使用了next_permutation

【用法总结】C++ STL中 next_permutation函数的用法

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    int a[8];
    for(int i=0;i<8;i++){
        a[i]=i+1;
    }
    do{
        for(int i=0;i<8;i++){
            printf("%d ",a[i]);
        }
        printf("\n");
    }while(next_permutation(a,a+8));
    return 0;
}

装进肚子

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef struct node{
    int a;
    int b;
}NUM;
bool cmp(NUM t,NUM y){
    return t.a-t.b>y.a-y.b;
}
int main(){
    NUM p[100005];
    int n,k;
    long long ans=0;
    cin>>n>>k;
    for(int i=0;i<n;i++){
        cin>>p[i].a;
    }
    for(int i=0;i<n;i++){
        cin>>p[i].b;
    }
    sort(p,p+n,cmp);
    for(int i=0;i<k;i++){
        ans+=p[i].a;
    }
    for(int i=k;i<n;i++){
        ans+=p[i].b;
    }
    cout<<ans<<endl;
    return 0;
}

C  牛牛的三角形

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,flag=0;
    cin>>n;
    vector<int> a;
    for(int i=0;i<n;i++){
        int e;
        cin>>e;
        a.push_back(e);
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            for(int k=0;k<n;k++){
                if(i!=j&&j!=k&&k!=i){
                    if(a[i]+a[j]>a[k]&&abs(a[i]-a[j])<a[k]){
                        flag=1;
                        cout<<a[i]<<" "<<a[j]<<" "<<a[k]<<endl;
                        break;
                    }
                }
            }
            if(flag) break;
        }
        if(flag) break;
    }
    if(!flag) cout<<"No solution\n";
    return 0;
}

[NOIP1998]拼数

#include<bits/stdc++.h>
using namespace std;
bool cmp(string a,string b){
    return a+b>b+a;
}
int main(){
    string s[25];
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>s[i];
    }
    sort(s,s+n,cmp);
    for(int i=0;i<n;i++){
        cout<<s[i];
    }
    cout<<endl;
    return 0;
}

好串 *

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s; int a(0),b(0);
    cin>>s;
    for(int i=0;i<s.size();i++){
        if(s[i]=='a') a++;
        else b++;
        if(a>0&&b>0){
            a--;
            b--;
        }
        if(b>a){
            cout<<"Bad\n";
            return 0;
        }
    }
    if(a>0||b>0) cout<<"Bad\n";
    else cout<<"Good\n";
    return 0;
}

Rails

栈和排序

上一篇:第3期:2021秋季算法入门班第五章习题:优先队列、并查集


下一篇:Golang 026. 求二次方程的根