11.9做题笔记
CF1575M Managing Telephone Poles
对于一个点造成贡献的,分成左上左下右上右下来讨论,可以只交换一下位置用一个函数求解。
则:
\(\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轮,
的方案数,转移就是
其中\(g_{l,r}\)表示对\(l,r\)数无影响的操作数
那么答案就是:
其中\(h_{i,j}\)表示\(i\)点的值不大于\(j\)的方案数
考虑将复杂度优化到\(n^3\),设\(dp_{i,l,r}=\sum_vf_{v,i,l,r}\)
转移式子是相同的但是初值不同。有:
特别的,
再用前缀和优化一下即可。