Noip2015pj求和

Posted sai0511

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Noip2015pj求和相关的知识,希望对你有一定的参考价值。

大佬们的题解都看不懂啊...果然还是太弱了呢。那么这里就给出一个自认为比较好理解的题解吧(qwq)


正文部分:

首先考虑部分分:
(10pts:O(n^3))枚举
(40pts:O(n^2))枚举:
移项得知:(2y=x+z),那么对于(x+z)为偶数的时候,一定有(y)存在,否则相反,于是复杂度就降了一维:
(100pts:O(n))
同样继续(40pts)做法:将(y)移项:
那么原式就成了:[x+z=2y]
于是我们就可以讨论(x)(z)的奇偶性:

奇+偶=奇
奇+奇=偶
偶+偶=偶
偶+奇=奇

发现没有:(x)(z)的奇偶性必须是相同的
那么我们不妨定义一个集合(i),它有(n)个元素,并且这个集合里的数都是同奇偶且颜色相同的。(为方便,之后英文(number)统一写成(num)
于是这个集合所造成的贡献就是:

((i_1+i_2)(num_{i1}+num_{i2})+(i_1+i_3)(num_{i1}+num_{i3})+...+(i_{n-1}+i_n)*(num_{i_{n-1}}*num_{i_n}))

好晕啊。。那我们不妨就单拿(i_1)来举例子,即只考虑与(i_1)有关的项:于是式子就变成了:

((i_1+i_2)(num_{i_1}+num{i_2})+..+(i_1+i_n)*(num_{i_1}+num_{i_n}))

似乎毫无头绪,那么尝试把与(i_1)有关的式子展开一下:

(i1*num_{i_2}+i1*num_{i1}...+i1*num_{in}+i1*num_{i1})

发现没有,似乎有些规律:
继续尝试,将式子整理一下:
(i1*(num_{i2}+...+num_{in})+(n-1)*i_1*num_{i1})
我们来解释一下为什么是(n-1)组,因为(i_1)(i_1)不能组合为一组,但是与集合中的其他元素都能组合,顾为(n-1)组。

当做到这一步时,恭喜你,你已经离成功很近了。

这时还差最后一步,很明显:((num_{i2}+...+num_{in}))这个东西是不确定的,比如当统计(i_2)时这个东西就变成了((num_{i1}+num_{i3}+...+num_{in})),但是我们要预处理出来的一定是一个可以计算的数,于是就要考虑有没有什么方法可以变形出一个等价的式子。
发现这个东西是不是跟(i_1+i_2+...+i_n)很像?没错,我们把这个东西加上(i_1*num_{i1}),在最后面再减掉(i_1*num_{i1}),于是原式就变成了这样:
(i1*(num_{i1}+num_{i2}+...+num_{in})+(n-1)*i_1*num_{i1}-{i_1}*{num_{i1}})

合并一下同类项:
原式=(i1*(num_{i1}+num_{i2}+...+num_{in})+(n-2)*i_1*num_{i1})

=(i_1*[num_{i1}+num_{i2}+...+num_{in}+(n-2)*num_{i_1}])

呼呼,终于归纳完了。
于是我们就可以求出一个关于(i_n)的公式:

(i_n*[num_{i1}+num_{i2}+...+num_{in}+(n-2)*num_{i_n}])

很明显(num_{i1}+num_{i2}+...+num_{in})是可以预处理出来的,于是这道题就做完了。。真毒瘤啊。应该已经很清楚了吧,那我就不放代码啦(qwq)

















以上是关于Noip2015pj求和的主要内容,如果未能解决你的问题,请参考以下文章

5131 求和(NOIP 2015)

求和(NOIP2015 普及组第三题)

NOIP2017 PJ全记录

NOIP2014pj子矩阵[搜索|DP]

NOIP2012pj文化之旅[floyd]

Noip2018pj对称二叉树