2020.10.23个人赛

题目:Fair Game

思路:

该题给出了n个数,两个人各自拿走一个数(相同的数一起拿走),问拿完能否保证两人手里的数字个数相同而且 n 个数全部拿完。其实就用一个set即可,能把 n 个数拿完,证明放入set后 它的大小只能为2,而且这两个键对应的值也相等。

解题代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <map>
#include <set>
using namespace std;
const long long N = 1e10 + 7;
const int maxn = 1e5 + 4;
const long long INF = 8e18;
typedef long long ll;
#define for0(i,n) for(int i = 0;i < n;i++)
#define for1(i,n) for(int i = 1;i <= n;i++)
map<int,int> ma;
int main(){
    int n;
    cin >> n ;
    while(n--){
        int x;
        cin >> x;
        ma[x]++;
    }
    if(ma.size() == 2){

        auto it = ma.begin();
        auto itt = ++ma.begin();
        if(it -> second == itt -> second){
            cout << "YES" << endl;
            cout << it->first << " " << itt->first;
        }
        else
                cout << "NO" << endl;

    }
    else{
        cout << "NO" << endl;
    }

    return 0;
}

题目:Polycarp and Letters

思路:

这题就是寻找一下没连续的不同小写字母的最大长度,遍历一遍,我用了map标记筛选重复的小写字母,维护最大值即可。

解题代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <map>
#include <set>
using namespace std;
const long long N = 1e10 + 7;
const int maxn = 1e5 + 4;
const long long INF = 8e18;
typedef long long ll;
#define for0(i,n) for(int i = 0;i < n;i++)
#define for1(i,n) for(int i = 1;i <= n;i++)
map<char,int>ma;
int main(){

    int n;
    cin >> n;
    string s;
    cin >> s;
    int maxl = 0,num = 0;
    for(int i = 0;i < s.length();i++){

        if(s[i] >= 'a' && s[i] <= 'z' && !ma[s[i]] ){
            ma[s[i]]++;
            num++;
        }

        if(s[i] >= 'A' && s[i] <= 'Z' || i == s.length()-1){
            maxl = max(maxl,num);
            num = 0;
            ma.clear();
        }
        

    }
    cout << maxl << endl;
    return 0;
}

题目:Blown Garland

思路:

这题问4种灯灭的个数情况,由题意可知,这四种灯,每4个灯的顺序肯定都是一样的,我们便可用一个大小4的数组,记录每个位置灯灭的数量,遍历完便可得到答案。

解题代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <map>
#include <set>
using namespace std;
const long long N = 1e10 + 7;
const int maxn = 1e5 + 4;
const long long INF = 8e18;
typedef long long ll;
#define for0(i,n) for(int i = 0;i < n;i++)
#define for1(i,n) for(int i = 1;i <= n;i++)
int num[4];
int main(){

    string s;
    int r,y,b,g;
    cin >> s;
    for(int i = 0;i < s.length();i++){
        if(s[i] == 'R')
            r = i%4;
        if(s[i] == 'Y')
            y = i%4;
        if(s[i] == 'B')
            b = i%4;
        if(s[i] == 'G')
            g = i%4;
        if(s[i] == '!')
            num[i%4]++;
    }
    cout << num[r]  << " "<< num[b] << " " <<num[y] << " "<< num[g] << endl;

    return 0;
}

 

posted @ 2020-10-31 13:21  emhhbw==  阅读(83)  评论(0)    收藏  举报