前言
推荐题解 :
知乎 :
b站也有
c
s
d
n
csdn
csdn就算了,出货好慢
幸好最近事多没打,这场题面也太阴间了
传送门 :
A.
虽然题目看完感觉有点怪怪的, 就是一行中没有相同的数
但是 样例应该不难,很显然的样例已经提示我们怎么做了,用 2 ∣ 1 2\ | \ 1 2 ∣ 1构造出 n n n
显然相邻的不能相同 , 所以我们考虑只有两种情况一种是 2 , 1 , 2 , 1.... 2 ,1,2,1.... 2,1,2,1....
另一种是 1 , 2 , 1 , 2.... 1,2,1,2.... 1,2,1,2....
然后再推一下 6 6 6 , 我们发现 2 , 1 , 2 , 1 2 ,1,2,1 2,1,2,1 就构造出来了
因此大胆猜测一下
n
%
3
=
=
1
,
序
列
从
1
,
2....
n\%3 ==1 ,序列从 1,2....
n%3==1,序列从1,2....
否则序列从
2
,
1...
2,1...
2,1...
MyCode
// 2 1 2 1
void solve()
{
int n;cin>>n;
if(n%3 == 1) {
int sum = 0 ;
int t = 1;
while(sum < n){
cout<<t;
sum+=t;
if(t == 2)
t = 1;
else
t = 2;
}
}else{
int sum = 0 ;
int t = 2;
while(sum < n){
cout<<t;
sum+= t;
if(t == 2)
t = 1;
else
t = 2;
}
}
cout<<endl;
}
B.
b b b题考虑,分而治之,我们将矩形化成最小的单位,考虑是否有形如三角形形状的 0 , 1 0,1 0,1即可
MyCode
const int N = 110;
char g[N][N];
void solve()
{
int n,m;cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>g[i][j];
}
}
for(int i=1;i< n ;i++){
for(int j=1;j<m ;j++){
int d = (g[i][j] - '0') +
(g[i+1][j] - '0') +
(g[i][j+1] - '0') +
(g[i+1][j+1] - '0');
if(d == 3){
cout<<"NO"<<endl;
return;
}
}
}
cout<<"YES"<<endl;
}
C. 看不懂题 国际象棋的摆法
D. 还没看