刷題 序列dp color length

2022-08-13 21:03:14 字數 1694 閱讀 9941

典型的代價優先計算dp

難點就在計算代價上。。。

很巧的是,每次合併,代價就是i,j組成的序列中,開始了但是沒有結束的字母種類數

普通dp tle不知道多少個點

#include#include

#include

#include

using

namespace

std;

inline

intread()

inline

void wr(int

x)int

n;const

int n=5e3+3

;char

a[n],b[n];

intla,lb,da[n],db[n];

int sum[26],cnt[2][n][26

];int

w[n][n];

intf[n][n];

intmain()

w[i][

0]=res;

}for(int i=1;i<=lb;i++)

w[0][i]=res;

}//pre1

for(int i=1;i<=la;i++)

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

//work

memset(f,0x3f,sizeof

(f));

f[0][0]=0

;

for(int j=1;j<=lb;j++) f[0][j]=f[0][j-1]+w[0][j-1

];

for(int i=1;i<=la;i++)

wr(f[la][lb]),putchar('\n

');}

return0;

}

view code

滾動陣列優化 時間和空間

#include#include

#include

#include

using

namespace

std;

inline

intread()

inline

void wr(int

x)int

n;const

int n=5e3+3

;char

a[n],b[n];

intla,lb,da[n],db[n];

int sum[26],cnt[2][n][26

];int w[2

][n];

int f[2

][n];

intmain()

for(int i=1;i<=la;i++)

//work

f[nw][0]=f[pre][0]+w[pre][0

];

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

f[nw][j]=min(f[pre][j]+w[pre][j],f[nw][j-1]+w[nw][j-1

]);

}wr(f[la&1][lb]),putchar('\n'

); }

return0;

}

view code

LintCode刷題 124 最長連續序列

給定乙個未排序的整數陣列,找出最長連續序列的長度。說明 要求你的演算法複雜度為o n 樣例 給出陣列 100,4,200,1,3,2 這個最長的連續序列是 1,2,3,4 返回所求長度 4 從乙個陣列整數陣列中找最長的連續序列。首先,連續序列的意思是 1,2,3,4,7 其中,1,2,3,4 就是連...

LeetCode刷題筆記 376 擺動序列

如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第乙個差 如果存在的話 可能是正數或負數。少於兩個元素的序列也是擺動序列。例如,1,7,4,9,2,5 是乙個擺動序列,因為差值 6,3,5,7,3 是正負交替出現的。相反,1,4,7,2,5 和 1,7,4,5,5 不是擺動序...

每日刷題 不同的子串行

給定乙個字串 s 和乙個字串 t,計算在 s 的子串行中 t 出現的個數。乙個字串的乙個子串行是指,通過刪除一些 也可以不刪除 字元且不干擾剩餘字元相對位置所組成的新字串。例如,ace 是 abcde 的乙個子串行,而 aec 不是 示例 1 輸入 s rabbbit t rabbit 輸出 3 解...