场外模拟 省选联考(A卷重考) 2020 游记

CSDN同步

前记

上次 (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) 队,但是很多暴力 / 正解需要调试的时间,考场真正能写出来还需要时间的磨练。不过加油!

今番良晤,豪兴不浅,他日江湖相逢,再当杯酒言欢。咱们就此别过。江湖路远,各位请一路珍重。

原文地址:https://www.cnblogs.com/bifanwen/p/13194659.html