社区讨论

关于check函数的一个问题

P2601[ZJOI2009] 对称的正方形参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lo9bgycp
此快照首次捕获于
2023/10/28 08:41
2 年前
此快照最后确认于
2023/10/28 08:41
2 年前
查看原帖
这是我原先的 check() 函数:
CPP
bool check(int x,int y,int bc)
{
	if(x<bc||x>n||y<bc||y>m) return false;
	ull h1,h2,h3;
	int x1=n-(x-bc),y1=m-(y-bc);
	h1=a[x][y]-a[x-bc][y]*pow2[bc]-a[x][y-bc]*pow1[bc]+a[x-bc][y-bc]*pow2[bc]*pow1[bc];
	h2=b[x1][y]-b[x1-bc][y]*pow2[bc]-b[x1][y-bc]*pow1[bc]+b[x1-bc][y-bc]*pow2[bc]*pow1[bc];
	h3=c[x][y1]-c[x-bc][y1]*pow2[bc]-c[x][y1-bc]*pow1[bc]+c[x-bc][y1-bc]*pow2[bc]*pow1[bc];
	return (h1==h2&&h2==h3);
}
这是我修改过后的 check() 函数:
CPP
bool check(int x,int y,int bc)
{
	if(x<bc||x>n||y<bc||y>m) return false;
	ull h1,h2,h3;
	int x1=n-(x-bc),y1=m-(y-bc);
	h1=a[x][y]-a[x-bc][y]*pow2[bc]-a[x][y-bc]*pow1[bc]+a[x-bc][y-bc]*pow2[bc]*pow1[bc];
	h2=b[x1][y]-b[x1-bc][y]*pow2[bc]-b[x1][y-bc]*pow1[bc]+b[x1-bc][y-bc]*pow2[bc]*pow1[bc];
	h3=c[x][y1]-c[x-bc][y1]*pow2[bc]-c[x][y1-bc]*pow1[bc]+c[x-bc][y1-bc]*pow2[bc]*pow1[bc];
	if(h1==h2&&h2==h3) return 1;//修改处
	return 0;
}
现在情况是 前者只能得60pts,但是修改后能AC
现在有一个问题,为什么 这种修改会影响答案?以后能不能用 return (h1==h2&&h2==h3) 写check?

回复

1 条回复,欢迎继续交流。

正在加载回复...