Educational Codeforces Round 25

A

题意:给你一个01的字符串,0是个分界点,0把这个字符串分成(0的个数+1)个部分,分别求出这几部分1的个数。例如110011101 输出2031,100输出100,1001输出101

代码:

#include<stdio.h>
using namespace std;
int n;
char a[100];
int b[100];
int main()
{
while(~scanf("%d",&n))
{
scanf("%s",a);
int flag=0;
int k=0;
int cnt=0;
for(int i=0; i<n; i++)
{
if(a[i]=='1')
{
cnt++;
flag=0;
}
else
{
if(flag==0)
{
b[k++]=cnt;
flag=1;
cnt=0;
}
else if(flag==1)
{
b[k++]=0;
}
}
}
b[k++]=cnt;
for(int i=0; i<k; i++)
printf("%d",b[i]);
printf(" ");
}
return 0;
}

B

题意:五子棋,表示可以放旗子,x表示Alice的棋子,o是敌人的棋子,现在轮到Alice,问Alice是否能赢。

代码:

#include<stdio.h>
using namespace std;
char a[11][11];
int b,flag;
int main()
{
flag=0;
for(int i=0; i<10; i++)
scanf("%s",a[i]);
for(int i=0; i<10; i++)
for(int j=0; j<10; j++)
{
if(a[i][j]=='.')
{
b=0;
for(int k=i+1; (k<=i+5)&&k<10; k++)
if(a[k][j]=='X')
b++;
else
break;
for(int k=i-1; (k>=i-5)&&k>=0; k--)
if(a[k][j]=='X')
b++;
else
break;
if(b>=4)
flag=1;

b=0;
for(int k=j+1; (k<=j+5)&&k<10; k++)
if(a[i][k]=='X')
b++;
else
break;
for(int k=j-1; (k>=j-5)&&k>=0; k--)
if(a[i][k]=='X')
b++;
else
break;
if(b>=4)
flag=1;

b=0;
for(int k=1; k<=5; k++)
if((a[i+k][j+k]=='X')&&(i+k)<10&&(j+k)<10)
b++;
else
break;
for(int k=1; k<=5; k++)
if((a[i-k][j-k]=='X')&&(i-k)>=0&&(j-k)>=0)
b++;
else
break;
if(b>=4)
flag=1;

b=0;
for(int k=1; k<=5; k++)
if((a[i+k][j-k]=='X')&&(i+k)<10&&(j-k)>=0)
b++;
else
break;
for(int k=1; k<=5; k++)
if((a[i-k][j+k]=='X')&&(i-k)>=0&&(j+k)<10)
b++;
else
break;
if(b>=4)
flag=1;
if(flag==1)
break;
}
else
continue;
}
if(flag)
printf("YES ");
else
printf("NO ");
return 0;
}

C

题意:现在拥有的困难数为k,如果a[i]/2<=k,表示这个问题可以解决,如果啊a[i]>k/2则k*=2,直到a[i]<=k/2,并且k=max(k,a[i]),问k*=2的总次数,使得所有的a[i]<=k/2。

代码:

#include<stdio.h>
#include<algorithm>
using namespace std;
int n;
double m;
double a[1100];
int main()
{
while(~scanf("%d%lf",&n,&m))
{
for(int i=0; i<n; i++)
scanf("%lf",&a[i]);
sort(a,a+n);
double k=m;
int cnt=0;
for(int i=0; i<n; i++)
{
if(a[i]/2.0<=k)
{
k=max(k,a[i]);
continue;
}
else
{
while(1)
{
k*=2;
cnt++;
if(a[i]/2.0<=k)
break;
}
}
k=max(k,a[i]);
}
printf("%d ",cnt);
}
return 0;
}

原文地址:https://www.cnblogs.com/xiejiamin/p/7228101.html