这个计数题是不是NP的?
  • 板块学术版
  • 楼主eEfiuys
  • 当前回复4
  • 已保存回复5
  • 发布时间2024/4/18 13:01
  • 上次更新2024/4/18 18:07:52
查看原帖
这个计数题是不是NP的?
437788
eEfiuys楼主2024/4/18 13:01

给一个 n×nn\times n 的矩阵,填 0/10/1,使得:每行 11 的个数都相同,每列 11 的个数互不相同。

n=5n=5 是一个数竞题,是从一个方案的边界小分讨。但是这个随 nn 增大是指数级的,只是减了一点。

目前我们的 OI 做法是 f[i][sta],表示考虑前 ii 行,每一列 11 的个数状态为 sta。注意到每一行的个数 kk 只可能是 n2\dfrac{n}{2} 取整,而 nn 为奇数时上下取整方案数相等,以下取整为例,列为 0,...,n−10,...,n-1;nn 为偶数时列为 0,...,n2−1,n2+1,...,n0,...,\dfrac{n}{2}-1,\dfrac{n}{2}+1,...,n,所以我们可以钦定最终列的状态递增,最后乘 n!n!,这样复杂度低很多。此外,我们把状态扔到 map 里(多 log,但我甚至不会不带 log 存状态),转移只访问有值的。这个复杂度肯定更低,但是我不会算,不过应当是 n!n! 级别的(状态数低于 n3n^3,转移要枚举这一行的 CnkC_n^k 个状态)。

n=11 跑了 6s,n=13跑了好久才出来。
附表:
n=1,2,3,4,5,6,7,8,9,10,11

ans=

2
2
36
96
26400
151200
919749600
10747699200
1619279453030400
38008104180480000
148176231082711235712000
6916043158135602720768000
715698866739659760701964380160000 (7e32?)
2024/4/18 13:01
加载中...