【 2.8日题解 】

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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值