思路 :题意描述我也很绝望 。先说一下题意 :

给定长度为n数组a [ ],求a[ ] 的一个最大子序列(可以不连续),使得b [ i ]& b [ i - 1 ] ! = 0.求最大的 b数组的长度

题解:显然是DP,状态转移方程显然是dp[ i ] = m a x { dp [ k ] + 1 } , a [ i ] & a [ k ] ! = 0

但是不能跑 n*n 考虑位运算性质,只要考虑相邻之间两个转移即可。记录  i 位置之前的 二进制位每个位上不为 0 的 最大长度

详细见代码:

#include<bits/stdc++.h>
using namespace std;
#define maxn 123456
#define ll long long
ll dp[33],n,x,ans,tp;
int main()
{
scanf("%lld",&n);
for(int i=1; i<=n; i++)
{
tp=1;
scanf("%lld",&x);
for(int j=0; j<=32; j++)
if((1<<j)&x)tp=max(tp,dp[j]+1);
for(int j=0; j<=32; j++)
if((1<<j)&x)dp[j]=max(tp,dp[j]);
ans=max(ans,tp);
}
printf("%lld\n",ans);
return 0;
}

  

BZOJ-5-4300: 绝世好题-位-DP的更多相关文章

  1. bzoj 4300: 绝世好题【dp】

    设f[i][j]表示数列到i为止最后一项第j位为1的最大子序列长度,每次从i-1中1<<j&a[i]!=0的位+1转移来 然后i维是不需要的,答案直接在dp过程中去max即可 #i ...

  2. bzoj 4300: 绝世好题 dp

    4300: 绝世好题 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php ...

  3. HYSBZ(BZOJ) 4300 绝世好题(位运算,递推)

    HYSBZ(BZOJ) 4300 绝世好题(位运算,递推) Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<= ...

  4. BZOJ 4300: 绝世好题 动态规划

    4300: 绝世好题 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4300 Description 给定一个长度为n的数列ai,求ai的 ...

  5. 【递推】BZOJ 4300:绝世好题

    4300: 绝世好题 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 564  Solved: 289[Submit][Status][Discuss] ...

  6. bzoj 4300: 绝世好题

    4300: 绝世好题 Time Limit: 1 Sec  Memory Limit: 128 MB Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi& ...

  7. 绝世好题(DP)

    题目链接:绝世好题 暴力就不用说了,和lis神似,O(n2)妥妥的挂掉,但可以得大部分分(好像是90,80)... 考虑优化,来一发非正解的优化: #include<bits/stdc++.h& ...

  8. bzoj4300: 绝世好题(DP)

    按位DP f[i]表示第i位为1的最长子序列 #include<iostream> #include<cstring> #include<cstdlib> #inc ...

  9. BZOJ4300 绝世好题 【dp】

    题目 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len). 输入格式 输入文件共2行. 第一行包括一个整数n. 第二行包括n个 ...

随机推荐

  1. AngularJs中,如何在ng-repeat完成之后,执行Js脚本

    //ng-repeat生成4个li,生成后再执行自定义方法fn在每个li后加一根横线 <script> var myapp=angular.module('myapp',[]); myap ...

  2. Nginx的进程模型及高可用方案(OpenResty)

    1. Nginx 进程模型简介 Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程.其中master充当整个进程组与用户的交互接口,同时对进程进行监护 ...

  3. AppServ安装到一半卡住的问题

    今天在笔记本安装AppServ的时候,运行到Installing mysql service时就卡住不动了,因为之前在自己的台式电脑安装过AppServ,当时是一步成功的,所以觉得这个问题莫名其妙,因 ...

  4. Linux文本分析命令awk的妙用

    基本用法 awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理 awk命令格式如下 awk [-F field-sep ...

  5. mysql出现10060错误

    报错内容如下 Can't connect to MySQL server (10060) 提示不能连接 mysql服务. 首先检查任务管理器 看看mysqld.exe进程有没有启动.如果启动了就强制结 ...

  6. linux:安装并使用activeMQ

    1.下载安装包:curl -O https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.tar.gz 2. ...

  7. Java+selenium之WebDriver定位页面元素(二)

    Selenium-Webdriver 提供了强大的元素定位方法,支持以下三种方法: 单个对象的定位方法,多个对象的定位方法和层级定位 1. 定位单个元素 // 对于元素的属性包含 id 的情况适用,推 ...

  8. 挂在光盘出现写保护mount: block device /dev/sr0 is write-protected, mounting read-only

    https://blog.csdn.net/yueludanfeng/article/details/60339688

  9. Http系列笔记

    万能的HttpClient (Framework与NetCore 都支持) string url = "http://localhost:5000/api/values"; //p ...

  10. 反射PropertyInfo的简单使用

    namespace EF6._0Test { class Program { /// <summary> /// PropertyInfo的简单使用 /// </summary> ...