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*位数的

  • 相关阅读:
    写一写这几天安卓开发遇到的坑
    安卓环境搭建
    正则表达式
    一段时间的总结
    路飞-登录页面
    路飞-腾讯云短信接口
    路飞-Redis
    路飞-git操作
    路飞-后台xadmin配置
    路飞-后台处理跨域问题
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8647412.html
Copyright © 2011-2022 走看看