比赛 寒假集训5 评测结果 WTTTTTMMMM
题目名称 挚爱时光 最终得分 0
用户昵称 LikableP 运行时间 6.784 s
代码语言 C++ 内存使用 1.49 MiB
提交时间 2026-03-01 10:55:26
显示代码纯文本
#include <cstdio>

const int MAXN = 1e3 + 10;

int n, k;
int place[MAXN << 1];
int remain[MAXN << 1];
int ans = 0;

void check() {
  int cnt = 0;
  for (int i = 1; i <= n; ++i) {
    if (place[i * 2 - 1] == place[i * 2]) if (++cnt >= k) break;
  }
  if (cnt >= k) if (++ans == 998244353) ans = 0;
}

void dfs(int now) {
  if (now > 2 * n) {
    check();
    return ;
  }

  for (int i = 1; i <= n * 2; ++i) if (remain[i]) {
    remain[i]--;
    place[now] = (i - 1) % n + 1;
    dfs(now + 1);
    place[now] = 0;
    remain[i]++;
  }
}

void work() {
  scanf("%d %d", &n, &k);

  ans = 0;
  for (int i = 1; i <= 2 * n; ++i) remain[i] = 1;
  for (int i = 1; i <= 2 * n; ++i) place[i] = 0;

  dfs(1);

  printf("%d\n", ans);
}

int main() {
  #ifdef LOCAL
    freopen("!input.in", "r", stdin);
    freopen("!output.out", "w", stdout);
  #else
    freopen("love.in", "r", stdin);
    freopen("love.out", "w", stdout);
  #endif

  int T;
  scanf("%d", &T);
  while (T--) {
    work();
  }
  return 0;
}