题目链接:绝世好题 暴力就不用说了,和lis神似,O(n2)妥妥的挂掉,但可以得大部分分(好像是90,80)... 考虑优化,来一发非正解的优化: #include<bits/stdc++.h> using namespace std; const int N=101000; int n,a[N],f[N],ans,tot; priority_queue<pair<int,int> >q; struct gg { int x,y; }b[N]; inline int r…
思路 :题意描述我也很绝望 .先说一下题意 : 给定长度为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 的 最大长度 详细见代…
设f[i][j]表示数列到i为止最后一项第j位为1的最大子序列长度,每次从i-1中1<<j&a[i]!=0的位+1转移来 然后i维是不需要的,答案直接在dp过程中去max即可 #include<iostream> #include<cstdio> using namespace std; int n,f[35],ans; int read() { int r=0,f=1; char p=getchar(); while(p>'9'||p<'0') {…
4300: 绝世好题 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=4300 Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len). Under two situations the player could score one point. ⋅1. If you touc…