提出 #75214412
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
#define int ll
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
mt19937_64 rng(std::chrono::system_clock::now().time_since_epoch().count());
const int MXN = 2000000;
vector<int>fact(MXN+10);
vector<int>inv(MXN+10);
const int mod = 998244353;
int modpow(int x, int y) {
return !y?1:((y % 2 ? x : 1) * modpow((x * x) % mod, y / 2)) % mod;
}
int choose(int x, int y){
if(y>x || x < 0 || y < 0)return 0;
return (fact[x]*inv[y]%mod)*inv[x-y]%mod;
}
int permute(int x, int y){
if(y>x || x < 0 || y < 0)return 0;
return (fact[x]*inv[x-y])%mod;
}
void precalc(){
fact[0] = 1; inv[0] = 1;
for(int i = 1; i<=MXN; i++){
fact[i] = fact[i-1]*i%mod;
}
inv[MXN] = modpow(fact[MXN],mod-2);
for(int i = MXN-1; i>0; i--){
inv[i] = inv[i+1]*(i+1)%mod;
}
}
int fix(int x){
x%=mod;
if(x<0)x+=mod;
return x;
}
int inverse(int x){
return modpow(x,mod-2);
}
signed main() {
cin.tie(0)->sync_with_stdio(0); precalc();
int t;
cin >> t;
while(t--){
int n,c;
cin >> n >> c;
vector<int>a(n+2);
for(int i = 1; i<=n; i++){
cin >> a[i];
}
a[n+1] = c+1;
sort(all(a));
vector<vector<vi>>dp(n+1,vector<vi>(n+1,vi(n+1)));
int ic = inverse(c);
if(a[1] != 1){
int p = (a[1] - 1) * ic % mod;
vector<int>pw(n+1); pw[0] = 1;
for(int i = 1; i<=n; i++){
pw[i] = pw[i-1] * p % mod;
}
for(int j = 0; j<=n; j++){
dp[0][0][n-j] = choose(n,j) * pw[j] % mod;
}
}
else{
dp[0][0][n] = 1;
}
for(int i = 1; i<=n; i++){
int p = fix(a[i+1] - a[i]) * ic % mod;
vector<int>pw(n+1);
pw[0] = 1;
for(int j = 1; j<=n; j++){
pw[j] = pw[j-1] * p % mod;
}
for(int j = 0; j<n; j++){
for(int k = 0; k<=n; k++){
for(int d = 0; d<=k; d++){
int pr = pw[d] * choose(k,d) % mod;
int nj = max(0ll,j+1 - d);
dp[i][nj][k-d] += dp[i-1][j][k] * pr; dp[i][nj][k-d] %= mod;
}
}
}
}
for(int r = n; r>=0; r--){
cout << dp[n][r][0] << ' ';
}
cout << '\n';
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | C - Greedy Customers 2 |
| ユーザ | kevinyang |
| 言語 | C++23 (GCC 15.2.0) |
| 得点 | 700 |
| コード長 | 2701 Byte |
| 結果 | AC |
| 実行時間 | 262 ms |
| メモリ | 43304 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 700 / 700 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_00.txt |
| All | 00_sample_00.txt, 01_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 01_handmade_03.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 02_random_07.txt, 02_random_08.txt, 02_random_09.txt, 02_random_10.txt, 02_random_11.txt, 02_random_12.txt, 02_random_13.txt, 02_random_14.txt, 02_random_15.txt, 02_random_16.txt, 02_random_17.txt, 02_random_18.txt, 02_random_19.txt, 02_random_20.txt, 02_random_21.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_00.txt | AC | 31 ms | 34760 KiB |
| 01_handmade_00.txt | AC | 260 ms | 43200 KiB |
| 01_handmade_01.txt | AC | 260 ms | 43168 KiB |
| 01_handmade_02.txt | AC | 260 ms | 43100 KiB |
| 01_handmade_03.txt | AC | 30 ms | 34852 KiB |
| 02_random_00.txt | AC | 30 ms | 34652 KiB |
| 02_random_01.txt | AC | 29 ms | 34720 KiB |
| 02_random_02.txt | AC | 260 ms | 43200 KiB |
| 02_random_03.txt | AC | 261 ms | 43236 KiB |
| 02_random_04.txt | AC | 261 ms | 43100 KiB |
| 02_random_05.txt | AC | 260 ms | 43076 KiB |
| 02_random_06.txt | AC | 260 ms | 43128 KiB |
| 02_random_07.txt | AC | 260 ms | 43304 KiB |
| 02_random_08.txt | AC | 261 ms | 43100 KiB |
| 02_random_09.txt | AC | 262 ms | 43244 KiB |
| 02_random_10.txt | AC | 261 ms | 43192 KiB |
| 02_random_11.txt | AC | 260 ms | 43236 KiB |
| 02_random_12.txt | AC | 260 ms | 43076 KiB |
| 02_random_13.txt | AC | 261 ms | 43264 KiB |
| 02_random_14.txt | AC | 260 ms | 43300 KiB |
| 02_random_15.txt | AC | 259 ms | 43200 KiB |
| 02_random_16.txt | AC | 259 ms | 43236 KiB |
| 02_random_17.txt | AC | 260 ms | 43140 KiB |
| 02_random_18.txt | AC | 262 ms | 43200 KiB |
| 02_random_19.txt | AC | 261 ms | 43200 KiB |
| 02_random_20.txt | AC | 260 ms | 43200 KiB |
| 02_random_21.txt | AC | 259 ms | 43100 KiB |