典型的代價優先計算dp
難點就在計算代價上。。。
很巧的是,每次合併,代價就是i,j組成的序列中,開始了但是沒有結束的字母種類數
普通dp tle不知道多少個點
#include#includeview code#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;
}
滾動陣列優化 時間和空間
#include#includeview code#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;
}
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 解...