首页 > 其他分享 >CF578C题解

CF578C题解

时间:2022-08-17 19:33:26浏览次数:57  
标签:const 函数 题解 CF578C db max inline 单谷

看到题面的第一眼是这玩意儿关于 x 是单谷的,证明稍微想了一下:

设 \(f[k]\) 和 \(g[k]\) 是原序列中长度为 \(k\) 的子区间的最大子区间和最小子区间,给定 \(x\) 时答案就相当于:

\[\max_{i=1}^{n}\max(|f[k]-k\times x|,|g[k]-k\times x|) \]

这相当于若干个一次函数取绝对值后的最值。我们知道两个单谷函数取 \(\max\) 后仍然是单谷函数,斜率为负的一次函数取绝对值后也是单谷函数。

所以原问题的函数是若干个单谷函数取 \(\max\),也是单谷函数。

然后就可以愉快地三分了。自己使用的是微分,以及需要注意精度。

#include<cstdio>
typedef long double db;
const int M=2e5+5;
const db eps=1e-12;
int n,a[M];db b[M];
inline db fabs(const db&a){
	return a>0?a:-a;
}
inline db max(const db&a,const db&b){
	return a>b?a:b;
}
inline db min(const db&a,const db&b){
	return a>b?b:a;
}
inline db f(const db&x){
	db f(0),g(0),ans(0);
	for(int i=1;i<=n;++i)f=max(f,0)+a[i]-x,g=min(g,0)+a[i]-x,ans=max(ans,max(fabs(f),fabs(g)));
	return ans;
}
signed main(){
	scanf("%d",&n);
	for(int i=1;i<=n;++i)scanf("%d",a+i);
	db L(-10000),R(10000),mid;
	while(L+eps<R){
		mid=(L+R)/2;if(f(mid)<f(mid+eps))R=mid;else L=mid;
	}
	printf("%.10Lf",f(L));
}

标签:const,函数,题解,CF578C,db,max,inline,单谷
From: https://www.cnblogs.com/lmpp/p/16596513.html

相关文章

  • CF1719C Fighting Tournament 题解
    思路根据题意,很容易看出,每个人都完成一次比赛后,即完成\(n-1\)轮之后,力量值最大的人会留在第一的位置,且在第\(n-1\)轮完成后,除了力量值最大的人,其他人的胜场数都不会再......
  • CF1719A Chip Game 题解
    题目传送门。思路当其中一个人不能动的时候,这个人一定位于点\((n,m)\)上。令点\((n,m)\)为终点。当\(n\)和\(m\)都是奇数或当\(n\)和\(m\)都是偶数时,赢的人......
  • CF1719B Mathematical Circus 题解
    一道不错的构造题。思路先说一句废话,能被\(4\)整除的数在除以\(2\)之后得到的数还是一个偶数。我们可以根据\(k\)的奇偶性以及\(k\)除以\(2\)之后的奇偶性分......
  • BSOJ7020题解
    脑抽了。考场上应该做掉这题的。所以实际挂分从100pts变成了200pts/fn/fn/fn考虑用一个二元组来维护链,\((f,g)\)表示这个集合的所有链的点权和为\(f\),有\(g\)条链,目......
  • 针对“RuntimeError: each element in list of batch should be of equal size” 问题
    第一次运行代码出现了这个问题:这个问题的出现主要来源于DataLoader类中的collate.py文件造成的问题,由于每个batch里的长度不一致,因此导致出现了该问题。通过百度方法和......
  • 「AGC012F」Prefix Median 题解 (DP)
    题目简介给定一个长度为\(2n-1\)的序列\(a\),你可以随意排列\(a\)中的元素,请求出有多少种不同的序列\(b\),满足\(b\)的长度为\(n\)。\(b_i=\{a_1\ldotsa_{2......
  • 洛谷P1972HH的项链 题解
    P1972[SDOI2009]HH的项链题目描述HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含......
  • LeetCode 螺旋矩阵 II 算法题解 All In One
    LeetCode螺旋矩阵II算法题解AllInOnejs/ts生成螺旋矩阵螺旋矩阵原理图解动态赋值arr[i]//动态更新indexleti=0;while(left<=right&&t......
  • ARC094D题解
    设\(A<B\),\(C=\max(\sqrt{AB-1},A)\),答案为:\[C-1+\frac{AB-1}{C+1}\]如果\(A>B\)时显然可以互换,接下来称\(A\)所在的比赛为第一场比赛,\(B\)所在的比赛为第二场比赛......
  • 题解 [ZJOI2010]排列计数
    好题。%你赛考到了不会摆烂,后来发现原来有向下取整,题面没有。。。(就算有我也做不出来啦qAq首先我们会发现这个长得就是小根堆,答案就变成了小根堆的计数。首先最小的......