如果你 TLE
查看原帖
如果你 TLE
421781
liuzimingc楼主2024/6/26 20:29

原:

for (int i = 0; i < n - 1; i++)
		for (int j = 0; j < 1 << n; j++)
			for (const int &k : s[i + 1]) {
				if ((j >> k) & 1) continue;
				(f[i + 1][j | (1 << k)] += f[i][j]) %= MOD;
			}

后:

for (int i = 0; i < n - 1; i++)
        for (const int &k : s[i + 1])
            for (int j = 0; j < 1 << n; j++) {
                if ((j >> k) & 1) continue;
                int &x = f[i + 1][j | (1 << k)];
                x += f[i][j];
                if (x >= MOD) x -= MOD;
            }

小小的常数优化罢了 :D

2024/6/26 20:29
加载中...