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

博客园同步

前记

上次 A A A 155 155 155 B B B 360 360 360 ;一个退役,一个进队。

所以说很不爽,来把 A A A 卷的题再看一遍。

冰火战士

上次只看了 10 10 10 分的暴力,认真了才发现答案是 2 × min ⁡ { i c e , f i r e } 2 \times \min \{ ice,fire \} 2×min{ice,fire},随便弄个数据结构二分维护就可以搞到 O ( n log ⁡ 2 n ) \mathcal{O}(n \log^2 n) O(nlog2n) 的好成绩,这样 60 60 60.

2 × 1 0 6 2 \times 10^6 2×106 的话,这个复杂度要达到 9 × 1 0 8 9 \times 10^8 9×108,少爷机不一定 3 s 3s 3s 能跑完吧。

60 60 60 分就行吧。

组合数问题

想来想去 40 40 40 还是上不去,那就怎么地了。

魔法商店

黑啊,心里慌。

题意看完就觉得迷迷糊糊地,算法想不起来,数据结构也套不上去。

上次部分分没细看,这次要认真。

直接去部分分吧!

首先 15 % 15 \% 15% n ≤ 10 , m ≤ 4 , 1 ≤ v i ≤ 5 n \leq 10 ,m \leq 4 ,1 \leq v_i \leq 5 n10,m4,1vi5 瞎爆搜呗!

当然我们可以考虑的是 搜索,把 [ 0 , 10 ] [0,10] [0,10] 的状态大力搜一遍,然后记忆化记录答案的优劣。这样时间复杂度应该是 1 0 10 × 4 10^{10} \times 4 1010×4 的,但是人都知道不会跑满,稳了 15 15 15 分。

n ≤ 50 , m ≤ 2 , 1 ≤ v i ≤ 10 n \leq 50 , m \leq 2 ,1 \leq v_i \leq 10 n50,m2,1vi10 就说明只有 2 2 2 个满足的要求,那样只要满足 最多 4 4 4 个数其中 x  xor  y ≠ 0 x \space \text{xor} \space y \not = 0 x xor y=0 , u  xor  v ≠ 0 u \space \text{xor} \space v \not = 0 u xor v=0 即可,只需要修改 4 4 4 个数。

那不慌!大力枚举 ( 10 × 2 ) 4 (10 \times 2)^4 (10×2)4 可以过掉的。这样就有了 30 30 30 分。

下面考虑 n ≤ 50 , m ≤ 30 , 0 ≤ v i ≤ 1 n \leq 50 , m \leq 30 , 0 \leq v_i \leq 1 n50,m30,0vi1.

此时 若干个数异或 ≠ 0 \not = 0 =0 的条件就变成了若干个数中 1 1 1 的个数和 0 0 0 的个数差为奇数。这样我们可以考虑把两个条件的重复部分暴力修改,其余部分直接统计。这样可以有了 50 50 50 分。

A = B A = B A=B 说明只有一个合法条件,此时 v i v_i vi 值域较大,萎掉。

所以 50 50 50 分啦!

信号传递

Day1 \text{Day1} Day1 有了 150 150 150,很不慌。

既然 30 30 30 分暴力不满足,那就来考虑状压。用 e e e 来记录两两传递次数。(开 vector \text{vector} vector 不慌啊)

只有 2 m 2^m 2m 个状态,滚一个 f S f_S fS 来进行 dp \text{dp} dp,对 x ∈ S x \in S xS x x x 进行更新 f f f.

粗略一算,哈,枚举是 O ( m ) \mathcal{O}(m) O(m) 的,转移又要一重,那么就是 O ( 2 m m 2 ) \mathcal{O}(2^m m^2) O(2mm2).

这东西只有 60 60 60 分,常数一点也卡不进去。

空间是 O ( 2 m ) \mathcal{O}(2^m) O(2m) 没事,时间不行了,那这么地吧, 60 60 60 就走了吧。

Day2 \text{Day2} Day2 全是紫题,拿到 210 210 210 仍然很慌。

直接搞一个数据结构,那么要支持的是:

  • 插入,合并
  • 全局 + 1 +1 +1 操作
  • 全局异或和

Trie \text{Trie} Trie 可以解决第一个和第三个,但是全局 + 1 +1 +1 显然 Trie \text{Trie} Trie 搞不了。

那么一个二进制 + 1 +1 +1 实际上是把 它最低位的 0 0 0 变成 1 1 1,该位以后所有的 1 1 1 变成 0 0 0,怎么维护呢?首先 Trie \text{Trie} Trie 的树高是 log ⁡ \log log 的,暴力也可以,常数小一点的话可以直接从低到高的交换。

这样 O ( n log ⁡ n ) \mathcal{O}(n \log n) O(nlogn) 就过了?

对,没错!我切紫题了?jk/ jk/

作业题

至少 310 310 310 稳住了!

反演好累啊,直接 30 30 30 暴力带走吧。

总结

虽然口头 340 340 340 进了 E E E 队,但是很多暴力 / 正解需要调试的时间,考场真正能写出来还需要时间的磨练。不过加油!

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

你可能感兴趣的:(游记)