您的位置:首页 > 其它

Codeforces Round #358 (Div. 2)

2016-06-18 21:17 281 查看
A.Alyona and Numbers

题意:略

思路:这个有一看就不能暴力,找规律。

只需要查找5的五个余数0 1 2 3 4的个数就行了,1~n中,因为求余相同的对应的在1~m中有相同的符合个数。

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
long long sum=0;
long long a[5]={0},b[5]={0};
for(int i=1;i<=n;i++)
a[i%5]++;
for(int i=1;i<=m;i++)
b[i%5]++;
for(int i=0;i<5;i++)
sum+=a[i]*b[(5-i)%5];
cout<<sum<<endl;
}
}


还有,这次是补题,以后打比赛,结束后多看看前几名的代码,向大牛学习学习,多从比赛中学习到真的能力,其他的精简代码:

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
long long sum=0;
for(int i=1;i<=n;i++)
sum+=(m+(i%5))/5;
printf("%lld\n",sum);
}
return 0;
}


#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
long long sum=0;
for(int i=1;i<=n;i++)
sum+=(i+m)/5-i/5;
printf("%lld\n",sum);
}
return 0;
}


B. Alyona and Mex

题意:

操作:给你一个数组,你可以选择对任意元素进行“减”的操作;

mex的定义:一个数组中1~无穷中未出现的最小数字。

要求:求进行操作后,得到最大的mex。例如:

样例1

5
1 3 3 3 6

变成1 2 3 3 4,得到最大mex
5

/*
题意:给你一个数列,你可以选择是否对任意数进行减1的操作,
然后你来求得最大mex
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;

int a[100005];
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
int ans=1;
for(int i=0;i<n;i++)
if(a[i]>=ans)
ans++;
cout<<ans<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: