vijos搭建雙塔(dp)

2021-07-12 03:58:16 字數 619 閱讀 9973

資料弱,樸素的演算法竟然過了,後來bitset位運算的01揹包優化加上後快了7倍//順便還練習了一下對拍

f【i】【j】=true,表示塔1高為i,塔2高為j,的情況存在

方程

if (dp[j][l])

樸素:

#include#includeusing namespace std;

int a[105],n;

bool dp[5000][5000];

int main()

} int ans;

for(ans=sum;ans>0;ans--)if (dp[ans][ans]) break;

if (ans)printf("%d",ans);else printf("impossible");

return 0;

}

bitset優化的

#include#include#include#include#includeusing namespace std;

int w[105],n,h[105],sum=0;

int main()

vijos 1037 搭建雙塔 DP

這題是小貓給我講的 題目 mr.f有n塊水晶,每塊水晶有乙個高度,他想用這n塊水晶搭建兩座有同樣高度的塔,使他們成為一座雙塔,mr.f可以從這n塊水晶中任取m 1 m n 塊來搭建。但是他不知道能否使兩座塔有同樣的高度,也不知道如果能搭建成一座雙塔,這座雙塔的最大高度是多少。所以他來請你幫忙。給定水...

搭建雙塔(Vijos 1037)

2001年9月11日,一場突發的災難將紐約世界 中心大廈夷為平地,mr.f曾親眼目睹了這次災難。為了紀念 9?11 事件,mr.f決定自己用水晶來搭建一座雙塔。mr.f有n塊水晶,每塊水晶有乙個高度,他想用這n塊水晶搭建兩座有同樣高度的塔,使他們成為一座雙塔,mr.f可以從這n塊水晶中任取m 1 m...

vijos1037 搭建雙塔

題目 限制和答案,到底哪乙個應該是陣列下標 設f i j 為取到第i個水晶,高度差為j時的較高塔的最高高度 那答案的更新,分方和不放討論 一 不放,dp i j dp i 1 j 二 放 放的話,對答案影響有三種情況 1 放在較高塔上,dp i j dp i j h i h i 高度差增加h i 高...