警示后人 如果 WA 28 on #5 #10 #11
查看原帖
警示后人 如果 WA 28 on #5 #10 #11
689507
liu_he_yong楼主2024/10/17 20:34

注意判断能否跳出,并连接超级汇点时的条件

我原本这样写是错的

if (i - d < 1 || i + d > r || j - d < 1 || j + d > c) {
    ADD(zip(i, j) + addition, S + 1, inf);
}

应当是以下两种之一或是等价的表达

if (i - d < 1 || i + d > r || j - d < 1 || j + d > c) {
    ADD(zip(i, j) + addition, S + 1, inf);
}

if (std::min(std::min(i - 1, j - 1), std::min(r - i, c - j)) < d) {
    ADD(zip(i, j) + addition, S + 1, inf);
}
2024/10/17 20:34
加载中...