zoukankan      html  css  js  c++  java
  • 【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)

  • 相关阅读:
    eclipse 智能提示
    android 入门 004 (同一个方法,点击实现不同的效果)
    android 入门 003 (点击事件)
    android 入门 002 (拨打电话,发送短信)
    android 入门 001 (界面布局)
    Eclipse智能提示及快捷键
    转 Android学习笔记: 学习过程中碰到的一些问题及解决方法
    flash视频器播放器代码
    asp.net MVC webservice 报次错解决方法
    快递单号规则
  • 原文地址:https://www.cnblogs.com/Sai0511/p/10360601.html
Copyright © 2011-2022 走看看