icpc后的第一场cf,6000+人,似乎是个涨粉的好机会,然而时间段确实比较坑,昨晚凌晨3点,有点尴尬
这场其实完全就是手速场了,三道签到题,还是交题之前一定要谨慎啊,细节决定成败
1.5h做完后,实在太困了,剩余1h直接睡觉了,要不然开启hack模式,似乎会比较有趣
看看这三题吧
A. Div. 64
思路:这题真心纯签到啊,统计非前导0的个数,不小于6则yes,小于则no
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <map>
#include <cmath>
#include <string>
#include <queue>
#include <stack>
using namespace std;
const int maxn = 110;
char num[maxn];
int main()
{
while(scanf("%s",num)!=EOF)
{
int len = strlen(num);
bool st = false;
int sum = 0;
for(int i=0;i<len;i++)
{
if(num[i]=='1')
{
st = true;
}
else
{
if(st)
{
sum++;
}
}
}
if(sum >= 6)
{
printf("yes\n");
}
else
{
printf("no\n");
}
}
return 0;
}
B. Cubes for Masha
思路:这题,统计所有可能的数组合,思路一定要清晰啊,位数问题与前导0,这场考了很多前导0问题,而纯暴力似乎有的时候也挺奏效
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <map>
#include <cmath>
#include <string>
#include <queue>
#include <stack>
using namespace std;
const int maxn = 1e5+10;
bool cube[3][10];
bool num[1000];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
memset(cube,false,sizeof(cube));
memset(num,false,sizeof(num));
for(int i=0;i<n;i++)
{
for(int j=0;j<6;j++)
{
int temp;
scanf("%d",&temp);
cube[i][temp] = true;
}
}
if(n==1)
{
for(int i=0;i<10;i++)
{
if(cube[0][i])
{
num[i] = true;
}
}
}
else if(n==2)
{
for(int j=0;j<2;j++)
{
for(int i=0;i<10;i++)
{
if(cube[j][i])
{
num[i] = true;
}
}
}
for(int j=0;j<10;j++)
{
for(int k=0;k<10;k++)
{
if(cube[0][j]&&cube[1][k])
{
num[j+k*10] = true;
num[k+j*10] = true;
}
}
}
}
else
{
for(int i=0;i<3;i++)
{
for(int j=0;j<10;j++)
{
if(cube[i][j])
{
num[j] = true;
}
}
for(int j=0;j<10;j++)
{
for(int k=0;k<10;k++)
{
if(cube[(i+1)%3][j]&&cube[(i+2)%3][k])
{
num[j+k*10] = true;
num[k+j*10] = true;
}
}
}
}
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
for(int k=0;k<10;k++)
{
if(cube[0][i]&&cube[1][j]&&cube[2][k])
{
num[i+j*10+k*100] = true;
num[i+k*10+j*100] = true;
num[j+i*10+k*100] = true;
num[j+k*10+i*100] = true;
num[k+i*10+j*100] = true;
num[k+j*10+i*100] = true;
}
}
}
}
}
int re;
for(re=1;re<1000;re++)
{
if(!num[re])
{
break;
}
}
printf("%d\n",re-1);
}
return 0;
}
C. Solution for Cube
思路:转二元魔方问题,由于这题情况很清晰,直接强行开暴力,至于交题之前一定要检查一发,由于太紧张,代码还没写完就慌忙交题,一发wa送给自己
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <map>
#include <cmath>
#include <string>
#include <queue>
#include <stack>
using namespace std;
const int maxn = 1e5+10;
int cube[30];
int col[6];
int main()
{
while(scanf("%d",&cube[1])!=EOF)
{
bool make = false;
col[0] = cube[1];
for(int i=2;i<=24;i++)
{
scanf("%d",&cube[i]);
if(i%4==1)
{
col[(i-1)/4] = cube[i];
}
else
{
if(cube[i] != col[(i-1)/4])
{
col[(i-1)/4] = -1;
}
}
}
if(col[0]>0&&col[2]>0)
{
if( cube[15]==cube[16]
&&cube[16]==cube[ 5]
&&cube[ 5]==cube[ 6]
&&cube[ 7]==cube[ 8]
&&cube[ 8]==cube[17]
&&cube[17]==cube[18]
&&cube[19]==cube[20]
&&cube[20]==cube[21]
&&cube[21]==cube[22]
&&cube[23]==cube[24]
&&cube[24]==cube[13]
&&cube[13]==cube[14])
{
make = true;
}
if( cube[15]==cube[16]
&&cube[16]==cube[21]
&&cube[ 5]==cube[ 6]
&&cube[ 7]==cube[ 8]
&&cube[ 8]==cube[13]
&&cube[17]==cube[18]
&&cube[19]==cube[20]
&&cube[20]==cube[ 5]
&&cube[21]==cube[22]
&&cube[23]==cube[24]
&&cube[24]==cube[17]
&&cube[13]==cube[14])
{
make = true;
}
}
else if(col[1]>0&&col[5]>0)
{
if( cube[ 3]==cube[ 4]
&&cube[ 4]==cube[18]
&&cube[18]==cube[20]
&&cube[17]==cube[19]
&&cube[19]==cube[11]
&&cube[11]==cube[12]
&&cube[ 9]==cube[10]
&&cube[10]==cube[13]
&&cube[13]==cube[15]
&&cube[14]==cube[16]
&&cube[16]==cube[ 1]
&&cube[ 1]==cube[ 2])
{
make = true;
}
if( cube[ 3]==cube[ 4]
&&cube[ 4]==cube[15]
&&cube[18]==cube[20]
&&cube[17]==cube[19]
&&cube[19]==cube[ 1]
&&cube[11]==cube[12]
&&cube[ 9]==cube[10]
&&cube[10]==cube[18]
&&cube[13]==cube[15]
&&cube[14]==cube[16]
&&cube[16]==cube[11]
&&cube[ 1]==cube[ 2])
{
make = true;
}
}
else if(col[3]>0&&col[4]>0)
{
if( cube[ 1]==cube[ 3]
&&cube[ 3]==cube[21]
&&cube[ 6]==cube[ 8]
&&cube[ 5]==cube[ 7]
&&cube[ 7]==cube[ 2]
&&cube[10]==cube[12]
&&cube[ 9]==cube[11]
&&cube[11]==cube[ 6]
&&cube[21]==cube[23]
&&cube[22]==cube[24]
&&cube[24]==cube[10]
&&cube[ 2]==cube[ 4])
{
make = true;
}
if( cube[ 1]==cube[ 3]
&&cube[ 3]==cube[ 6]
&&cube[ 6]==cube[ 8]
&&cube[ 5]==cube[ 7]
&&cube[ 7]==cube[10]
&&cube[10]==cube[12]
&&cube[ 9]==cube[11]
&&cube[11]==cube[21]
&&cube[21]==cube[23]
&&cube[22]==cube[24]
&&cube[24]==cube[ 2]
&&cube[ 2]==cube[ 4])
{
make = true;
}
}
if(make)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
return 0;
}
暴力场,排名还算挺可观的,等等看排名的变化吧
第二天——unranted
文章地址:http://blog.csdn.net/owen_q/article/details/78443433