洛谷 p4302的dp中的細節討論

2022-03-30 20:43:18 字數 980 閱讀 3044

本題的思路很簡單,區間dp即可,但做題不是為了ac,故我在此分享3種有細微差別但思路相同的做

法,以便後續遇到同型別題來選擇適合自己的方法。

直接讀入字串,列舉的區間長度不包括起點

#include#include#include#include#define inf 0x3f3f3f3f

using namespace std;

const int maxn=1e3+50;

char s[maxn];

int m[maxn];

int dp[maxn][maxn];

bool check(char s,int n,int len){

for(int i=len;i將字串從下標1開始讀入,列舉區間包含當前起點;

#include#include#include#include#define inf 0x3f3f3f3f

using namespace std;

const int maxn=1e3+50;

char s[maxn];

int m[maxn];

int dp[maxn][maxn];

bool check(char s,int n,int len){

for(int i=len;i字串從下標1讀入,列舉區間不包含當前起點。

#include#include#include#include#define inf 0x3f3f3f3f

using namespace std;

const int maxn=1e3+50;

char s[maxn];

int m[maxn];

int dp[maxn][maxn];

bool check(char s,int n,int len){

for(int i=len;i這3種做法只有細微的差別,但為什麼要做,還是值得思考一下

的。這有便於我們更好的理解區間dp;

完結撒花

洛谷P4302 字串摺疊

摺疊的定義如下 乙個字串可以看成它自身的摺疊。記作 s s x s 是x x 1 個s連線在一起的串的摺疊。記作 x s ssss s x個s 如果a a b b 則ab a b 例如,因為3 a aaa,2 b bb,所以3 a c2 b aaacbb,而2 3 a c 2 b aaacaaacb...

dp 洛谷P1133 教主的花園

一開始題目看錯了,以為很水的 然後0 爆蛋之後開始想標算 想了半天就是不知道怎麼處理這個環 設f i j k 表示第i行第j列的答案 k 0表示前面比他小 k 1表示前面比他大 但是這樣我們第一位要靠第n位來更新 那我們直接不更新第一位 從第二位來,然後跑完後把n位和1位結合一下就好了 includ...

dp 洛谷P1281 書的複製

本來以為水題,後來炸了 dp方程這個直接想總不難把 毫無優化的暴力轉移 但是最後輸出方案的時候,不可以按照dp的方案輸出的 因為dp它的方案是讓子節點數值最優 這樣的方案是是不可以保證總的方案最優的 所以要最後貪心輸出答案 就是後面的人經可能的取 include define ll long lon...