关于刚刚的 CF C
  • 板块题目总版
  • 楼主cnyzz
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/10/17 21:23
  • 上次更新2023/11/4 03:26:40
查看原帖
关于刚刚的 CF C
175829
cnyzz楼主2021/10/17 21:23
const int N=1e6;
int n,m,vis[N+10],ph[N+10],q;
char ch[N+10];
int bh(int x,int y) {
	return (x-1)*m+y;
}
int main() {
	n=read(),m=read();
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++) {
			char C=getchar();
			while(C!='.'&&C!='X') C=getchar();
			ch[bh(i,j)]=C;
		}
	for(int i=2;i<=n;i++)
		for(int j=2;j<=m;j++)
			if(ch[bh(i,j)]!='X'&&ch[bh(i-1,j)]=='X'&&ch[bh(i,j-1)]=='X')
				vis[bh(i,j)]=1;
	for(int j=2;j<=m;j++)
		for(int i=2;i<=n;i++)
			if(vis[bh(i,j)]) ph[j]=1;
	for(int i=1;i<=m;i++) ph[i]+=ph[i-1];
	q=read();
	while(q--) {
		int x=read(),y=read();
		int zz=ph[y]-ph[x];
		if(zz) pc('N'),pc('O'),enter;
		else pc('Y'),pc('E'),pc('S'),enter;
	}
	return WDNMD;
}

这个做法会 WA On Test 3,求助。

大致思路是对于每个点只判断他上面和左面是否是 X

所以咋挂了

2021/10/17 21:23
加载中...