P1450 HAOI2008 硬幣購物

2022-04-29 23:51:13 字數 618 閱讀 8562

p1450 [haoi2008]硬幣購物

完全揹包+容斥

真是秒呀

方案數統計。如果無法直接計算出來,可以嘗試使用容斥原理進行拼湊。

你看,這個題中的對答案有影響的元素只有4個。

\(2^n\)次方的容斥完全可以做

我們可以使用所有的方案數,減去乙個硬幣不合法的方案數,加上兩個硬幣不合法的方案數,然後如此搞一搞

就可以了。

#include#include#include#includeconst int maxn=101000;

long long f[maxn+1000];

long long d[5],d[5];

int main()

*/ for(int i=0;i<=3;i++)

for(int j=d[i];j<=maxn;j++)

f[j]+=f[j-d[i]];//不考慮限制

for(int i=1;i<=tot;i++)

if(c<0) continue;

ans=ans+(t ? -1 : 1)*f[c];//進行容斥

}printf("%lld\n",ans);

}}

P1450 HAOI2008 硬幣購物

完全揹包和容斥原理的結合 可以看乙個區間相減的 其實是錯的,但是好理解 求 2,3 2,3 2,3 轉換為求 2,3,2,3 begin 2,infty 3,infty rightarrow 2,3 end 2,3 2,3 f s f s f s 表示買s ss的東西有多少種方案 在每種錢都有無限的...

題解 P1450 HAOI2008 硬幣購物

本題想到多重揹包還是很容易的 什麼?不知道多重揹包?但是,另一題解已經將時間安排計算地明明白白 所以想到完全揹包 多重揹包跟01揹包似乎區別不大 可以先預處理完全揹包的情況,然後瞎搞容斥原理 不懂容斥原理的看這裡 傳送門 想到完全揹包和容斥原理後,剩下的就只是打表一些簡單的實現了 上 include...

洛谷P1450 HAOI2008 硬幣購物

硬幣購物一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚ci硬幣,買si的價值的東西。請問每次有多少種付款方法。輸入格式 第一行 c1,c2,c3,c4,tot 下面tot行 d1,d2,d3,d4,s 輸出格式 每次的方法數 輸入樣例 1 1 2 5 ...