結果
問題 | No.2164 Equal Balls |
ユーザー |
![]() |
提出日時 | 2022-12-15 22:05:41 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 1,626 ms / 5,000 ms |
コード長 | 1,226 bytes |
コンパイル時間 | 4,630 ms |
コンパイル使用メモリ | 266,964 KB |
最終ジャッジ日時 | 2025-02-09 13:59:52 |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 51 |
ソースコード
#include <stdio.h>#include <atcoder/all>#include <bits/stdc++.h>using namespace std;using namespace atcoder;using mint = modint998244353;#define rep(i,n) for (int i = 0; i < (n); ++i)#define Inf32 1000000001#define Inf64 4000000000000000001mint cal[305][305][630];int main(){int c = 315;rep(i,305){vector<mint> dp(630,0);dp[c] = 1;rep(j,i){vector<mint> ndp(630,0);rep(k,630){ndp[k] += dp[k];if(k!=629)ndp[k+1] += dp[k];}swap(dp,ndp);}vector<mint> tdp = dp;rep(j,305){rep(k,630){cal[i][j][k] += dp[k];}vector<mint> ndp(630,0);rep(k,630){ndp[k] += dp[k];if(k!=0)ndp[k-1] += dp[k];}swap(dp,ndp);}dp = tdp;}int N,M;cin>>N>>M;vector<int> a(N),b(N);rep(i,N)cin>>a[i];rep(i,N)cin>>b[i];queue<pair<vector<mint>,int>> Q;rep(i,M){vector<mint> t(630,1);rep(j,630){for(int k=i;k<N;k+=M){t[j] *= cal[a[k]][b[k]][j];}}Q.emplace(t,c);}//cout<<"A"<<endl;while(Q.size()>1){auto x = Q.front();Q.pop();auto y = Q.front();Q.pop();Q.emplace(convolution(x.first,y.first),x.second+y.second);}cout<<Q.front().first[Q.front().second].val()<<endl;return 0;}