給出兩個由小於等於 \(k\) 的正整數構成的數列 \(a\) 與 \(b\) ,長度為 \(n\) 與 \(m\) 。
現在需要乙個由小於等於 \(k\) 的正整數構成的數列 \(c\) ,使得 \(c\) 既不是 \(a\) 的子串行,也不是 \(b\)
的子串行。
請求出 \(c\) 的最小長度。
\(n,m,k\le 4000\)
\(dp[i][j]\) 表示 \(a\) 掃到 \(i\) , \(b\) 掃到 \(j\) , \(c\) 的最小長度。
預處理一下下乙個與當前位置值相同的位置就好了。
#includeusing namespace std;
template inline void read(t &x)
#define n 4010
#define rep(i, a, b) for (int i = a; i <= b; i++)
#define drp(i, a, b) for (int i = a; i >= b; i--)
int n, m, k, a[n], b[n], dp[n][n], f1[n][n], f2[n][n], ans;
inline void upd(int& x, int y)
int main()
drp(i, m, 1)
dp[0][0] = 1, ans = min(n, m) + 1;
rep(i, 0, n) rep(j, 0, m) if (a[i] == b[j] && dp[i][j]) rep(k, 1, k)
if (!f1[i + 1][k] && !f2[j + 1][k]) ans = min(ans, dp[i][j]);
else upd(dp[f1[i + 1][k]][f2[j + 1][k]], dp[i][j] + 1);
printf("%d", ans);
return 0;
}
不知道哪來的題 完美理論
兩棵點集相同的樹,每個點有乙個權值 a i a i le 1000 編號 1 n n le 100 找到乙個點集的子集使得這個子集在兩棵樹上都是連通塊。輸出最大的權值和。多組資料,t le 50 考慮列舉兩棵樹的根 root 則對於任意乙個點,選了它就必須選它的父親。這就是乙個最大權閉合圖的模型了。...
不知道不知道
函式分析 希爾伯特 哥德爾不完備定理 哥德爾不完全性定理一舉粉碎了數學家兩千年來的信念。他告訴我們,真與可證是兩個概念。可證的一定是真的,但真的不一定可證。某種意義上,悖論的陰影將永遠伴隨著我們。無怪乎大數學家外爾發出這樣的感嘆 上帝是存在的,因為數學無疑是相容的 魔鬼也是存在的,因為我們不能證明這...
不知道不知道
函式分析 希爾伯特 哥德爾不完備定理 哥德爾不完全性定理一舉粉碎了數學家兩千年來的信念。他告訴我們,真與可證是兩個概念。可證的一定是真的,但真的不一定可證。某種意義上,悖論的陰影將永遠伴隨著我們。無怪乎大數學家外爾發出這樣的感嘆 上帝是存在的,因為數學無疑是相容的 魔鬼也是存在的,因為我們不能證明這...