提出 #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
結果
AC × 2
AC × 19
セット名 テストケース
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