bzoj4300: 绝世好题(dp)
2015-11-07 16:26
405 查看
题目链接
题意:给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。
解答:考虑到按位与,我们可以思考,某一位都是1的情况,使用dp[i]:表示数X的二进制i位置是1的时候,最大长度,然后暴力计算。
题意:给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。
解答:考虑到按位与,我们可以思考,某一位都是1的情况,使用dp[i]:表示数X的二进制i位置是1的时候,最大长度,然后暴力计算。
#include<bits/stdc++.h> using namespace std; #define LL long long #define pb push_back #define X first #define Y second #define cl(a,b) memset(a,b,sizeof(a)) typedef pair<int,int> P; const int maxn=1005; const int inf=1<<27; int dp[34]; int main(){ int n;scanf("%d",&n); for(int i=0;i<n;i++){ int x;scanf("%d",&x); int tmp=0; for(int j=0;j<31;j++)if(x&(1<<j)){ tmp=max(tmp,dp[j]+1); } for(int j=0;j<31;j++)if(x&(1<<j)){ dp[j]=max(dp[j],tmp); } } int ans=0; for(int i=0;i<31;i++){ ans=max(ans,dp[i]); } printf("%d\n",ans); return 0; }
相关文章推荐
- Scala 各种数据库访问框架简介
- ANT教程之六 Ant数据类型
- C语言 ---- 数组 iOS学习-----细碎知识点总结
- 使用后缀表达式写的数据结构实验,实现计算器
- post方式提交数据
- 自学php-运算符
- 很好的几个Managed Directx 例子
- Android 之 Binder与进程间通信
- 如何打开API文档
- PowerShell介绍 第六回 WMI介绍
- Hibernate通过Cirteria求翻页插件的总记录数
- 日志
- 在使用分组操作时的几个注意事项
- 使用Drawable资源之使用ClipDrawable资源
- ANT教程之五 Ant属性文件
- APT柬埔寨站第二比赛日战报
- The OpenWire Wire Format
- ThinkPHP快速入门3-连贯操作,变量
- 编译和测试android的驱动程序学习笔记
- PowerShell介绍 第五回 字符串及其操作符