魔法阵题解

           魔法阵题解

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

Xa<Xb<Xc<Xd,Xb-Xa=2(Xd-Xc),Xb-Xa<(Xc-Xb)/3

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

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

                                                                                    

   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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值