码迷,mamicode.com
首页 > 其他好文 > 详细

【Noip2015pj】求和

时间:2019-02-11 00:51:43      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:颜色   公式   相同   理解   number   display   展开   方法   line   

大佬们的题解都看不懂啊...果然还是太弱了呢。那么这里就给出一个自认为比较好理解的题解吧\(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】求和

标签:颜色   公式   相同   理解   number   display   展开   方法   line   

原文地址:https://www.cnblogs.com/Sai0511/p/10360601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!