Codeforces Beta Round #4 (Div. 2 Only)
A. Watermelon
分西瓜,输入西瓜的个数,要求分得两个部分的西瓜都是偶数
注意 2,判断输入的数是否为偶数
#include<iostream>
using namespace std;
int w;
int main()
{
scanf("%d",&w);
if(w&1 || w==2)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
给出天数和总时间以及每天的时间限制,要求每天安排一个时间,总和等于总时间
先判断m的范围是否满足,然后算出可安排的总时间,从前往后遍历,每天应该在时间限制内加多少时间,最后判断剩余的可安排的总时间是否为0
ll a[N], b[N];//存放min max
void sovle()
{
ll i, n, m, total = 0;
cin >> n >> m;
for(i = 0; i < n; i ++)
{
cin >> a[i] >> b[i];
total += a[i];
}
if(total > m) // m的范围:min <= m <= max
cout << "NO";
else
{
ll p = m - total;//剩余可安排的时间
ll d = 0;//从前往后遍历
while(d < n && p > 0)
{
ll pday = b[d] - a[d];//每天可安排的时间
if(p >= pday)
{
a[d] = b[d];
p -= pday;
}
else
{
a[d] += p;
p = 0;
}
d ++;
}
if(p > 0)//遍历完之后,判断是否剩余时间
cout << "NO" << endl;
else
{
cout << "YES" << endl;
for(i = 0; i < n; i ++)
cout << a[i] << ' ';
}
}
}
C.Registration System
有一个注册系统,给出n个注册名,按顺序一个一个执行注册,如果名字没注册输出OK,否则输出名字加编号1,2,3...
abc abc abc a ok abc1 abc2 ok
先判断字符串是否出现,没有出现就存1,否则输出次数,统计字符串出现的次数,用map
void sovle()
{
ll i, n;
map<string, int> m;
cin >> n;
for(i = 0; i < n; i ++)
{
string s;
cin >> s;
if(m.find(s) == m.end())
{
m[s] = 1;
cout << "OK" << endl;
}
else
{
cout << s << m[s] << endl;
m[s] ++;
}
}
}