QFNU-ACM 2020.10.23 Trating

CodeForces - 864A 

题意:给偶数个卡片,给卡片编号,两个人每个人选一个号,这个人要拿走所有该号的卡片,如果所有的卡片都被拿走,并且两个人的卡片数量一样多,输出YES 和这两个序号  否则输出NO

QFNU-ACM 2020.10.23 Trating
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string> 
using namespace std;
int a[110];
int main(){
    int n,counts=0,sum1=0,sum2=0,flag=1;
    int p,q;
    cin>>n;
    int b[110]={0};
    for(int i=0;i<n;i++){
         cin>>a[i];
         b[a[i]]++;
    }
    for(int i=1;i<=100;i++){
        if(b[i]){
            if(flag){
            p=i;
            flag=0;    
            sum1+=b[i];
            }else{
            q=i;
            sum2+=b[i];
            flag=1;
            }
            counts++;
        }
    }
    if(counts==2&&sum1+sum2==n&&sum1==sum2){
        cout<<"YES"<<endl;
        cout<<p<<" "<<q<<endl;
    }else{
        cout<<"NO"<<endl;
    }
    return 0;
}
View Code

CodeForces - 864B 

题意:有一段长度为n的字符串求一段最长由小写字母构成的的连续子串长度

题解:先把由不同小写字母构成的子串存起来,遇到大写字母就判断一下是否为最长的

QFNU-ACM 2020.10.23 Trating
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<set>
using namespace std;
set<int> a;
int main(){
    int n,maxx=0;
    string s;
    cin>>n>>s;
    for(int i=0;i<n;i++){
        if(s[i]<='z'&&s[i]>='a'){
            a.insert(s[i]);
        }else{
            if(maxx<a.size()){
                maxx=a.size();
            }
            a.clear();
        }
    }
    if(maxx<a.size()){
        maxx=a.size();
    }
    a.clear();
    cout<<maxx<<endl;
} 
View Code

CodeForces - 758B 

题意:给一段由RBYG!构成的长度为n的字符串,每4个字符里都有RBYG里的一种,RBYG表示不同颜色的灯泡, ! 代表坏掉的灯泡,判断需要补多少各个颜色的灯泡 

题解:可以确定周期为四,哪个位置是哪个颜色的灯泡都是固定的

QFNU-ACM 2020.10.23 Trating
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
using namespace std;
int a[6],b[110];
int main(){
    string s;
    cin>>s;
    for(int i=0;i<s.length();i++){
        if(s[i]!='!'&&s[i]=='R'){
            b[i%4]=1;
        }else if(s[i]!='!'&&s[i]=='B'){
            b[i%4]=2;
        }else if(s[i]!='!'&&s[i]=='Y'){
            b[i%4]=3;
        }else if(s[i]!='!'&&s[i]=='G'){
            b[i%4]=4;
        }
    }
    for(int i=0;i<s.length();i++){
        if(s[i]=='!'){
            a[b[i%4]]++;
        }
    }
    for(int i=1;i<=3;i++){
        cout<<a[i]<<" ";
    }
        cout<<a[4]<<endl;
        return 0;
} 
View Code

 

上一篇:Redis 数据结构


下一篇:2020.10.18:YC中学模拟赛