BZOJ1150 WQS二分優化dp)

2021-09-26 08:27:17 字數 529 閱讀 2823

分析:我們用dp[i][j][0/1]表示第i座樓與第i-1座樓是否相連(0/1),前i座樓構成了前j組的最小距離花費。

然後可以寫出轉移方程

但顯然是n^2,由於j與dp具有單調性,j增加,dp也會增加,而且dp是乙個下凸函式,因為選的組的距離會越來越大。

考慮二分把列舉j的一維省略,使每分一組獲得乙個代價來控制選的組數量

ac code:

#includeusing namespace std;

typedef long long ll;

const int maxn=1e5+5;

pairdp[maxn][2];

ll s[maxn];

const ll inf=1e18;

int n;

void solve(ll mid)

else l=mid+1;

}printf("%lld\n",ans);

return 0;

}

學習筆記 wqs二分 dp凸優化

從乙個經典問題談起 有乙個長度為 n 的序列 a 要求找出恰好 k 個不相交的連續子串行,使得這 k 個序列的和最大 1 leq k leq n leq 10 5,10 9 leq a i leq 10 9 先假裝都會 1 leq k leq n leq 1000 的 dp 做法以及 k 1 的子問...

WQS二分 學習筆記

我的理解 不一定很對 大概就是某個東西越多總貢獻越大,要求剛好取n個時的最優解。可以把 dp 狀態裡記的取的個數這一維去掉,而設乙個 co st,取 k 個物品,總貢獻要多減去cost k,然後 dp cos t 越大,物品數取越少。二分 co st使得 dp 得到的答案剛好取了 n 個物品。設 g...

WQS二分學習筆記

wqs 二分聽起來是個很難的演算法,其實學起來也並不是那麼難。在某些題目中,會對於某個取得越多越優的物品,限定你最多選擇 k 個,問你能得到的最優答案。例如這道題目 cf739e gosha is hunting。這些題目一般都可以通過列舉選擇的物品個數並 o n dp 來做到 o nk 但如果隨著...