提出 #42736858
ソースコード 拡げる
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll p = 998244353;
int d[510];
ll jie[510],inj[510];
ll f[510][510][510],ans;
ll inv(ll x)
{
ll ans=1,a=x,b=p-2;
for(; b; b>>=1,(a*=a)%=p)
if(b&1) (ans*=a)%=p;
return ans;
}
void init(int n)
{
jie[0]=1;
for(int i=1; i<=n; i++) jie[i]=jie[i-1]*i%p;
inj[n]=inv(jie[n]);
for(int i=n-1; i>=0; i--) inj[i]=inj[i+1]*(i+1)%p;
}
int main()
{
int n;
cin>>n; init(n);
for(int i=1; i<=n; i++)
scanf("%d", &d[i]);
int cnt=1;
f[n+1][0][0]=1;
for(int i=n; i>=1; i--)
{
for(int j=1; j<=n-i+1; j++)
for(int k=d[i]; k<n; k++)
f[i][j][k]=(f[i][j][k]+f[i+1][j-1][k-d[i]])%p; // 选当前点
if(d[i]==0) ++cnt;
else if(i>1)
for(int j=1; j<=n-i+1; j++)
{
ll val;
if(j==1) val=f[i][j][j-1]*jie[n-2]%p;
else val=f[i][j][j-1]*jie[j-2]%p*jie[n-j-1]%p;
ans=(ans+val*jie[d[i]]%p*inj[d[i]-1])%p;
}
for(int j=0; j<=n-i+1; j++)
for(int k=0; k<n; k++)
f[i][j][k]=(f[i][j][k]+f[i+1][j][k])%p; // 不选当前点
}
ans=(ans+cnt*f[1][n][n-1]%p*jie[n-2])%p; --d[1];
for(int i=1; i<=n; i++) ans=ans*inj[d[i]]%p;
cout<<ans;
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | D - Smallest Vertices |
| ユーザ | LingChen |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 700 |
| コード長 | 1355 Byte |
| 結果 | AC |
| 実行時間 | 563 ms |
| メモリ | 506620 KiB |
コンパイルエラー
./Main.cpp: In function ‘int main()’:
./Main.cpp:31:10: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
31 | scanf("%d", &d[i]);
| ~~~~~^~~~~~~~~~~~~
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 700 / 700 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_01.txt, 00_sample_02.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_01.txt | AC | 8 ms | 3688 KiB |
| 00_sample_02.txt | AC | 2 ms | 3976 KiB |
| 01_test_01.txt | AC | 2 ms | 3804 KiB |
| 01_test_02.txt | AC | 2 ms | 3644 KiB |
| 01_test_03.txt | AC | 2 ms | 3504 KiB |
| 01_test_04.txt | AC | 1 ms | 3660 KiB |
| 01_test_05.txt | AC | 2 ms | 3976 KiB |
| 01_test_06.txt | AC | 541 ms | 486772 KiB |
| 01_test_07.txt | AC | 467 ms | 429520 KiB |
| 01_test_08.txt | AC | 475 ms | 435096 KiB |
| 01_test_09.txt | AC | 462 ms | 425884 KiB |
| 01_test_10.txt | AC | 556 ms | 506620 KiB |
| 01_test_11.txt | AC | 559 ms | 506452 KiB |
| 01_test_12.txt | AC | 561 ms | 506452 KiB |
| 01_test_13.txt | AC | 556 ms | 506576 KiB |
| 01_test_14.txt | AC | 563 ms | 506568 KiB |
| 01_test_15.txt | AC | 556 ms | 506572 KiB |
| 01_test_16.txt | AC | 560 ms | 506448 KiB |
| 01_test_17.txt | AC | 515 ms | 476832 KiB |