zoukankan      html  css  js  c++  java
  • 折半思想

    折半思想

    将一个问题已暴力的时间复杂度确定一半, 在以较小的时间复杂度搞定另一半, 统计答案

    Promble 1

    Mark Douglas 是一名律师。他的客户 Yuri Ball 在一场车祸中不幸去世。为了帮助 Yuri 的亲属拿到他的遗产, Mark 需要得到一个密码。在 Yuri 的笔记本上,有一个长为 的只包含小写字母的字符串, Mark 知道密码恰好是将这个字符串分解为两个长度为 的子序列且它们构成的字符串恰好相反的方案数。我们认为两种分解方法是不同的,当且仅当两个下标集合构成的集合 是不同的,注意 和 我们认为是相同的分解方法。如 cabaacba 的合法分解共有 CabaaAcBA 和 CabAacBA 两种。 Mark 希望你能帮助他计算出密码,事成之后他决定分给你 six million five hundred thousand dollars 并邀请你去柬埔寨度假。

    第一行为一个正整数 n。(n <= 18)
    第二行为一个长度为 2*n的字符串,仅包含小写字母。

    我的做法:

    (O(2^n)) 处理出前一半的字符集{s1, s2}, 那么后一半就是{rev(s2), rev(s1)} (O(n^3)) dp来搞一搞

    Promble 2

    给出一些修改, 在二元集合(a, b)中插入或删除, 第一元为关键字, 第二元为权值

    查询时, 给出一个数x, 求x & a == x 的集合权值之和(x, a <= (2^{16}))

    暴力肯定超时

    设s[s1][s2] 为 前二进制下前8位数为s1, 后8位满足x2 & s2 == x2的集合权值之和

    那么我们可以在(O(nsqrt(n))) 干过此题

  • 相关阅读:
    linux中编写同步文件的脚本
    SSH实现免密登录
    关于ISO 15765-2的解读
    设置Tera Term
    串口通信有极限速度
    三相永磁电机电流采样
    eclipse中F3快捷键无法跳转到定义的解决方法
    电脑和航模杂志和电子开发网站汇总
    MC9S08DZ60经典单片机
    STM32的SWD调试
  • 原文地址:https://www.cnblogs.com/Hs-black/p/11740077.html
Copyright © 2011-2022 走看看