魔法阵题解

           魔法阵题解

   事实上,题目很长,也给了我们很多有用的东西,归纳下来就是

Xa

得到这么多,发现,可供我们使用的方法还是很多的。

一百分的方法首先要看懂八十分的方法。(古鸣浩名言)

                                                                                    

   A 2i B   6i+k      C  i  D 

由上图可以看出,A,B之间是有联系的,C,D之间也是有联系的,联系在哪呢?就在i这个关键的东西,由此,可以把四重循环降为三重循环,枚举i,A或B,C或D,都没问题,开始要压缩,把读入的东西存在一个桶里,这个桶的作用可大了,我们给它命名为f数组。枚举时,答案怎么求呢?我们观察可以发现,排列组合的话,这个的答案等于其他三个的个数的乘积之和,即

Ans[i,1]=f[j]*f[k]*f[l]+ans[i,1]

其他以此类推,但是,最最最重要的一点,是这么做ans存的是i这个数的方案,所以,加之前要判断存在不存在。

 

100分

100分的方法要在80分的方法上加以优化,计算算A,B时要计算后缀和,算C,D时要计算前缀和。为什么呢?因为从图中看出,C,D是在后面可以有多个的,我们可以先将它们求出来,再加到答案里面,A,B在前面也有多个,然后求出来,是可以的。sum[j]:=sum[j+1]+f[j]*f[j+i];——C,D

h[j]:=h[j-1]+f[j]*f[j-2*i];——A,B

你可能感兴趣的:(魔法阵题解)