【题解】2021.9.18 - zhengru IOI 七连测 Day4
T1 扫雷
思路
-
因为只需要求雷的总数,所以只需要找若干个区间覆盖整个图即可。
-
然后,每隔 \(3\) 个统计一下答案即可。
-
如果行/列是 \(3\) 的倍数,那么应从 \(2\) 开始枚举;
-
如果 \(\mod 3\) 余 \(2\) ,可以直接从 \(1\) 开始枚举;
-
如果余 \(1\) ,也可以直接从 \(1\) 开始枚举,因为这样可以先转换为余 \(2\) 的形式,然后又相当于是从 \(1\) 开始,仍然合法。
-
然后就是代码了。
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int n,m,ans;
int x,ny,my;
int main(){
scanf("%d%d",&n,&m);
ny=(n%3)?1:2;my=(m%3)?1:2;
for(register int i=1;i<=n;++i)
for(register int j=1;j<=m;++j){
scanf("%d",&x);
if(!((i-ny)%3)&&!((j-my)%3)) ans+=x;}
printf("%d\n",ans);
return 0;
}