zoukankan      html  css  js  c++  java
  • 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求以每个点作为根时整棵树的代价,用到“转根”小技巧。
  • 相关阅读:
    C语言第三次博客作业单层循环结构
    C语言字符数组
    C语言第一次作业
    C语言作业函数
    C语言嵌套循环
    C语言第二次作业分支结构
    C语言作业数组
    1712新生素拓活动总结
    C语言第0次作业
    C语言作业数据类型
  • 原文地址:https://www.cnblogs.com/zj75211/p/7784344.html
Copyright © 2011-2022 走看看