决策单调性优化 DP

决策单调性优化 DP

il void solve(int l, int r) {
	if (l > r) return;
	if (l == r) {
		f[l] = f[p[l]] + W(p[l], l);
		return;
	}
	int mid = (l + r) >> 1;
	for (int i = p[l - 1]; i <= p[r]; i++) {
		int c = f[i] + W(i, mid);
		if (c < f[mid]) f[mid] = c, p[mid] = i;
	}
	solve(l, mid);
	for (int i = l; i <= mid; i++) {
		int c = f[i] + W(i, r);
		if (c < f[r]) f[r] = c, p[r] = i;
	}
	solve(mid + 1, r);
}
posted @ 2026-08-10 19:58  Zctf1088  阅读(18)  评论(0)    收藏  举报