LuoguP7059 [NWRRC2015]Lucky Chances 题解
Content
有一个名叫 Lucky chances 的游戏,游戏一开始给出一个 \(r\times c\) 的矩阵,你可以选定矩阵中任意一个元素以及上、下、左、右四个方向中的任意一个方向进行游戏。如果这个方向上的任意一个元素都严格小于所选的元素,那么你就赢了。
试求出所有元素的能够使得你赢得游戏的方向的总和。
数据范围:\(1\leqslant r,c\leqslant 100\),矩阵内的每个元素不超过 \(1000\)。
Solution
我们直接每个方向直接模拟,看能否赢得游戏,能的话就把它加入到答案里面。
Code
int r, c, a[107][107], ans;
int main() {
r = Rint, c = Rint;
F(i, 1, r) F(j, 1, c) a[i][j] = Rint;
F(i, 1, r) F(j, 1, c) {
int flag = 1;
R(k, i - 1, 1) if(a[k][j] >= a[i][j]) {flag = 0; break;}
ans += flag, flag = 1;
F(k, i + 1, r) if(a[k][j] >= a[i][j]) {flag = 0; break;}
ans += flag, flag = 1;
R(k, j - 1, 1) if(a[i][k] >= a[i][j]) {flag = 0; break;}
ans += flag, flag = 1;
F(k, j + 1, c) if(a[i][k] >= a[i][j]) {flag = 0; break;}
ans += flag;
}
printf("%d\n", ans);
return 0;
}