P5664 Emiya家今天的飯 dp

2021-10-09 13:25:49 字數 1056 閱讀 9830

對於n

nn個方法,m

mm個材料,乙個方法配對乙個材料可以做an,

ma_

an,m

​道菜。選擇k

kk個配對要求

配對至少為k

>

1k>1

k>

1每個配對的方法不同

每個材料最多用⌊k2

⌋\lfloor\frac\rfloor

⌊2k​⌋次

求做菜方案數

考慮容斥減去多餘方案,也就是要求乙個材料用超過一半。列舉這個超過一半的材料,設fi,

jf_

fi,j

​表示選到第i

ii個方法,這個材料減去其他材料的使用次數為j

jj,那麼這個多餘方案的答案就是j

jj為正數的f

ff值。

時間複雜度o(n

2m

)o(n^2m)

o(n2m)

#include

#include

#include

#define ll long long

using

namespace std;

const ll n=

110,m=

2100

,xjq=

998244353

;ll n,m,a[n]

[m],f[n][2

*n],s[n]

,ans=1;

intmain()

ans=ans*

(s[i]+1

)%xjq;

}for

(ll k=

1;k<=m;k++

)for

(ll j=n+

1;j<=

2*n;j++

) ans=

(ans-f[n]

[j]+xjq)

%xjq;

}printf

("%lld"

,(ans-

1+xjq)

%xjq)

;}

P5664 Emiya 家今天的飯

miku 這個題很顯然的可以從部分分推到正解 64上去就是乙個四維dp,dp i j k z 表示在第1行的時候第一行選了j個,第2行選了k個,第3行選了z個的 情況下的方案數,轉移用手就能推。只是有個小細節 include include include include define int lo...

P5664 Emiya 家今天的飯

哭了qaq這題整了12345678天,在題解和sy的部落格幫助下完成了題目qaq 給出乙個n m的矩陣,總共選k個,不能不選,要求 1.每行只能選乙個 2.每列最多選 個求出合法方案數 抽象理解一下就是這麼個東西 直接求解莫得思路,然後正難則反,我們考慮總方案數 不合法方案數 考慮沒有任何限制,我們...

洛谷 P5664 Emiya 家今天的飯(DP)

觀察題目資料範圍,發現前64pts可以用類似狀壓的思想來做 m 3 前84pts可以在o n 3 m 的時間內完成。100pts需要在o n 2 m 的時間內做。總述 注意總的初始化,初始化要為1,因為後面有乘的操作,最後的時候再將那個多餘的1減去。64pts 設f i j k q 表示到第i行,第...