时限有点太宽了吧
查看原帖
时限有点太宽了吧
463210
zzzYheng楼主2025/7/26 12:08

O(3n)O(3^n) 已经可以通过了,https://www.luogu.com.cn/record/226937722

核心片段如下:

for (int s = 0; s < (1 << n); ++s) {
      if (!s) cout << (ll)f[0] * g[0] % kMod << ' ';
      else {
         __int128 sum = 0;
         int p = __lg(s);
         int ss = s ^ (1 << p);
         for (int tt = ss; ; tt = (tt - 1) & ss) {
            int t = tt | (1 << p);
            sum += (ll)f[t] * g[s ^ t] + (ll)f[s ^ t] * g[t];
            if (!tt) break;
         }
         cout << (int)(sum % kMod) << ' ';
      }
   }
2025/7/26 12:08
加载中...