題面傳送門
這道\(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 時成立 這...