2020.01.16【NOIP提高组】模拟A 组总结

估分:20+40+100=160

实际得分:10+0+0=10

T1:3852. 【NOIP2014八校联考第2场第2试9.28】单词接龙

100 分做法:二分+SPFA 判环 单词看成边,两个字母组合看成点。这样,庞大的输入数据就变成了一个点 数至多为 262的有向图。 接下来就是在有向图上找平均边长最大的环。可以用二分答案。二分一个 len,将所有边权都减去 len,若图中存在正权环,那么 len 可以增大,否则就减 小。直到找到答案。 判断是否存在环,用 SPFA,检查某个点入队次数,超过总点数即存在环。

考试时想到了SPFA判正环,但是没有想到将字母组合看成点,如果直接连边则边数就会很多。

T2:3853. 【NOIP2014八校联考第2场第2试9.28】帮助Bsny

00 分做法:状压 DP N 高度差很小,可以对这个宽度只有 8 的高度差状态压缩进行 DP。每本书 抽出来后,要么放在和它等高的书旁边,要不放在一边作为一个新的高度。 状态为:f[i][j][k][mask],表示前 i 本书已经抽出了 j 本,前 i 本中没被抽出的 书里最后一本书的高度是 k,mask 是一个 0~2^8-1 的二进制,表示前 i 本中没被 抽出的书里高度的存在情况。整体表示前 i 本书中没被抽出的书组成的序列的最 小混乱度。 

在书架上,有一堆书,其中连续且高度相等的为一段书,现在可以在书架上抽k本书,求最少可以整理成多少段书。 首先,本题最最重要的是题目中“书的高度>=25且<=32”,正因如此,所以我们可以发现总共只有8个状态,状压DP的想法油然而生。

状态为四维:f[i,j,k,last],解释如下: i:表示前i本书,目前DP到了第i本书。 j:表示进行了j次抽书操作。 k:表示前i本书中书的种类状压。 last:表示第i-1本书种类为last。 PS:由于空间问题,一定记得开滚动,或者用byte类型。

没有理解题意。题目要求抽出来后还有放回去。

T3:3854. 【NOIP2014八校联考第2场第2试9.28】分组

扫描二维码关注公众号,回复: 8701092 查看本文章

100 分做法:离散化+树状数组+离线处理+线段树 首先对于每个人,我们可以预处理如果他是队长的话,最多可以有少人组队: 这里需要对 r 进行从小到大排序,排序完后,我们可以从小到大遍历每个人, 利用树状数组统计[ai-k, ai+k]的人数,即为第 i 个人作为队长最大组队人数 这里要对相同 r 的时候特殊处理一下 然后,对于一组询问 x,y, 我们可以计算出能包含 x,y 的组,队长的 a 和 r 的 限制条件,即 a 的范围为[max(x.a-k, y.a+k), min(x.a+k, y.a+k)], r 的范围为 r>=max(x.r, y.r) 我们可以在符合 a,r 范围的所有人中寻找最大值 但考虑到询问比较大,我们可以采取离线的方式处理询问: 用 rmin 表示满足询问 r 的最小值,即 max(x.r, y.r),对询问根据 rmin 从大到 小排序,接下来的处理就是求[max(x.a-k, y.a+k), min(x.a+k, y.a+k)]范围中最大值 是多少,这个可以用线段树来维护和求解 如果 max(x.a-k, y.a+k)> min(x.a+k, y.a+k)或者找不到符合 r 的人,那么答案为 -1 因此,总的复杂度为 O(nlogn)
 

考试时想出了大部分,但是没有注意到地位相同时要先把所有的加入,再求答案,其次,将地位排序后,年龄并不是递增的,因此要讨论大小。

总结:

要多思考是否有特殊情况,考虑全面。

多打对拍。

发布了199 篇原创文章 · 获赞 201 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/zsjzliziyang/article/details/104012157