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