2020.06.02 Codeforces Round #646 (Div. 2)补题

https://codeforces.com/contest/1363
A - Odd Selection

//#include<bits/stdc++.h>//poj,hdu can't use it
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <stack>
#include <map>
#include <cmath>
#include <algorithm>
#include <iomanip>
using namespace std;
/************************head file************************/
#define inf 0x3f3f3f3f
#define SI(x) scanf("%d",&x)
#define set0(x) memset(x,0,sizeof(x))
#define ms(x,n) memset(x,n,sizeof(x));

typedef long long ll;
const int mod = 998244353;
const int maxn = 2e5;
using namespace std;
/***********************defination************************/
int odd,even,n,x;
int main(){
    
    
    int round;
    cin>>round;
    while(round--)
    {
    
    
        odd = 0;even = 0;
        cin>>n>>x;
        for(int i = 0;i < n;i++)
        {
    
    
            int temp;
            cin>>temp;
            if(temp%2 == 1)odd++;
            else even++;
        }
        if(n==even || odd == 0)cout<<"NO"<<endl;
        else if(n==odd&& x%2 == 0)cout<<"NO"<<endl;
        else if(n==x)
        {
    
    
            if(odd % 2 == 1)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
        else cout<<"YES"<<endl;
    }
    return 0;
}

B - Subsequence Hate

//#include<bits/stdc++.h>//poj,hdu can't use it
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <stack>
#include <map>
#include <cmath>
#include <algorithm>
#include <iomanip>
using namespace std;
/************************head file************************/
#define inf 0x3f3f3f3f
#define SI(x) scanf("%d",&x)
#define set0(x) memset(x,0,sizeof(x))
#define ms(x,n) memset(x,n,sizeof(x));

typedef long long ll;
const int mod = 998244353;
const int maxn = 2e5;
using namespace std;
/***********************defination************************/
int main(){
    
    
    int round;
    cin>>round;
    while(round--)
    {
    
    
        string s;
        cin>>s;
        int r0 = 0,r1 = 0;
        int l0 = 0,l1 = 0;
        int ans = 0;
        for(int i = 0;i < s.length();i++)
            if(s[i] == '0')r0++;
            else r1++;
        ans = min(r0,r1);
        for(int i = 0;i < s.length();i++){
    
    
            if(s[i] == '0'){
    
    r0--;l0++;}
            else {
    
    l1++;r1--;}
            ans = min(ans,min(l0,l1)+min(r0,r1));
        }
        cout<<ans<<endl;
    }
    return 0;
}

C 简单博弈
参考https://www.cnblogs.com/KeepZ/p/13024589.html
后面 代补

猜你喜欢

转载自blog.csdn.net/qq_42937838/article/details/106512771