【统计】NOIP2016普及组[魔法阵]题解

题目概述

(ps:我知道2017年来写NOIP2016的题解好像是蒟蒻干的事情,不过该写的还是要写的=_=|||)
给出m个物品和魔法值的最大值n,第i个物品魔法值为Xi(1<=Xi<=n),其中如果存在Xa<Xb<Xc<Xd,并且满足以下两个条件,则称这四个物品构成了一个魔法阵:
1.Xb-Xa=2(Xd-Xc)
2.Xb-Xa<(Xc-Xb)÷3
求每个物品作为魔法阵的a,b,c,d物品的次数。

解题报告

【解法一】
m^4枚举,限制枚举范围,减少枚举次数。
期望得分:75分
【解法二】
n^3枚举,枚举前3个,推出第4个,限制枚举范围,减少枚举次数。
期望得分:85分
【解法三】
先n^2枚举,提前预处理sum[i][j]表示>=i,差值为j的二元组有几个,然后n^2枚举前2个,用sum直接得到个数。限制枚举范围,减少枚举次数。但空间无法承受。
期望得分:95分
【解法四】(标准解法)
由于【解法三】空间无法承受,但时间复杂度良好,不禁让我们去想解法三的优化。如果sum没有后面一维,那么完全承受得住。题目中的两个条件让我们发现Xa,Xb和Xc,Xd是独立的,这两个唯一的联系就是差值(记j=Xd-Xc,这里不用Xb-Xa的原因是Xb-Xa必须是偶数,太麻烦),那么完全可以枚举差值,然后直接拆开Xa,Xb和Xc,Xd,分开来做,就可以减少sum后面差值的那一维!

示意图:(后面Xa,Xb,Xc,Xd简写为a,b,c,d;ha[i]表示i的个数;num[i][0~3]表示i作为a,b,c,d的答案个数)
这里写图片描述
(b为a+2*j,c至少为a+8*j+1,d至少为a+9*j+1)
1.处理1,2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值