Submission #49891988


Source Code Expand

#include <bits/stdc++.h>
#include <atcoder/modint>
const int MOD=998244353;
using mint = atcoder::static_modint<MOD>;
using namespace std;
typedef long long ll;
#define rep(i,a,n) for (ll i=a;i<(ll)(n);i++)
#define per(i,a,n) for (ll i=n;i-->(ll)(a);)
ll read(){ll r;scanf("%lld",&r);return r;}
const int N=30;
const int MXEDGE=225; // 最大边数
mint h[N+1][N+1][MXEDGE+1]; // h[有序0个数][有序1个数][无重边数]=全连通方案数
mint f[N+1][MXEDGE+1]; // f[有序点数][边数] = 合法全通方案数
mint g[N+1][MXEDGE+1]; // g[有序点数][边数] = 合法方案数
mint p[MXEDGE+1]; // p[c] = m个有序点 上色c种,每种颜色至少一个点的方案数
mint fac[MXEDGE+10]={1};
mint ifac[MXEDGE+10]={1};
mint binom(int n,int m){return (m>n or m<0)?0:(fac[n]*ifac[m]*ifac[n-m]);}
int main(){
  rep(i,1,MXEDGE+1) fac[i]=fac[i-1]*i;
  ifac[MXEDGE]=fac[MXEDGE].inv();
  per(i,0,MXEDGE) ifac[i]=ifac[i+1]*(i+1);
  int n=read();
  int m=read();
  rep(i,1,N+1) rep(j,0,N+1-i) rep(c,0,i*j+1){
    h[i][j][c] = binom(i*j,c); // 不重复任意连c条
    rep(i0,1,i+1) rep(j0,0,j+1) if(i0+j0 != i+j) rep(c0,0,min(i0*j0,c)+1) { // 与最小i相连的连通块
      h[i][j][c] -= h[i0][j0][c0]*binom(i-1,i0-1)*binom(j,j0)*binom((i-i0)*(j-j0),c-c0);
    }
  }
  // 没加-fsanitize 1.2s
  // 加了-fsanitize 9s
  rep(i,1,N+1) rep(j,0,MXEDGE+1) rep(t,1,i+1) f[i][j] += binom(i-1,t-1) * h[t][i-t][j];
  g[0][0] = 1;
  rep(i,1,N+1) rep(j,0,MXEDGE+1) rep(t,1,i+1) rep(k,0,j+1) g[i][j] += binom(i-1,t-1)*f[t][k]*g[i-t][j-k];
  vector<mint> impwr(MXEDGE+1);
  rep(i,0,MXEDGE+1) impwr[i] = mint(i).pow(m);
  rep(c,1,MXEDGE+1) rep(i,0,c+1) p[c] += binom(c,i) * impwr[i] * ((c-i)%2==0?1:-1);
  mint ans =0;
  rep(c,0,MXEDGE+1) ans += g[n][c]*p[c];
  printf("%d\n",(ans*mint(2).pow(m)).val());
  return 0;
}

Submission Info

Submission Time
Task G - Many Good Tuple Problems
User cromarmot
Language C++ 20 (gcc 12.2)
Score 650
Code Size 1817 Byte
Status AC
Exec Time 1378 ms
Memory 4780 KiB

Compile Error

Main.cpp: In function ‘ll read()’:
Main.cpp:9:21: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    9 | ll read(){ll r;scanf("%lld",&r);return r;}
      |                ~~~~~^~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 650 / 650
Status
AC × 4
AC × 42
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_small_00.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 01_small_04.txt, 01_small_05.txt, 01_small_06.txt, 01_small_07.txt, 01_small_08.txt, 01_small_09.txt, 01_small_10.txt, 01_small_11.txt, 01_small_12.txt, 02_n_small_00.txt, 02_n_small_01.txt, 02_n_small_02.txt, 02_n_small_03.txt, 03_m_small_00.txt, 03_m_small_01.txt, 03_m_small_02.txt, 03_m_small_03.txt, 03_m_small_04.txt, 03_m_small_05.txt, 03_m_small_06.txt, 03_m_small_07.txt, 03_m_small_08.txt, 03_m_small_09.txt, 04_random_00.txt, 04_random_01.txt, 04_random_02.txt, 04_random_03.txt, 04_random_04.txt, 05_max_00.txt, 05_max_01.txt, 05_max_02.txt, 05_max_03.txt, 05_max_04.txt, 05_max_05.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1376 ms 4644 KiB
00_sample_01.txt AC 1374 ms 4728 KiB
00_sample_02.txt AC 1374 ms 4568 KiB
00_sample_03.txt AC 1375 ms 4544 KiB
01_small_00.txt AC 1374 ms 4528 KiB
01_small_01.txt AC 1374 ms 4548 KiB
01_small_02.txt AC 1375 ms 4548 KiB
01_small_03.txt AC 1374 ms 4720 KiB
01_small_04.txt AC 1374 ms 4712 KiB
01_small_05.txt AC 1375 ms 4652 KiB
01_small_06.txt AC 1374 ms 4692 KiB
01_small_07.txt AC 1374 ms 4692 KiB
01_small_08.txt AC 1375 ms 4720 KiB
01_small_09.txt AC 1375 ms 4700 KiB
01_small_10.txt AC 1375 ms 4760 KiB
01_small_11.txt AC 1374 ms 4528 KiB
01_small_12.txt AC 1375 ms 4548 KiB
02_n_small_00.txt AC 1374 ms 4780 KiB
02_n_small_01.txt AC 1374 ms 4604 KiB
02_n_small_02.txt AC 1374 ms 4528 KiB
02_n_small_03.txt AC 1373 ms 4544 KiB
03_m_small_00.txt AC 1375 ms 4712 KiB
03_m_small_01.txt AC 1376 ms 4572 KiB
03_m_small_02.txt AC 1374 ms 4716 KiB
03_m_small_03.txt AC 1374 ms 4776 KiB
03_m_small_04.txt AC 1375 ms 4716 KiB
03_m_small_05.txt AC 1375 ms 4548 KiB
03_m_small_06.txt AC 1374 ms 4600 KiB
03_m_small_07.txt AC 1377 ms 4640 KiB
03_m_small_08.txt AC 1375 ms 4644 KiB
03_m_small_09.txt AC 1374 ms 4548 KiB
04_random_00.txt AC 1374 ms 4548 KiB
04_random_01.txt AC 1375 ms 4548 KiB
04_random_02.txt AC 1374 ms 4544 KiB
04_random_03.txt AC 1374 ms 4780 KiB
04_random_04.txt AC 1375 ms 4568 KiB
05_max_00.txt AC 1374 ms 4644 KiB
05_max_01.txt AC 1374 ms 4720 KiB
05_max_02.txt AC 1377 ms 4540 KiB
05_max_03.txt AC 1375 ms 4652 KiB
05_max_04.txt AC 1378 ms 4712 KiB
05_max_05.txt AC 1374 ms 4536 KiB