题解
注意到原题是个整数规划,记所有操作的集合为 \(\mathcal{I}\),操作 \(i\) 的次数为 \(x_i\) 化成标准型如下:
\[\begin{align*}
&\min\sum_{i\in\mathcal{I}}x_i\\
s.t.\ & \sum_{i\ni j}x_i=a_j & (q_j)\\
& x_i\ge 0, x_i\in \mathbb{Z}
\end{align*}
\]
注意到我们有几乎充分的理由认定该线性规划的约束矩阵 \(A\) 是一个全单模矩阵,故我们去掉 \(x_i\in\mathbb{Z}\) 的限制,做对偶,有
\[\begin{align*}
&\max\sum_{i=1}^n a_iq_i\\
s.t.\ & \forall S\in\mathcal{I},\sum_{i\in S}q_i\le 1
\end{align*}
\]
由全单模性,最有整数解存在,考虑操作 \(\{i\}\),有 \(a_i\le 1\),易证 \(a_i\rightarrow max(a_i,-1)\) 的替换是合法的,故 \(a_i\in\{-1,0,1\}\),动态规划即可,复杂度 \(O(n)\)。
题解
记前缀和为 \(b_{0...n}\) 即要求
\[\min k(b_n-b_0)+\sum\max(0,a_i-(b_{r_i}-b_{l_i-1}))\\
s.t.\ \forall i\in[0,n),b_{i+1}\ge b_i
\]
注意到原题的目标函数和约束都为差分形式,考虑最大费用循环流的对偶:
\[\min\sum cap_e\max(0, cost_e-p_u+p_v)\\
\]
建图:
- \(\text{goal}\leftarrow k(b_n-b_0)\):\(0\xrightarrow[cost=0]{cap=k} n\)
- \(\text{goal}\leftarrow max(0,a_i-(b_{r_i}-b_{l_i-1}))\):\(r\xrightarrow[cost=a_i]{cap=1}l-1\)
- \(\text{constrait}:b_{i+1}\ge b_i\):\(i+1\xrightarrow[cost=0]{cap=+\infin}i\)
观察图易知答案等价于选择 \(k\) 个互不相交的集合,集合内的区间互不相交,最大化权值和。
可以直接贪心算法,又或者去掉 \(0\xrightarrow[cost=0]{cap=k} n\),跑最大费用最大流,第一次增广由于是 DAG,按照拓扑序计算最短路,这之后使用 dijkstra algorithm。复杂度 \(O(km\log m)\)。
题解
很容易利用差分约束将最短路写成线性规划形式:
\[\begin{gathered}
\min d_t-d_s\\
s.t.\ d_v\le d_u+w_{uv}\\
d\ge 0
\end{gathered}
\]
则本题的线性规划形式为
\[\begin{gathered}
p^*=\min d_t-d_s\\
s.t.\ \ d_v-d_u-x_{uv}\le w_{uv} & (\alpha_{uv})\\
\sum x_{uv}\le x & (\beta)\\
d,x\ge 0
\end{gathered}
\]
对偶为
\[\begin{gathered}
d^*=\max x\beta+\sum w_{uv}\alpha_{uv}\\
s.t.\ \ \sum \alpha_{iu}-\sum\alpha_{ui}\ge0\ \ (i\notin \{s,t\})\\
\sum \alpha_{is}-\sum\alpha_{si}\ge-1\\
\sum \alpha_{it}-\sum\alpha_{ti}\ge1\\
-\alpha_{uv}+\beta\ge 0\\
\alpha,\beta\ge0
\end{gathered}
\]
注意到可以构造 \(p^*\) 的一个最优解 \(d^*\) 满足 \(\forall i,d^*_i\ne 0\),由互补松弛定理有对任意 \(d^*\) 的最优解 \((\alpha,\beta)^*\),都有不等式一二三是紧的,则有
\[\begin{gathered}
d^*=\max_{\alpha,\beta} x\beta+\sum w_{uv}\alpha_{uv}\\
s.t.\ \ \sum \alpha_{iu}-\sum\alpha_{ui}=0\ \ (i\notin \{s,t\})\\
\sum \alpha_{is}-\sum\alpha_{si}=-1\\
\sum \alpha_{it}-\sum\alpha_{ti}=1\\
\beta\ge \alpha_{uv}\\
\alpha,\beta\ge0
\end{gathered}
\]
考虑先枚举 \(\beta\),记 \(\gamma=\frac{\alpha}{\beta}\),则有
\[\begin{gathered}
f(\beta)=\max_\gamma \beta(x+\sum w_{uv}\gamma_{uv})\\
s.t.\ \ \sum\gamma_{iu}-\sum\gamma_{ui}=0\ \ (i\notin\{s,t\})\\
\sum\gamma_{is}-\sum\gamma_{si}=-\frac{1}{\beta}\\
\sum \gamma_{it}-\sum\gamma_{ti}=\frac{1}{\beta}\\
0\le \gamma_{uv}\le 1
\end{gathered}
\]
记 \(\theta=\frac{1}{\beta}\),则有 \(\displaystyle{\sum w_{uv}\gamma_{uv}}\) 为流量刚好为 \(\theta\) 时的最小费用流的费用大小,即要求
\[\max_\theta g(\theta)=\frac{x+[\text{mincost of flow}\ \theta]}{\theta}
\]
注意到 \(\theta\) 是实数,但是如果取 \(\theta=v+\epsilon(\epsilon\in[0,1])\),则有在某个区间 \([v_0,v_0+1]\) 中,记当前未走满的增广路费用为 \(f\),已走满的增广路费用之和为 \(t\),则有
\[\begin{align*}
\frac{\mathrm{d}g}{\mathrm d \epsilon}=(\frac{x+t+\epsilon f}{v_0+\epsilon})'=(\frac{c_0+\epsilon f}{v_0+\epsilon})'=\frac{v_0f-c_0}{(v_0+\epsilon)^2}
\end{align*}
\]
符号与 \(\epsilon\) 无关,在区间内单调,故最值总在整数处取到,预处理出流量为整数的费用,查询时取最好的即可。