question:題目詳情(
題目大意:有a0,a1,a2枚面值為1,2,3的硬幣,問能組成多少種面值
解題思路:只是一道找規律的題,可以考慮面值為1的數量如果為0,只有2,3時(都不為0):只有面值為2的只有一枚是為1+2*a3(加1是因為有個2,2*a3是因為每個3的倍數都可以加2),其餘請況都為(2*a2+3*a3)-2,為最大值減去2(乙個是『1』,另乙個是最大之前面乙個數,可以自己推一下),如果面值為『1』的數量為1時,『2』數量不為時,每加入乙個『2』可以換出乙個『1』再把『1』加進去長度加2,每個 『2 』都可以使長度加2,相對而言『3』可以使長度加3,『2』數量為0時,直接為2*a3+1,當a0>1時,乙個『2』加2,乙個『3』加3(詳情見**)
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int inf=0x3f3f3f3f;
int main()
else
if(a1==1)
else
//如果『2』不為0,用『2』換完了『1』以後,『3』換出『2』和『1』,跟『2』換『1』完全一樣使長度加3
}else
if(a1==0)
else}}
printf("%lld\n",ans);
return
0;}
體會:對於這種找規律的題,不能慌,慢慢找規律。 Coins 多重揹包
揹包問題之多重揹包練習 這裡給出崔添翼大牛的揹包九講 崔添翼的個人 這裡給出題目鏈結 d coins 多重揹包 即hdu2844 多重揹包最簡單的思路就是講每乙個物品轉換為01揹包,為了減少複雜度我們將每乙個n轉換為幾個2進製得數相加。最後用01揹包方程求解即可。includeconst int m...
Coins(多重揹包)
給出硬幣面額及每種硬幣的個數,求從1到m能湊出面額的個數。input 多組資料,每組資料前兩個數字為n,m。n表示硬幣種類數,m為最大面額,之後前n個數為每種硬幣的面額,後n個數為相應每種硬幣的個數。n 100,m 100000,面額 100000,每種個數 1000 output rtsample...
nanae是弱小灰 BUAA533
這倆天悲劇的緊,腿扯破點皮還感染了,不過考試結束了,趕緊來一發,依然sam,但這題標程和測試資料都有點問題,關鍵就是在於處理神牛id會出現某個神牛id是另一神牛id的 字首的情況,正確的處理方法是對神牛id建立trie,然後在trie上dfs,發現了乙個id後就return,這樣就保證了不會重複計數...