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 |
|
|
| 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 |