牛客网NOIP赛前集训营-提高组(第二场)

一套好题啊...花了二十分钟想前两题,第三题想了很久还是只会\(70\)分,于是就丧失信仰不打了。而且赛后还发现自己第二题的思路是有点问题的,二三题比赛通过的好像都是个位数...但是题目还是很好的,所以就来记录一下吧。

problem A 方差

这是一道水题,不过为了保持完整性也放在这儿吧。题目就是给你\(n\)个数,然后计算每一个数去掉以后的方差\(*(n-1)^2\)\(n \leq 10^5\),值域是\(10^4\)

设有一个长度为\(m\)的数组\(a\),那么其方差就是:

\[\sigma^2=\frac{\sum_{i=1}^m (a_i-\overline a)^2}{m}\]

其中\(\overline a\)表示数组\(a\)的平均值。把方差乘以\(m^2\)并把平方拆开,得到:

\[m^2*\sigma^2=m*\Big(\sum_{i=1}^m a_i^2 - 2*a_i*{\overline a} + {\overline a}^2\Big)\]

再把\(\sum\)里的每一项拆开,得到:

\[m^2*\sigma^2=m*\Big(\sum_{i=1}^m a_i^2\Big)-2*m*{\overline a}*\Big(\sum_{i=1}^m a_i\Big)+m^2*{\overline a}^2\]

\({\overline a}=\frac{\sum_{i=1}^m a_i}{m}\)代入,得到:

\[m^2*\sigma^2=m*\Big(\sum_{i=1}^m a_i^2 \Big) -\Big( \sum_{i=1}^m a_i \Big)^2\]

于是只要计算每个数的和以及平方和就可以算方差,具体怎么做就很显然了。

problem B 分糖果

这是一道看似简单实则细节众多的题。题意是有\(n\)个小朋友围成一圈,第\(i\)个人要得到\(x\)个糖果,\(x \in [1,a_i] \cap \mathbb{N}\),并且要求相邻的两个小朋友糖果数不同,求方案数模\(10^9+7\)\(n\leq 10^6\)\(a_i\leq 10^9\)

先坑着。

猜你喜欢

转载自www.cnblogs.com/Mr-Spade/p/9656201.html