首页 > 其他分享 >Average

Average

时间:2024-10-04 18:36:21浏览次数:5  
标签:int res Average back 斜率 front sum

  • 二分答案转化为判定,这样我们就只关心最大的和是否大于0,而不关心除以区间长度的干扰了
  • 赛场上阴差阳错地写对了斜率优化,但是想不明白原理,几经周折查找资料,终于明白了:
  • 弹出队头决策的确会导致当前解未必最优,但一定不会干扰全局最优解;如果需要查找当前最优解,则需要二分下凸壳
  • 在DP的斜率优化中,是确定了斜率,自下而上用直线扫描,求最小截距的;本题则是确定了点,求最大斜率
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int a[100005];
long long sum[100005];
double ans;
deque<int>q;
double k(int j,int i)
{
	return 1.0*(sum[j]-sum[i])/(j-i);
}
void add(int id)
{
	while(q.size()>1)
	{
		int i=q.back();
		q.pop_back();
		int j=q.back();
		if(k(id,i)>k(i,j))
		{
			q.push_back(i);
			break;
		}
	}
	q.push_back(id);
}
void calc(int n,int x)
{
	double res=0;
	q.clear();
	if(x==1)
	{
		add(0);
	}
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		sum[i]=sum[i-1]+a[i];
		while(q.size()>1)
		{
			int j=q.front();
			q.pop_front();
			int l=q.front();
			if(k(i,j)>k(i,l))
			{
				q.push_front(j);
				break;
			}
		}
		if(!q.empty())
		{
			res=max(res,k(i,q.front()));
		}
		if(i-x+1>=0)
		{
			add(i-x+1);
		}
	}
	ans+=res;
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n,m,x,y;
	cin>>n>>m>>x>>y;
	calc(n,x);
	calc(m,y);
	cout<<fixed<<setprecision(10)<<ans<<endl;
	return 0;
}

标签:int,res,Average,back,斜率,front,sum
From: https://www.cnblogs.com/watersail/p/18447103

相关文章

  • LookupError: Resource averaged_perceptron_tagger not found.解决方案
      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学......
  • 时间序列分析论文翻译与笔记:The correct way to start an Exponential Moving Average
            在之前的笔记中,我们初步认识了指数移动平均(指数加权移动平均),本文将通过翻译一篇DavidOwen 在2017年的一篇博客,讨论如何确保移动平均数能够通过识别记录信息的时长,来适应新的信息。原文链接:点击这里(原文的代码为R,本文将补充py代码)目录如何正确地开始指数移......
  • [题解]AT_abc236_e [ABC236E] Average and Median
    思路直接将输出的答案分为两个分考虑。(1)考虑二分+DP。设当前二分出的平均数为\(x\),如果合法,那么有(其中\(p\)为选出数下标的集合):\[\frac{a_{p_1}+a_{p_2}+\dots+a_{p_k}}{k}\geqx\]即:\[\frac{(a_{p_1}-x)+(a_{p_2}-x)+\dots+(a_{p_......
  • CF81C Average Score 题解
    题目简述给定一个长度为$n$的序列,在其中取出$x$个数,构成一个数列$a$,剩下的$y$个数构成数列$b$。若第$i$个数在数列$a$中,$ans_i$等于$1$,否则等于$2$,请你给出一种方案使得两数列的平均数之和最大且$ans$的字典序最小.题目分析我们先考虑$x=y$的情况,在这种情......
  • sklearn之average_precision_score计算返回NaN
    问题描述使用sklearn计算AP时,当label全是负标签时会返回NaN,例如:>>>importnumpyasnp>>>fromsklearn.metricsimportaverage_precision_score>>>average_precision_score(np.array([0,0,0,0,0]),np.array([0.1,0.1,0.1,0.1,0.1]))xxx/lib/pytho......
  • ARC130F Replace by average
    首先我们能够发现,最终得到的答案\(b\)一定为下凸的。但是直接求凸壳肯定不行。具体地,答案的凸壳要满足对于每个\(x\),\(b_x\)都是整数,即每段斜率都是整数。可以发现找到能包住点集,最贴合的一个这样的\(b\)数组就是答案,因为题目给定的操作让我们每次都只能扩展最贴紧的点。那......
  • LeetCode 2265. Count Nodes Equal to Average of Subtree
    原题链接在这里:https://leetcode.com/problems/count-nodes-equal-to-average-of-subtree/description/题目:Giventhe root ofabinarytree,return thenumberofnodeswherethevalueofthenodeisequaltothe average ofthevaluesinits subtree.Note:Th......
  • 神经网络优化篇:详解指数加权平均的偏差修正(Bias correction in exponentially weighte
    指数加权平均的偏差修正\({{v}_{t}}=\beta{{v}_{t-1}}+(1-\beta){{\theta}_{t}}\)在上一个博客中,这个(红色)曲线对应\(\beta\)的值为0.9,这个(绿色)曲线对应的\(\beta\)=0.98,如果执行写在这里的公式,在\(\beta\)等于0.98的时候,得到的并不是绿色曲线,而是紫色曲线,可以注意到紫色曲线......
  • 神经网络优化篇:理解指数加权平均数(Understanding exponentially weighted averages)
    理解指数加权平均数回忆一下这个计算指数加权平均数的关键方程。\({{v}_{t}}=\beta{{v}_{t-1}}+(1-\beta){{\theta}_{t}}\)\(\beta=0.9\)的时候,得到的结果是红线,如果它更接近于1,比如0.98,结果就是绿线,如果\(\beta\)小一点,如果是0.5,结果就是黄线。进一步地分析,来理解如何计......
  • 无涯教程-JavaScript - AVERAGE函数
    描述AVERAGE函数返回参数的平均值(算术平均值)。语法AVERAGE(number1,[number2]...)争论Argument描述Required/OptionalNumber1Thefirstnumber,cellreference,orrangeforwhichyouwanttheaverage.RequiredNumber2,...Additionalnumbers,cellrefe......