Codeforces Beta Round #4 (Div. 2 Only)

比赛地址:http://codeforces.com/contest/4

A. Watermelon

给你一个数,问你能不能分成两个偶数。
很显然只有2之外的偶数才可以。

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin>>n;
    if(n%2==0&&n!=2)
    cout<<"YES"<<endl;
    else
    cout<<"NO"<<endl;
}

B. Before an Exam

每天都有一个学习的最少时间和最大时间。问你能不能在给定的天数内达到sum,如果不可以输出NO,可以则输出YES和每天学习的时间,任一种满足条件的都可以。
首先判断sum是否在每天都学习最短时间(t1)的总和与每天都学习最长时间(t2)的总和里,不在为NO。然后算sum比t1多的那一部分,在天数之内分摊掉就可以了。

#include <bits/stdc++.h>
using namespace std;
int mintime[35];
int maxtime[35];
int minsum[35];
int maxsum[35];
int main() {
    int day,sum;
    cin>>day>>sum;
    for(int i=1;i<=day;i++)
    {
        cin>>mintime[i];
        cin>>maxtime[i];
        minsum[i]=mintime[i]+minsum[i-1];
        maxsum[i]=maxtime[i]+maxsum[i-1];
    } 
    if(sum>maxsum[day]||sum<minsum[day])
    {
        cout<<"NO"<<endl;
    }
    else
    {
        cout<<"YES"<<endl;
        int t=sum-minsum[day];
        for(int i=1;i<=day;i++)
        {
            int up=min(maxtime[i]-mintime[i],t);
            t-=up;
            if(i!=1)
            cout<<" ";
            cout<<mintime[i]+up;
        }
        cout<<endl;
    }
}

C. Registration system

给你一个字符串,问你有没有出现过,没有输出OK,否则在字符串后面加个数字,输出这个新生成的字符串。
用map即可。一开始用set竟然超时了。

#include <iostream>
#include <map>
using namespace std;
int main()
{
    int t;
    cin>>t;map<string,int>x;
    while(t--)
    {

        string s;
        cin>>s;
        if(x[s]==0)
        {
            cout<<"OK"<<endl;
        }
        else
        {
            cout<<s<<x[s]<<endl;
        }
        x[s]++;
    }
}

D不会。

猜你喜欢

转载自blog.csdn.net/qq_37252519/article/details/80084627