本题不打表的一种解法

P2225 [HNOI2001] 棋盘变换

%%%
by zjjws @ 2020-10-27 14:44:11


%%%
by yummy @ 2020-10-27 14:47:43


@[LJC00118](/user/51815) $O(n^3/w + ans)$是不是更快?
by 142857cs @ 2020-10-27 14:53:38


@[142857cs](/user/35760) 方程的变量不是都是n^2个吗
by 素质玩家孙1超 @ 2020-10-27 14:56:31


@[素质玩家孙1超](/user/220857) 这个是可以解决的
by 142857cs @ 2020-10-27 14:58:05


至少存在$O(n^4/w)$的做法
by 142857cs @ 2020-10-27 14:58:34


啊这,还是我太菜了
by 素质玩家孙1超 @ 2020-10-27 14:58:38


@[素质玩家孙1超](/user/220857) 就是只把第一行作为变量,后面的可以用第一行表示
by 142857cs @ 2020-10-27 14:59:57


@[142857cs](/user/35760) 确实可以,我比较傻qaq
by LJC00118 @ 2020-10-27 15:30:58


@[LJC00118](/user/51815) 代码里好像有一个错? ```cpp for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { int now = id[calc(i, j)]; mat[now].reset(); mat[now][id[now]] = 1; for (int k = 0; k < 4; k++) { int x = i + dx[k], y = j + dy[k]; if (x <= 0 || y <= 0 || x > n || y > n) continue; int v = id[calc(x, y)]; mat[now][v] = 1 - mat[now][v]; } } } ``` 这个 `int now = id[calc(i, j)];mat[now].reset(); mat[now][id[now]] = 1;` 是不是应该写 `mat[now][now] = 1;`
by 小蒟蒻弱弱弱4 @ 2020-10-28 12:41:37


| 下一页