zoukankan      html  css  js  c++  java
  • A. 【UR #17】滑稽树上滑稽果

    题解:

    首先很显然的是这是一条链(特殊数据说是链是故意让人迷茫的??)

    然后 自己就开始yy 觉得每一次是加入一个使得当前值最小的数

    然而这tm又是特殊数据??

    那就写一波发现是错的

    考虑一下特殊数据的1e5

    我们会发现每一次and一下减少至少一个1(或者从此之后保持不变)

    这样我们可以枚举这一次的最高位

    在剩余的数中寻找是否有这一位为0的 递归下去就可以了

    时间是nloga的

    再考虑一般情况

    显然我们可以设f[i][s]表示前i个,状态为s

    转移就是枚举ai,有一个小问题就是 ai会被重复用

    但其实想一下就会发现 ai若是重复用 对于s是不会改变的 等于在浪费

    很容易可以yy的就是 当这个数没有到达所有数and的和时,一定有数能让他变小

    另外i显然是没用的状态可以去掉了

    这样时间是na的

    dp的瓶颈在转移处

     其实很简单 我们可以考虑枚举它的子集 判断这个是否是合法的

    假如判断是O(1)的 那这个就是n^(log2_3)的

    如何做到判断O(1)呢?

    我们预处理出f[i]表示该状态可以由哪个最小的ai得到 转移就是f[i]------->f[i&(1<<j)] 是n*位数的

  • 相关阅读:
    TCP 基础知识
    Spring Boot 实战 —— 日志框架 Log4j2 SLF4J 的学习
    MySQL 实战笔记
    Java 基础
    RPM 包的构建
    RPM 包的构建
    9. 桶排序
    8. 基数排序
    7. 计数排序
    6. 快速排序
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8647412.html
Copyright © 2011-2022 走看看