求子序列 DP

2021-07-16 20:02:25 字數 774 閱讀 8079

time limit: 1 sec  

memory limit: 128 mb

submit: 182  

solved: 8

submit

status

web board

給定乙個長度為n的數字序列a,從中選取乙個長為m的子串行b滿足 b[i]&b[i-1]!=0 (2<=i<=m)

求最大的m。

第一行輸入乙個整數t,代表有t組測試資料。

每組資料第一行輸入乙個整數n代表a序列的長度,接下來一行輸入n個正整數表示ai(0乙個整數表示最大的m。

131 1 13

思路:將每個數轉化為二進位制,在進行dp。

#include#include#include#includeusing namespace std;

const int maxm=100005;

int a[maxm],dp[maxm][40],ans,l,sum[maxm],last[40];

void chuli(int x,int num);

int main()

printf("%d\n",ans);

} return 0;

}void chuli(int x,int num)

l=max(l,len);

for(i=1;i<=len;i++)

ans=max(ans,sum[num]); }}

/*234

41 1 8 8

*/

分而治之 求子序列最大和

這裡只紀錄一下函式的思想 運用遞迴的思想,先後掃瞄左邊最大值,右邊最大值,和跨中點最大值,比較.int max3 int a,int b,int c int divideandconquer int list,int left,int right 下面是 分 的過程 center left righ...

COGS82 求子序列

這是一道經典題目了,劉汝佳在紫書上講解了三種方法,複雜度從o n3 o n2 o n 記得高一我寫這道題的時候迷迷糊糊的,對於o n 的演算法並不是很理解,今天我重新寫這道題並用o nlogn 的分治方法解決,也是為寫維護數列做準備。divide and conquer 分而治之的思想可以說是oi中...

求子陣列的最大和 DP

題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 輸入 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2 輸出 因此輸出為該子陣列的和18。解析 因為是...