11.9做题笔记

CF1575M Managing Telephone Poles

对于一个点造成贡献的,分成左上左下右上右下来讨论,可以只交换一下位置用一个函数求解。

\[S_{x,y}=\min\limits_{k}\{(y-k)^2+(last_k-x)^2\} \]

\[=\min\limits_{k}\{k^2-2kj+j^2+(last_k-x)^2\} \]

则:

\[k^2+(last_k-x)^2=2jk+S_{i,j}-j^2 \]

\(\begin{Bmatrix} y=k^2+(last_k-i)^2 \\ k=2j \\ x=k \\ b=S_{i,j}-j^2 \end{Bmatrix}\)
于是要维护一个斜率递增截距最小的单调队列即可

CF338E Optimize!

先将\(a,b\)数组离散化之后利用线段树区间修改查询是否全局最小值大于等于0,如果满足累加答案即可。

CF1575B Building an Amusement Park

转化一下题意,有一个以原点为圆心,\(r\) 为半径的圆,求最小的 \(r\) 满足使得圆周上的某个点,同时被包括在至少 \(k\) 个以某个特殊点为圆心,半径为 \(r\) 的圆内。

显然当比较小的半径满足条件时,大的半径也会满足条件,所以可以考虑二分答案。

那么现在问题就在如何检查答案合法性了。

当原点和另一个点的距离大于 \(2r\) 时,两个圆显然没有交点,没有贡献。

当这个点与原点重复时相当于对于圆上的每一个点都有一的贡献。

否则,这个点和原点的距离在 \(0\)\(2r\) 之间,形成的两个圆一定有两个交点,且这两个交点与原点连线的夹角在一个平角之内,被包含在这个角之内的圆上的点都有一的贡献。

于是对于第一种情况直接跳过,对于第二种情况开一个计数器,对于第三种情况,求出两个交点的角度在线段树上区间修改即可。下标用浮点数类型可以使用动态开点。

Paint

区间dp,设\(f_{i,j}\)表示将\([i,j]\)变为同一种颜色最少步数,转移可以从\(f_{i+1,j}\)\(f_{i,j-1}\)过来或者枚举当前相同颜色段\(\min\limits_{k}^{col[k]=col[j]}\{f_{i,k}+f_{k+1,j}\}\)即可。

CF258D Little Elephant and Broken Sorting

首先如果什么都不交换则\(f_{i,j}=[a[i]>a[j]]\)
如果交换了\(x,y\)\(f_{x,y}=f_{y,x}=\frac{1}{2}\)
对于其他的则\(f_{i,x}=f_{i,y}=\frac{1}{2}f{i,x}+f_{i,y}\)
答案就是\(\sum\limits_{i=1}^n\sum\limits_{j=i}^nf_{i,j}\)

城市

枚举断掉哪一条边,答案就是剩下两个联通块的直径或者两个联通块中各一个点,其他点到它的最大值的最小值这三个的最大值的最小值。

选数

\(L,H\)都除以\(k\),于是问题就转化成了在\([L,H]\)中选\(n\)个数使得各数最大公约数为\(1\)的方案数。
\(f_i\)表示选取数的公约数中有\(i\),且选取的数不全相等的方案数,于是最大公约数就是\(i-\sum\limits_{i|j}^{j<=H-L+1}f_j\)容斥即可。最后答案就是\(f_1\),如果可以都选一就再加上一。

线段树

\(n^4\)暴力思路就是设\(f_{v,i,l,r}\)表示第i轮,

\[[a[l-1]>v][a[r+1]>v]\prod\limits_{j=l}^{r}[a[j]<=v]=1 \]

的方案数,转移就是

\[f_{v,i,l,r}=f_{v,i-1,l,r}g_{l,r}+\sum\limits_{j<l}f_{v,i-1,j,r}(j-1)+\sum\limits_{j>r}f_{v,i-1,l,j}(n-j) \]

其中\(g_{l,r}\)表示对\(l,r\)数无影响的操作数

\[g_{l,r}=C_l^2+C_{n-r+1}^2+C_{r-l+2}^2 \]

那么答案就是:

\[ans_i=\sum_vv(h_{i,v}-h_{i,v-1}) \]

其中\(h_{i,j}\)表示\(i\)点的值不大于\(j\)的方案数

\[h_{i,j}=\sum\limits_{v<=j}\sum\limits_{l<=i}\sum\limits_{r>=i}f_{v,q,l,r} \]

考虑将复杂度优化到\(n^3\),设\(dp_{i,l,r}=\sum_vf_{v,i,l,r}\)
转移式子是相同的但是初值不同。有:

\[dp_{0,l,r}=[a_{l-1}>\max\limits_{j=l}^r\{a_j\}][a_{r+1}>\max\limits_{j=l}^r\{a_j\}]\max\limits_{j=l}^r\{a_j\}-min{a_{i-1},a_{j+1}} \]

特别的,

\[dp_{0,1,n}=\max\limits_{j=1}^n\{a_j\} \]

再用前缀和优化一下即可。

posted @ 2021-11-09 21:19  letitdown  阅读(65)  评论(0编辑  收藏  举报