17.11.04
Posted *ZJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了17.11.04相关的知识,希望对你有一定的参考价值。
- 模拟考试
- Prob.1(只AC了两组)
简化问题后:给出不超过20个50位以内的二进制数,问是否存在某些数的异或值等于输入的数。
解法:
1).暴力搜索每种情况(诶,我怎么连搜索都打错了???)
2).for循环枚举每种选法,看是否存在一种选法的异或值等于目标值
然后有一个小技巧:
对于每个枚举到的集合S,不需要把每一个出现的元素再重新提出来相异或。因为是从小到大枚举,且最后的异或值与异或的顺序无关,所以只需要把S这个01串减小一个“1”(就去掉lowbit对应的那个“1”吧),这样得到S的一个子集S‘,然后O(1)转移就好了。
但是这个复杂度是k(多组)*107级别的。
大米兔大佬不甘忍受如此高的复杂度,于是他大发神威,写了一个线性基(咸腥鸡)来处理这个问题。于是这个就变成咸腥鸡裸题了,他说复杂度是小得多。(他科普了一下,真的学不来,就先记下来了。)
- Prob.2(AC)Tarjan求强连通,裸裸裸
- Prob.3(AC)最小生成树后,跑两个dfs求以每个点作为根时整棵树的代价,用到“转根”小技巧。
以上是关于17.11.04的主要内容,如果未能解决你的问题,请参考以下文章