场外模拟 省选联考(A卷重考) 2020 游记
Posted bifanwen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了场外模拟 省选联考(A卷重考) 2020 游记相关的知识,希望对你有一定的参考价值。
前记
上次 (A) 卷 (155),(B) 卷 (360) ;一个退役,一个进队。
所以说很不爽,来把 (A) 卷的题再看一遍。
冰火战士
上次只看了 (10) 分的暴力,认真了才发现答案是 (2 imes min { ice,fire }),随便弄个数据结构二分维护就可以搞到 (mathcal{O}(n log^2 n)) 的好成绩,这样 (60).
(2 imes 10^6) 的话,这个复杂度要达到 (9 imes 10^8),少爷机不一定 (3s) 能跑完吧。
那 (60) 分就行吧。
组合数问题
想来想去 (40) 还是上不去,那就怎么地了。
魔法商店
黑啊,心里慌。
题意看完就觉得迷迷糊糊地,算法想不起来,数据结构也套不上去。
上次部分分没细看,这次要认真。
直接去部分分吧!
首先 (15 \%) 的 (n leq 10 ,m leq 4 ,1 leq v_i leq 5) 瞎爆搜呗!
当然我们可以考虑的是 搜索,把 ([0,10]) 的状态大力搜一遍,然后记忆化记录答案的优劣。这样时间复杂度应该是 (10^{10} imes 4) 的,但是人都知道不会跑满,稳了 (15) 分。
(n leq 50 , m leq 2 ,1 leq v_i leq 10) 就说明只有 (2) 个满足的要求,那样只要满足 最多 (4) 个数其中 (x space ext{xor} space y ot = 0) , (u space ext{xor} space v ot = 0) 即可,只需要修改 (4) 个数。
那不慌!大力枚举 ((10 imes 2)^4) 可以过掉的。这样就有了 (30) 分。
下面考虑 (n leq 50 , m leq 30 , 0 leq v_i leq 1).
此时 若干个数异或 ( ot = 0) 的条件就变成了若干个数中 (1) 的个数和 (0) 的个数差为奇数。这样我们可以考虑把两个条件的重复部分暴力修改,其余部分直接统计。这样可以有了 (50) 分。
(A = B) 说明只有一个合法条件,此时 (v_i) 值域较大,萎掉。
所以 (50) 分啦!
信号传递
( ext{Day1}) 有了 (150),很不慌。
既然 (30) 分暴力不满足,那就来考虑状压。用 (e) 来记录两两传递次数。(开 ( ext{vector}) 不慌啊)
只有 (2^m) 个状态,滚一个 (f_S) 来进行 ( ext{dp}),对 (x in S) 的 (x) 进行更新 (f).
粗略一算,哈,枚举是 (mathcal{O}(m)) 的,转移又要一重,那么就是 (mathcal{O}(2^m m^2)).
这东西只有 (60) 分,常数一点也卡不进去。
空间是 (mathcal{O}(2^m)) 没事,时间不行了,那这么地吧,(60) 就走了吧。
树
( ext{Day2}) 全是紫题,拿到 (210) 仍然很慌。
直接搞一个数据结构,那么要支持的是:
- 插入,合并
- 全局 (+1) 操作
- 全局异或和
( ext{Trie}) 可以解决第一个和第三个,但是全局 (+1) 显然 ( ext{Trie}) 搞不了。
那么一个二进制 (+1) 实际上是把 它最低位的 (0) 变成 (1),该位以后所有的 (1) 变成 (0),怎么维护呢?首先 ( ext{Trie}) 的树高是 (log) 的,暴力也可以,常数小一点的话可以直接从低到高的交换。
这样 (mathcal{O}(n log n)) 就过了?
对,没错!我切紫题了?jk/ jk/
作业题
至少 (310) 稳住了!
反演好累啊,直接 (30) 暴力带走吧。
总结
虽然口头 (340) 进了 (E) 队,但是很多暴力 / 正解需要调试的时间,考场真正能写出来还需要时间的磨练。不过加油!
今番良晤,豪兴不浅,他日江湖相逢,再当杯酒言欢。咱们就此别过。江湖路远,各位请一路珍重。
以上是关于场外模拟 省选联考(A卷重考) 2020 游记的主要内容,如果未能解决你的问题,请参考以下文章
luoguP6623 [省选联考 2020 A 卷] 树(trie树)