【2020 春】

传送门

a. Prime Day

题意

数据范围

题解

Code

#include<bits/stdc++.h>
using namespace std;
bool is_prime(int x){
    if(x==1) return 0;
    for(int i=2;i<=x/i;i++){
        if(x%i==0) return 0;
    }
    return 1;
}
int main(){
    string n; cin>>n;
    int sz=n.size();
    bool f=1;
    for(int i=0;i<sz;i++){
        cout<<n<<' ';
        if(is_prime(stoi(n))){
            cout<<"Yes"<<(i==sz-1?"":"\n");
        } else{
            f=0;
            cout<<"No"<<(i==sz-1?"":"\n");
        }
        n.erase(0,1);
    }
    if(f) cout<<endl<<"All Prime!";
}

b.The Judger

题意

数据范围

题解

Code

#include<bits/stdc++.h>
using namespace std;
#define pb push_back

map<int,bool>mp;
vector<int>ans[1010];
int p[15][1010];
bool diff[1000000];
bool st[15];
vector<int>pre;
int main(){
    int l,r,n,m; scanf("%d%d%d%d",&l,&r,&n,&m);
    mp[l]=1; mp[r]=1;
    diff[abs(l-r)]=1;
    for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)
        scanf("%d",&p[i][j]);
    pre.pb(l); pre.pb(r);
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            int x=p[j][i];
            if(st[j]) continue;
            if(!diff[x] || mp[x]) {
                printf("Round #%d: %d is out.\n", i, j);
                st[j]=1;
            } else {
                for(auto it:pre){
                    int d=abs(x-it);
                    diff[d]=1;
                }
                if(!mp[x]) pre.pb(x);
                mp[x]=1;
            }
        }
    }
    vector<int>win;
    for(int i=1;i<=n;i++) if(!st[i]) win.push_back(i);
    if(win.empty()) {
        printf("No winner.");
    } else{
        printf("Winner(s):");
        for(int i=0;i<win.size();i++) printf(" %d",win[i]);
    }
}

c.The Judger

题意

数据范围

题解

Code

#include<bits/stdc++.h>
using namespace std;
#define pb push_back
int n,r,k,m;
vector<int>e[510];
map<int,bool>mp;
void solve(){
    mp.clear();
    int cnt=0;
    vector<int>reg(n+1);
    for(int i=1;i<=n;i++) {
        int x; cin>>x;
        if(!mp[x]) cnt++;
        mp[x]=1;
        res[i]=x;
    }
    if(cnt!=k) {
        if(cnt<k) cout<<"Error: Too few species.";
        else cout<<"Error: Too many species.";
        return;
    }
    for(int i=1;i<=n;i++){
        for(int j=0;j<e[i].size();j++){
            int to=e[i][j];
            if(reg[i]==res[to]){
                cout<<"No"<<endl;
                return;
            }
        }
    }
    cout<<"Yes"<<endl;
}
int main(){
    cin>>n>>r>>k;
    for(int i=0;i<r;i++){
        int l,r; cin>>l>>r;
        e[l].pb(r);
        e[r].pb(l);
    }
    cin>>m;
    while(m--) {
        solve();
        if(m!=1) cout<<endl;
    }
}

d.The Judger

题意

数据范围

题解

Code

#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
int n,m;
int main(){
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin>>n>>m;
    map<int,int>ma,mb;

    for(int i=0;i<m;i++){
        int x; cin>>x;
        ma[x]++;
    }
    vector<vector<int>>rnd;
    vector<int>tmp;
    for(int i=m;i<n;i++){
        int x; cin>>x;
        int head=ma.begin()->fi;
        if(ma.begin()->se==1) ma.erase(ma.begin());
        else ma.begin()->se--;

        tmp.push_back(head);
        if(x>=head) ma[x]++;
        else mb[x]++;

        if(ma.empty()){
            ma=mb;
            mb.clear();
            rnd.pb(tmp);
            tmp.clear();
        }
        if(i==n-1){
            while(ma.size()){
                tmp.pb(ma.begin()->fi);
                if(ma.begin()->se==1) ma.erase(ma.begin());
                else ma.begin()->se--;
            }
            if(tmp.size()) rnd.pb(tmp);
            tmp.clear();
            while(mb.size()){
                tmp.pb(mb.begin()->fi);
                if(mb.begin()->se==1) mb.erase(mb.begin());
                else mb.begin()->se--;
            }
            if(tmp.size()) rnd.pb(tmp);
        }
    }
    for(int i=0;i<rnd.size();i++){
        for(int j=0;j<rnd[i].size();j++){
            cout<<(j==0?"":" ")<<rnd[i][j];
        }
        if(i!=rnd.size()-1) cout<<endl;
    }
}

posted @ 2021-03-10 18:32  Hyx'  阅读(58)  评论(0)    收藏  举报