#55093: AI無法給正確答案


Bluepoli (Bluepoli)


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拜託教一下我,感恩