随笔分类 -  DP --- 普通dp

摘要:B 不会做,自闭了 /kk 考虑走了一个人之后更新他周围的人的最短路,只要能够更新就一直 bfs 更新。 虽然看上去像是 \(\mathcal O(n^4)\) 的,但是每次更新之后 \(\mathrm {dis}\) 至少减少 $1$,而 \(\sum \mathrm {dis}_{i, j} = 阅读全文
posted @ 2020-11-26 10:53 xgzc 阅读(211) 评论(2) 推荐(2)
摘要:题面 题解 枚举平均数 \(x\),只需求有多少个集合满足 \(\sum S_i = |S|x\) 即可。 移项,即 \(\sum (S_i - x) = 0\),将 $1, 2, \cdots, x - 1$ 分为一类,\(x + 1, \cdots, n\) 分为一类,分别背包出来判断即可。 设 阅读全文
posted @ 2020-10-04 17:12 xgzc 阅读(218) 评论(0) 推荐(0)
摘要:动态 dp 之友( 阅读全文
posted @ 2020-08-13 09:32 xgzc 阅读(475) 评论(4) 推荐(1)
摘要:线段树分治大法好( 阅读全文
posted @ 2020-04-23 20:31 xgzc 阅读(294) 评论(0) 推荐(2)
摘要:"题面" 题解 同步赛时看到$m \leq 2\times 10 ^ 5, q_i \leq 1000$的我灵光一闪,交了个$\mathrm{O}(mt)$的大暴力然后$\mathrm{AC}$此题 设$f[i][j]$表示当前在第$i$个站点,时刻为$j$的最小烦躁度,$F(x) = Ax^2 + 阅读全文
posted @ 2019-07-17 21:14 xgzc 阅读(376) 评论(1) 推荐(0)
摘要:题面 题解 很像最长不下降子序列对吧(废话) 设$up[i]$和$down[i]$分别表示$i$最大最小能取多少 注意到: $$ f[i] = max_j\left\{f[j]\right\} + 1 \\ a[j] \leq down[i],\; up[j] \leq a[i],\; j \leq 阅读全文
posted @ 2019-01-09 21:54 xgzc 阅读(199) 评论(0) 推荐(0)
摘要:题面 题解 众所周知,最长公共子序列的$dp$是$\text{O}(n^2)$, 但是每一个数字只重复$5$遍,那么我们暴力匹配$25n$个点对 那么我们就可以将其变成求最长上升子序列 用二分栈或者树状数组求解即可。 代码 阅读全文
posted @ 2019-01-09 21:19 xgzc 阅读(250) 评论(0) 推荐(0)
摘要:题面 HDU vjudge 题解 将权值排序,则分组一定是连续的 设$f[i]$表示前$i$头牛的最小代价,则($a[i]$为$i$的权值): $$ f[i] = f[j - 1] + sum[i] - sum[j - 1] - (i - j + 1) * a[j] $$ 套上斜率优化的板子即可。 阅读全文
posted @ 2019-01-04 15:38 xgzc 阅读(129) 评论(0) 推荐(0)
摘要:题面 题解 设$f[i]$表示将$[1,i]$修改为递增的最小代价, $g[i]$表示将$[i,n]$修改为递减的最小代价。 $L[i]$表示将$[1,i]$修改为倒$\text V$的代价 $$ \therefore L[i]=min_{2<j<i}\left\{max(g[i]-g[j],f[j 阅读全文
posted @ 2019-01-04 14:36 xgzc 阅读(168) 评论(0) 推荐(0)
摘要:题面 题解 $\text{PKUWC2018}$就是$mod\;998244353$场。。。 首先可以发现,应该先打完强化牌后再打攻击牌,牌都尽量打大的。 所以,打$K−1$张强化,$1$ 张攻击是最优的。当然如果强化用完了就打攻击。 设$F(x,y)$表示抽出$x$张强化,前$y$张的乘积和 类似 阅读全文
posted @ 2018-12-31 22:57 xgzc 阅读(241) 评论(2) 推荐(0)