luogu P4310 絕世好題

2022-05-11 13:45:07 字數 562 閱讀 7725

題面傳送門

這道\(dp\)還是比較水的

首先考慮設\(f_i\)為以\(a_i\)結尾的最長長度,則向前迴圈列舉找到適合的轉移就可以了,時間複雜度\(o(n^2)\),估計\(80\)分

正解也不是很難想,因為這是位運算,所以我們要找到位運算的性質,\(\&\)的性質就是兩個數至少有乙個相同位置同為\(1\),那麼只要列舉位置轉移就好了,設\(s_i\)為結尾的數中二進位制第\(i\)位為\(1\)的最大值,那麼\(f_i\)只要從\(i\)二進位制位上為\(1\)的地方轉移就可以了。

**實現:

#include#define max(a,b) ((a)>(b)?(a):(b))

using namespace std;

int n,m,a,f,s[39],tot,pus,ans;

int main()

f++;

pus=a;

tot=0;

while(pus)

ans=max(ans,f);

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

}

luogu P4310 絕世好題

題面傳送門 這道d pdp dp還是比較水的 首先考慮設f if i fi 為以a ia i ai 結尾的最長長度,則向前迴圈列舉找到適合的轉移就可以了,時間複雜度o n 2 o n 2 o n2 估計80 8080 分正解也不是很難想,因為這是位運算,所以我們要找到位運算的性質,的性質就是兩個數至...

P4310 絕世好題

給定乙個長度為n的數列ai,求ai的子串行bi的最長長度,滿足bi bi 1 0 2 i len 輸入格式 輸入檔案共2行。第一行包括乙個整數n。第二行包括n個整數,第i個整數表示ai。輸出格式 輸出檔案共一行。包括乙個整數,表示子串行bi的最長長度。輸入樣例 1 3 1 2 3 輸出樣例 1 2 ...

P4310 絕世好題

題目描述 給定乙個長度為n的數列ai,求ai的子串行bi的最長長度,滿足bi bi 1 0 2 i len 說明對於100 的資料,1 n 100000,ai 10 9。錯誤日誌 沒搞清 每一位的dp值如何更新記錄陣列 乙個數 a 可以接在數 b 後面,當他們在二進位制下有相同位同為 1 時成立 這...