Not Shading
链接跳转
题解:
其实只有几种情况。
1》-1,未出现B
2》0,该位置是B
3》1,该行/列出现B
2》2,该行/列未出现B
#include<bits/stdc++.h>
using namespace std;
#define sc scanf
#define pr printf
char a[100][100];
int main() {
int t;cin>>t;
while(t--){
int l,r,nl,nr;
sc("%d%d%d%d",&l,&r,&nl,&nr);
int x[100],y[100];
int k=0;
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
for(int i=1;i<=l;i++){
for(int j=1;j<=r;j++){
cin>>a[i][j];
if(a[i][j]=='B')x[i]++,k++;
if(a[i][j]=='B')y[j]++,k++;
}
}//cout<<"ans:";
if(a[nl][nr]=='B')pr("0\n");
else if(x[nl]!=0||y[nr]!=0)pr("1\n");
else if(k==0)pr("-1\n");
else pr("2\n");
}
return 0;
}
B - GCD Arrays
链接
题解:
如果全为偶数则gcd至少为2。
那么统计奇数个数,对比k。
特判相等的情况,且l和r不能为1.
#include<bits/stdc++.h>
using namespace std;
#define sc scanf
#define pr printf=
char a[100][100];
int main() {
int t;cin>>t;
while(t--){
int l,r,k;cin>>l>>r>>k;
int ans=r-l+1;
ans/=2;
if(l%2&&r%2)ans++;
if(l>1&&l==r&&k==0)cout<<"YES"<<endl;
else if(ans>k)cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
return 0;
}
Paint the Array
题解:
三种成立情况:
1》n==2:输出大的。
2》找出奇数位最大公约数,看是否能被偶数位整除
2》找出偶数位最大公约数,看是否能被奇数位整除
#include<bits/stdc++.h>
using namespace std;
#define sc scanf
#define pr prinf
long long a[105];
int main() {
int t;cin>>t;
int ans=1;
while(t--){
int n;cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int f0=0,f1=0;
long long n0=a[0],n1=a[1];
for(int i=0;i+2<n;i+=2)
n0=__gcd(n0,a[i+2]);
for(int i=1;i+2<n;i+=2)
n1=__gcd(n1,a[i+2]);
for(int i=0;i<n;i=i+2)
if(a[i]%n1==0)f0=1;
for(int i=1;i<n;i=i+2)
if(a[i]%n0==0)f1=1;
//cout<<ans++<<":\n";
if(n==2&&a[0]!=a[1])cout<<max(a[0],a[1])<<endl;
else if(f1&&f0)cout<<"0"<<endl;
else if(!f1)cout<<n0<<endl;
else if(!f0)cout<<n1<<endl;
}
return 0;
}