c824的簡單版
思考:這題無法像正常背包一樣處理,因為是2i,i<=109,所有資料類型都處理不了;但可以發現:大小都是2n,n=0,1,2,⋯⋯可以從這裡下手。
解題重點:可以將2個小的合併成1個大的,因為2i + 2i = 2i+1 可以用這個方法去dp。
解題步驟C++
1.宣告vector<long long> w[m+1]
2.w[a].push_back(b)
3.sort(w[i].begin(),w[i],end(),greater<>()) //讓大的排到前面
4.w[i+1].push_back(w[i][j]+w[i][j+1]) //核心步驟
5.cout << w[m][最大的方法]
然後如果有人知道c824怎麼AC拜託教一下我,感恩