NOIP2016 简要题解

       如此水的数据,由于太弱没有AK,真是太菜了。

DAY1:

T1:这道题我只记得mogician和mengbier了,其余都忘光辣~~~。

T2:考场上写了lca后的O(NlogN)的做法,但还是A了。

       首先将一个人的跑步拆成两条链,考虑向上走的那一条链(另一条链同理),深度+时间的值是一定的。那么,考虑令这个人出发点x的深度为t,那么x~lca上的深度+观察时间的询问的答案都+1。差分后可以变成每个“”有(一个树上点上可能有若干“”挂在上面)一个特征和权值,然后每个点查询子树中特征和它一样的权值和。子树权值和可以用dfs序变为区间和。

       考场上我是把“点”和询问按照特征离线,然后用树状数组维护。那么实际上在询问中将点离散化之后就可以用前缀和维护了。这样就是O(N)的。

       另外O(N)的做法有两种,介绍一种简单的。

       在dfs中维护一个数组,表示每个特征的权值和。那么在dfs到一个点时,记下它询问的特征的那个权值;dfs完子树之后,将这个特征的权值-之前记录的值就是答案了。思想十分简单,实现也很容易。

T3:险些被卡常数。。这应该比之前纪念的D1T3思想难度好多了吧。至少引入了期望>.<。

        令dp[i][j][0/1]表示前i个,选j个,第i个选(1)还是不选(0)。然后直接dp即可。


DAY2:

T1:预处理答案。用递推式计算组合数并对k取模,值为0相当于被k整除。然后用二维前缀和来统计答案即可。

T2:sb本质体现无遗。首先其余的+q相当于当前的-q,然后注意到切开来的两条分别具有单调性,用3个队列维护即可。

T3:子集dp。险些爆零。

        注意到不管怎么样当前编号最小的都要被打掉,那么不妨先打它,然后有用的抛物线其实只有O(N)条。枚举另外一个是哪只求出抛物线即可。

        细节很坑爹,但是数据更水。


       总的来说今年的题目其实比往年的要好,没有什么大的码农题,基本上都是靠想法;但是两天的T3难度都不大,因此造成AK的人似乎比往年多了不少。另外数据真是水的不行。

by lych

2016.12.4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值