题目:绝世好题

暴力 dp

显然 \(O(n^2)\) 转移即可。

单调队列优化

观察到只有某二进制位两个数都为 \(1\) 时才能转移,因此我们把每个二进制位开一个单调队列,然后对于一个数 \(a\) ,找到它是 \(1\) 的二进制位并选其单调队列的队头进行转移,在这之后把这个数加入符合要求的单调队列中即可。

因为我懒 因为没有弹出元素操作并且多个 log 无伤大雅,所以单调队列可以用优先队列代替。

单调队列的时间是 \(O(n \log n)\),要是懒的话用优先队列 \(O(n \log n \log n)\) 依然可以过。

代码就不写了。

二进制优化

定义 \(f[i]\) 为在二进制下以第 \(i\) 位为1结尾的最长序列长度。

我们在 dp 时,先找出 \(a\) 哪一个二进制位为 \(1\) ,就说明这一位为结尾的可以转移过来,记录下转移最大值。记录之后再找出 \(a\) 哪一个二进制位为 \(1\) ,把转移的最大值继续转移下去即可。

#include <bits/stdc++.h>
using namespace std;
int n,a,f[40],ans=0;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
int tmp=0;
for(int j=0;j<=32;j++)
{
if((a>>j)&1)
{
tmp=max(tmp,f[j]);
}
}
for(int j=0;j<=32;j++)
{
if((a>>j)&1)
{
f[j]=max(f[j],tmp+1);
}
ans=max(ans,f[j]);
}
}
cout<<ans;
return 0;
}

时间 \(O(n \log n)\) 。

本质是滚动数组充当了我们单调队列的作用,因为它会存下某一位结尾的最大长度,而不用我们手动去找,并且还省空间。

Luogu P4310 绝世好题 题解 [ 绿 ] [ 线性 dp ] [ 单调队列优化 ] [ 二进制优化 ]的更多相关文章

  1. Mowing the Lawn【线性dp + 单调队列优化】

    题目链接:https://ac.nowcoder.com/acm/contest/2652/G 题目大意:与上一篇博客 烽火传递 差不多. 1.一共n头羊,若超过m头连续的羊在一起,就会集体罢工,每头 ...

  2. P4310 绝世好题

    P4310 绝世好题 题目描述 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len). 说明 对于100%的数据,1<=n ...

  3. BestCoder Round #89 B题---Fxx and game(单调队列)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5945     问题描述 输入描述 输出描述 输入样例 输出样例 题意:中文题,不再赘述: 思路:  B ...

  4. 刷题总结——生日礼物(bzoj1293单调队列)

    题目: Description 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠, ...

  5. 刷题总结——Cut the Sequence(POJ 3017 dp+单调队列+set)

    题目: Description Given an integer sequence { an } of length N, you are to cut the sequence into sever ...

  6. 刷题总结——烽火传递(单调队列+dp)

    题目: 题目描述 烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上.一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情.在某两座城市之间有 n 个烽火台,每个烽火 ...

  7. HDU 5945 题解(DP)(单调队列)

    题面: Fxx and game Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) T ...

  8. luogu P3657 (NOIP2017) 跳房子(二分+DP+单调队列)

    题面 传送门 分析 显然答案有单调性,可以二分答案,设当前二分值为g,根据题意我们可以求出跳跃长度的范围[l,r] 考虑DP 子状态: dp[i]表示跳到第i个点时的最大和 状态转移方程 \(dp[i ...

  9. P4310 绝世好题 按位DP

    这名字可海星\(OvO\) 思路:\(DP\) 提交:2次(\(zz\)我竟然把三目运算符写错了\(QwQ\)) 题解: 按位进行\(DP\):\(f[i]\)表示结尾的数字包括\(1<< ...

  10. Luogu 4310 绝世好题

    BZOJ 4300 先把这堆东西丢到博客里,以后再复习. 首先考虑暴力的$dp$,设$f_i$表示以$i$结尾的满足条件的序列的最长长度,有: $f_i = max(f_j) + 1$    $j & ...

随机推荐

  1. Yii2之model

    记录model常用方法 between: $model->andFilterWhere(['between','apply_time',$startTime,$endTime])

  2. Mybatis【12】-- Mybatis多条件怎么查询?

    很多时候,我们需要传入多个参数给sql语句接收,但是如果这些参数整体不是一个对象,那么我们应该怎么做呢?这里有两种解决方案,仅供参考. 1.将多个参数封装成为Map 测试接口,我们传入一个Map,里面 ...

  3. ELASTICSEARCH 读写性能优化

    ELASTIC 写i性能优化 refresh translog flush refresh 优化 translog优化 flush 优化 读性能优化 shard 设置

  4. 借助AI助手快速解析LlamaIndex的Workflow设计与Java迁移

    在前面的讨论中,我们通过AI助手快速浏览并分析了LlamaIndex的核心源码及其可视化部分.在上次的工作中,我们已基本完成了使用Java版本实现的可视化部分,尽管在工作流(workflow)的分析上 ...

  5. SaaS架构中多租户的概念

    SaaS架构中多租户的概念 租户可以理解为部署在云端的客户,通常出现在2B的企业中,比如现在学校的一卡通管理,通常是一个公司来做的,学校本地不需要做任何部署,而这个公司又是服务了很多个学校,那么学校对 ...

  6. CVE-2023-3390 Linux 内核 UAF 漏洞分析与利用

    漏洞分析 漏洞成因是 nf_tables_newrule 在异常分支会释放 rule 和 rule 引用的匿名 set ,但是没有设置 set 的状态为 inactivate,导致批处理中后面的请求还 ...

  7. 史上最牛X的微信公众号!

    今天给大家推荐一个最牛逼的微信公众号,专注分享技术干货,包括但不限于Java,HTML,JavaScript,MySQL,Redis,Windows,Linux,Spring,SpringBoot,V ...

  8. getway网关跨域问题记录

    一.问题产生环境 1.1 为什么会产生跨域问题? 跨域不一定都会有跨域题. 因为跨域问题是浏览器对于ajax请求的一种安全限制: 一个页面发起的 ajax请求,只能是与当前页域名相同的路径,这能有效的 ...

  9. Qt编写视频监控系统78-视频推流到流媒体服务器

    一.前言 视频推流作为独立的模块,目前并没有集成到视频监控系统中,目前是可以搭配监控系统一起使用,一般是将添加好的摄像头通道视频流地址打开后,读取视频流重新推到流媒体服务器,然后第三方可以从流媒体服务 ...

  10. JSON字符串反序列化 动态泛型

    需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的. 方案一:将方法参数存成JSON字符串,然后JSON反序列化成对象,然后反射调用 目标方法时这样的: CommandResp send ...