欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

小 Q 與彼岸花

小 Q 與彼岸花

https://ac.nowcoder.com/acm/contest/11171/B

題意:查詢m次,每次輸出區(qū)間[l, r]內(nèi)兩個數(shù)的最大異或值。
因為是區(qū)間內(nèi)的最大值求解問題,可以通過區(qū)間dp來進(jìn)行分析。
區(qū)間[l,r]內(nèi)的最大值可以由區(qū)間端點l, r, 或者區(qū)間[l + 1, r] 和 [l, r - 1] 內(nèi)的最大值取出。
例如: 有三個數(shù) 1, 2, 3 求區(qū)間[1, 3]內(nèi)的最大值,可以通過求區(qū)間端點1, 3, 或者 區(qū)間【1, 2】, 區(qū)間[2,3]內(nèi)的最大值。
從而得出狀態(tài)轉(zhuǎn)移方程; dp[i][j] = max(a[i] ^ a[j], max(dp[i + 1][j], dp[i][j - 1]))
數(shù)據(jù)范圍 n最大為5e3,時間復(fù)雜度O(n^2),所以隨便過。
ac代碼:

#include<bits/stdc++.h>
using namespace std;
int n, m;
int a[5010];
int ans[5010][5010];
int dp[5010][5010];
int main()
{
    cin >> n >> m;
    for (int i = 1; i <= n; ++i) cin >> a[i];
    for (int len = 2; len <= n; ++len) {
        for (int i = 1; i <= n - len + 1; ++i) {
            int j = i + len - 1;
            dp[i][j] = a[i] ^ a[j];
            //狀態(tài)轉(zhuǎn)移 
            dp[i][j] = max(dp[i][j], max(dp[i + 1][j], dp[i][j - 1]));
        }
    }

    int l, r;
    while (m--) {

        cin >> l >> r;
        cout << dp[l][r] << endl;
    }
    return 0;
}
全部評論

相關(guān)推薦

評論
6
收藏
分享

創(chuàng)作者周榜

更多
??途W(wǎng)
??推髽I(yè)服務(wù)