好题
作者:互联网
这里是一些对我有点启发的题。
LOJ576 签到游戏
这个问区间和求出每个数的东西看起来就很奇怪,于是我们做转化:
- 问区间,相当于知道某些前缀和的差
- 如果我们问区间 \((l, r)\),那么我们可以让边表示已知关系,连一条 \(l - 1 \leftrightarrow r\) 的边,边权为问区间 \((l, r)\) 的代价。
- 最后你想知道肯定是要 \(0\) 到 \(n\) 全连通对吧,那就是求这个图的最小生成树。
注意,这是一个通用的模型,不仅是前缀和,任何每次询问得到 \(\bigoplus_{i=l}^{r}a_i\),问保证知道所有 \(a\) 的最小代价,都可以使用这个模型 \(\mathcal O(n^2)\) 算。(前提:\(\bigoplus\) 有逆运算。)
然后你考虑这个题的代价是 \(\gcd\),它向两边递减,所以这棵树的构造应该形如 \((1, i), (j, n), (1, n)\),而且应该是靠左的一些点选 \(n\) 连,而靠右的一些点选 \(1\) 连,分界点 \(i\) 即最右的 \(i\) 满足 \(\gcd_{1}^{i} \geq \gcd_{i+1}^{n}\)。
考虑多组询问带修,我们就用线段树维护 \(\gcd\),每次单点修改,然后线段树上二分出 \(i\) 即可。
BZOJ1001 狼抓兔子
首先有个很 naive 的 Dinic,但是点数有 \(10^6\),根本跑不过。
观察这个流量网络,可以发现它是平面图,所以我们直接平面图转对偶图然后最短路。
这个平面图转对偶图的 trick 完全没见过所以放上来了。
标签:点选,gcd,平面图,好题,bigoplus,区间,代价 来源: https://www.cnblogs.com/reliauk/p/tricks.html