洛谷 P3622 動物園

2022-05-10 05:49:39 字數 741 閱讀 6312

發現本題中,每個小朋友是否高興僅取決於其後五個動物的情況,我們可以用狀壓dp解決本題

首先已處理 num[i][s] 表示對於位置 i ,狀態為 s 時有多少在 s 的同學滿意

轉移方程很好寫

dp[i][s] = max(dp[i - 1][(s&15)<<1], dp[i - 1][(s&15)<<1|1]) + num[i][s];

但是本題是環狀的所以我們要列舉開始的狀態,答案就是 dp[n][列舉的狀態]

#include #include #include #include #include #include #include using namespace std;

const int maxn = 10055;

int init()

while(c >= '0' && c <= '9')

return fh * rv;

}int n, m, num[maxn][35], dp[maxn][35], ans;

int main()

for(int j = 1; j <= c; j++)

for(int j = 0; j < 32; j++)

} for(int s = 0; s < 32; s++)

} ans = max(ans, dp[n][s]);

} cout << ans << endl;

return 0;

}

洛谷 P2375 NOI2014 動物園

其實對於乙個sum i 其值就等於sum next i sum next next i 1,然後我們可以記憶化,然後題目裡又有乙個限制,就是前字尾不能重合,那我們就找到最大但是不重合的那種情況,然後往小了列舉就好了.最後答案說要取模,所以不要忘了 ljx xhy yyq 排名無先後 1 includ...

洛谷P2375 NOI2014 動物園

題目大意 求出乙個字串 s 每一位的 num i 最多 5 組詢問,s leqslant10 6 num i 定義為 s 中長度不超過 lfloor dfrac i2 rfloor 的 border 的個數 題解 類似 kmp 發現乙個字串 border 的 border 一定是原串的 border...

洛谷2375 BZOJ 3670動物園題解

題目鏈結 洛谷鏈結 我們發現題目要我們求的num i 東西本質上其實是 求有多少以i結尾的非字首且能與字首匹配的字串,而且要求字串長度小於 i 2 我們先不考慮字串長度的限制,看所有以i結尾的非字首且能與字首匹配的字串如何計數 考慮到kmp演算法的next陣列求解的過程,大家應該都想到i結尾的非字首...