08年是讓我不淡定的一年。
這題我是完全沒思路。
正解是容斥原理。
1:預處理完全揹包,也就每種硬幣可以使用無限次組成面值 s 的方案數。
2:ans = 總方案 - ( c1 超 + c2 超 + c3 超 + c4 超 ) + ( c1,c2 超 + c2,c3 超 +c3,c4 超 + c1,c4超) - ......
實現起來有用位運算實現的,但是 byvoid 的遞迴實現比較好理解也更清晰一點。
// q.c// ***
#include#include#include#include#includeusing namespace std;
const int m=100000;
int c[5],d[5],tot,s;
long long f[m+10],ans;
void dfs(int x,int k,int sum)
dfs(x+1,k+1,sum-(d[x]+1)*c[x]); // 第x種硬幣超過限定額度.
dfs(x+1,k,sum);
}int main()
return 0;
}
HAOI 2008 硬幣購物
硬幣購物一共有 4 44 種硬幣。面值分別為 c1,c2,c 3,c4 c 1,c 2,c 3,c 4 c1 c2 c3 c4 某人去商店買東西,去了 tot totto t 次。每次帶 dij d di j 枚 cij c ci j 硬幣,買 s is i si 的價值的東西。請問每次有多少種付款...
HAOI2008 硬幣購物
時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 硬幣購物一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚ci硬幣,買si的價值的東西。請問每次有多少種付款方...
HAOI2008 硬幣購物
硬幣購物一共有 4 種硬幣。面值分別為 c 1,c 2,c 3,c 4 某人去商店買東西,去了 tot 次。每次帶 d i 枚 c i 硬幣,買 s i 的價值的東西。請問每次有多少種付款方法。好的,比較欣喜的一點是我們如果不考慮什麼帶了 k i 個,那麼其實就是乙個完全揹包是不是 但是他有乙個特別...