首页 > TAG信息列表 > 5125

5125: [Lydsy1712月赛]小Q的书架 [决策单调性]

很显然的dp式子 \(dp_i = dp_j + calc(j + 1,i)\) 然后发现这个 \(calc(i-1,j+1) + calc(i,j) \geq calc(i-1,j) + calc(i,j+1)\) 满足四边形不等式,然后就可以决策单调性,区间逆序对搞个莫队就完了。 #include <bits/stdc++.h> using namespace std; template <int maxn> struct

BZOJ 5125: [Lydsy1712月赛]小Q的书架

  $f[i][k]$ 表示前 $i$ 个分成 $k$ 段,且最后一段以 $i$ 结尾的最小值 容易写出转移方程 $f[i][k] = \min \{f[j][k - 1] + calc(j+1,i)\}$ 因为具有决策单调性(打表 or 证明(不会)),就可以一种分治算法来优化 具体实现就是 $solve(l,r,L,R)$ 表示要求出 $(l,r)$ 之间的 dp 值,而决策点

BZOJ 5125 小Q的书架

1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 int c[50005],tr,tl,f[30][50005],a[50005],s,n,k; 7 void del(int x) 8 { 9 while (x<=n) 10 { 11 c[x

BZOJ 5125: [Lydsy1712月赛]小Q的书架

5125: [Lydsy1712月赛]小Q的书架 思路: 分治优化决策单调性dp 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/stdc++.h> using namespace std; #define y1 y11 #define fi first #define se second #define pi acos(-1.0) #define