第一次在Codeforces做题,这套题比较简单···
A. Watermelon
这题是很水的水题,不过有坑人的地方,看似简单的奇偶性判断,但是要注意w小于等于2时的情况,特别。
#include<iostream>
#include<iomanip>
#include<string>
#include<stdio.h>
using namespace std;
int main( )
{
int w;
while(cin>>w)
{
if(w<=2||w%2==1)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
}
B. Before an Exam
这题还是水题,只要判断时间和能否符合要求,再输出其中一个可能性。注意总共最少时间如果大于要求的时间也是不符合。这是其中一个坑人的地方。其他找时间注意不能超过每天最少的时间。
#include<iostream>
#include<iomanip>
#include<string>
#include<stdio.h>
using namespace std;
int main( )
{
int d,sumTime,sum,sum1,sum2;
int minTime[31],maxTime[31],Time[31];
int a,b,c,i;
while(cin>>d>>sumTime)
{
sum=0;sum1=0;
for(i=1;i<=d;++i)
{
cin>>minTime[i]>>maxTime[i];
sum=sum+maxTime[i];
sum1=sum1+minTime[i];
}
if(sum1>sumTime||sum<sumTime)
{
cout<<"NO"<<endl;
}
else
{
for(a=1;a<=d;++a)
{
Time[a]=maxTime[a];
}
sum2=sum-sumTime;
for(b=d;b>=1;--b)
{
for(c=Time[b];c>=minTime[b];--c)
{
if(sum2==0)
{
Time[b]=c;
break;
}
else
{
if(c!=minTime[b])
--sum2;
}
if(c==minTime[b])
Time[b]=minTime[b];
}
}
cout<<"YES"<<endl;
for(a=1;a<=d;++a)
{
cout<<Time[a];
if(a!=d)
cout<<" ";
}
cout<<endl;
}
}
return 0;
}
C. Registration system
神奇的STL,用map关联容器可以防止超时······
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main( )
{
int n,i;
string s;
while(cin>>n)
{
map<string,int> a;
for(i=0;i!=n;++i)
{
cin>>s;
if(a.count(s)==0)
{
a[s]=0;
cout<<"OK"<<endl;
}
else
{
++a[s];
cout<<s<<a[s]<<endl;
}
}
}
return 0;
}
D. Mysterious Present
这题还不会做····
题目网址: