码迷,mamicode.com
首页 > 其他好文 > 详细

17.11.04

时间:2017-11-04 20:42:37      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:线性   出现   tarjan   连通   超过   循环   font   strong   for循环   

  • 模拟考试
    • 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

标签:线性   出现   tarjan   连通   超过   循环   font   strong   for循环   

原文地址:http://www.cnblogs.com/zj75211/p/7784344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!