Wannafly挑戰賽20 D挑選隊友

2021-08-22 14:58:08 字數 1099 閱讀 9692

d

挑選隊友

進入討論

77/304

通過

輸入包括兩行

第一行包括三個數n, m, k,表示共有n位選手,m個群,需要有k名選手被選擇

第二行包括m個數,第i個數表示第i個群有si個選手

n ≤ 100000, m ≤ k ≤ n

輸出包括一行

第一行輸出方案數

由於輸出可能比較大,你只需要輸出在模998244353意義下的答案

示例1

複製

5 3 4

1 2 2

複製

4
思路:很明顯是乙個生成函式的題目。多項式相乘且有模數用nnt即可,注意用佇列模擬,不然會超時。或者直接用分治fft也行。

//nnt

#includeusing namespace std;

typedef long long ll;

const int maxn = 2e5 + 50;

const ll mod = 998244353;

inline ll qpow(ll a, ll b)

return sum;}

inline ll inv(ll a, ll _mod)

struct ntt }

void dft(vector&a , int flag)

}} if (flag == -1)

}void mul(vector& a,vector& b,int m)

} ntt;

vectorv[maxn];

ll fac[maxn], inv[maxn];

void init(int n)

inline ll c(int n, int m)

queueq;

int main()

while(q.size()>1)

printf("%lld\n",v[q.front()][k-m]);

return 0;

}

Wannafly挑戰賽6 D 鎖

時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 題目描述 106號房間共有n名居民,他們每人有乙個重要度。房間的門上可以裝若干把鎖。假設共有k把鎖,命名為1到k。每把鎖有一種對應的鑰匙,也用1到k表示。鑰匙可以複...

Wannafly挑戰賽16 D 打怪(DP)

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 有a種 b種屬性,和c種怪物。對於第k種怪物,給出 i和屬性j的搭配在乙個單位時間內對其造成的傷害h k,i,j。已知一開始使用 i,需要時間x i,使用屬性i,需...

Wannafly挑戰賽22 D 整數序列

給出乙個長度為n的整數序列a1,a2,an,進行m次操作,操作分為兩類。操作1 給出l,r,v,將al,al 1,ar分別加上v 操作2 給出l,r,詢問 第一行乙個整數n 接下來一行n個整數表示a1,a2,an 接下來一行乙個整數m 接下來m行,每行表示乙個操作,操作1表示為1 l r v,操作2...