久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

信息學(xué)奧賽一本通1276:編輯距離動(dòng)態(tài)規(guī)劃與滾動(dòng)數(shù)組優(yōu)化

信息學(xué)奧賽一本通1276:編輯距離動(dòng)態(tài)規(guī)劃與滾動(dòng)數(shù)組優(yōu)化 字符串之間的改一下最短要幾步這類問題看著不起眼卻是很多人動(dòng)態(tài)規(guī)劃之路上繞不過去的一道坎。信息學(xué)奧賽一本通里編號 1276 的這道題標(biāo)題就四個(gè)字——編輯距離它講的正是把一個(gè)字符串通過插入、刪除、替換三種操作變成另一個(gè)字符串求最少操作次數(shù)。第一次接觸它的人通常會(huì)卡在狀態(tài)怎么定、轉(zhuǎn)移方程為什么長那樣而刷過幾遍的人又會(huì)發(fā)現(xiàn)下標(biāo)從 0 還是從 1 開始、初始化怎么寫每個(gè)細(xì)節(jié)都能讓你從樣例通過直接掉到全錯(cuò)。這篇就把 1276 這道例題從頭到尾拆開講清楚動(dòng)態(tài)規(guī)劃的設(shè)計(jì)動(dòng)機(jī)、二維表的手工推演、代碼逐行注釋、以及我踩過的那些坑無論你是剛學(xué)完背包的初學(xué)者還是想把這道模板題講給別人聽的教練都能從中找到可直接抄作業(yè)的部分。1. 先搞清楚編輯距離到底在解決什么1.1 從打錯(cuò)字說起問題的直覺理解你在搜索框里輸入 aple系統(tǒng)卻問你是不是想找 apple這背后的核心計(jì)算之一就是編輯距離。它的定義非常樸素給定兩個(gè)字符串 A 和 B允許三種操作——在任意位置插入一個(gè)字符、刪除任意一個(gè)字符、把任意一個(gè)字符替換成別的字符每次操作算一步問用最少的步數(shù)把 A 變成 B 需要多少步。題目 1276 里 A 和 B 的長度都小于 2000最終只要求輸出這個(gè)最小步數(shù)是一個(gè)純數(shù)值答案。理解這個(gè)問題的關(guān)鍵是意識到三種操作之間存在等價(jià)和冗余關(guān)系。插入一個(gè)字符和刪除一個(gè)字符互為逆操作替換一個(gè)字符有時(shí)可以拆成刪一個(gè)再插一個(gè)但那樣要多花一步所以替換是更劃算的獨(dú)立操作。舉個(gè)小例子A catB cut只需把中間那個(gè) a 替換成 u一步搞定編輯距離是 1A catB cats末尾插一個(gè) s也是一步。這些簡單的例子看起來毫無難度但一旦字符串變長、字符順序錯(cuò)位人腦就徹底算不動(dòng)了這正是需要算法的原因。我特別喜歡拿翻譯來類比把 A 看成原文B 看成譯文編輯距離衡量的是兩者在字符層面有多像。像 kitten 變成 sitting 這類經(jīng)典例子標(biāo)準(zhǔn)答案是 3k→se→i末尾補(bǔ) g很多教材都拿它來引入因?yàn)樗日故玖颂鎿Q、也展示了插入操作類型齊全短小又好記。1.2 為什么貪心和暴力都行不通有人第一反應(yīng)是從左往右掃一遍不一樣就改這就是典型的貪心思路。它對少數(shù)情況湊巧正確但很快會(huì)崩。比如 A abB ba從左掃第 1 位 a 和 b 不同改一次變成 bb再改第二位變成 ba兩步。可實(shí)際上有更好的解法嗎想想看替換兩次就是 2但如果你刪掉開頭的 a 變成 b再在末尾插一個(gè) a 變成 ba那是 2 步直接交換是不允許的。所以這里 2 是最優(yōu)貪心正好命中了。但換一組A abcdB acbd。從左掃第一位相同第二位 b 和 c 不同若順手改成 c后面就亂了可能要更多步。實(shí)際上最優(yōu)是刪掉 b、在 c 后插一個(gè) b共 2 步而貪心容易改成 3 步甚至更多。貪心的根本問題是當(dāng)前位置改還是刪還是插會(huì)影響后面所有字符的對齊方式局部最優(yōu)不代表全局最優(yōu)必須把子問題層層保留下來比較這天然就是動(dòng)態(tài)規(guī)劃的土壤。暴力搜索更不可行。每一步狀態(tài)都對應(yīng)一棵分叉樹分支因子是常數(shù)級別長度 2000 的情況搜索空間大到無法想象指數(shù)級復(fù)雜度直接爆掉。所以這道題的正解只有一條動(dòng)態(tài)規(guī)劃而且是一個(gè)二維的、時(shí)間 O(n·m)、空間 O(n·m)可優(yōu)化到 O(m)的經(jīng)典模型。1.3 編輯距離在真實(shí)世界里的用武之地別以為這只是競賽題編輯距離是實(shí)打?qū)嵄还I(yè)界廣泛使用的算法。第一類是拼寫糾錯(cuò)與輸入法候選搜索引擎、手機(jī)輸入法在用戶打錯(cuò)字時(shí)會(huì)計(jì)算輸入串和詞典里每個(gè)詞的編輯距離把距離最小的若干詞作為你想找的是不是……推給你。第二類是生物信息學(xué)里的 DNA/蛋白質(zhì)序列比對把堿基或氨基酸看成字符編輯距離及其帶權(quán)變體能衡量兩條序列的相似程度是很多比對工具的基礎(chǔ)。第三類是版本控制與文本差異工具比如各種 diff 工具要展示兩段文本改了哪幾行,其行級比較的內(nèi)核思想也和編輯距離一脈相承。第四類甚至出現(xiàn)在語音識別、抄襲檢測等場景本質(zhì)都是兩串東西差多少的量化。弄明白這四類應(yīng)用你就會(huì)明白為什么這道例題被反復(fù)拿出來講它不只是讓你 AC 一道題而是讓你掌握一個(gè)能遷移到無數(shù)真實(shí)問題里的建模套路。順帶說一句很多人搜這道題會(huì)連帶跳出弗洛伊德算法那其實(shí)是另一個(gè)領(lǐng)域的東西——弗洛伊德用來求圖上任意兩點(diǎn)間最短路是三重循環(huán)松弛編輯距離是字符串對齊的動(dòng)態(tài)規(guī)劃。兩者唯一相通的地方是都涉及多階段決策取最優(yōu)但狀態(tài)、轉(zhuǎn)移、場景完全不同別把它們的方程記混了。2. 動(dòng)態(tài)規(guī)劃設(shè)計(jì)狀態(tài)定義與轉(zhuǎn)移方程的來龍去脈2.1 狀態(tài)為什么必須是二維的動(dòng)態(tài)規(guī)劃第一步永遠(yuǎn)是定義狀態(tài)。這道題里答案不是整個(gè) A 變成整個(gè) B一步能算出來的而是由前綴變前綴的子問題疊加而來。原因很簡單字符串的匹配是從左往右對齊的你處理到某個(gè)位置時(shí)需要同時(shí)知道A 已經(jīng)用掉了前幾個(gè)字符B 已經(jīng)匹配了前幾個(gè)字符,這兩個(gè)信息缺一不可。于是定義 dp[i][j]把 A 的前 i 個(gè)字符變換成 B 的前 j 個(gè)字符所需的最少操作次數(shù)。注意這里是前 i 個(gè)下標(biāo)含義要牢牢記住很多人后面出錯(cuò)就是因?yàn)榘堰@里的 i、j 理解成了第 i 個(gè)字符的下標(biāo)。為什么是二維而不是一維因?yàn)樽訂栴}有兩個(gè)自由度——A 用多少、B 用多少。一維狀態(tài)沒法同時(shí)記錄兩個(gè)進(jìn)度所以二維是最小的必要維度。最終答案自然就是 dp[n][m]其中 n、m 分別是 A、B 的長度。把狀態(tài)想成一張表會(huì)更直觀行代表 A 的前綴長度從 0 到 n列代表 B 的前綴長度從 0 到 m。dp[i][j] 就是這張表第 i 行第 j 列的那個(gè)格子。填表的過程就是把每個(gè)格子用它的左、上、左上三個(gè)鄰居推導(dǎo)出來這也解釋了為什么二維表能從左上角一路填到右下角。2.2 三種操作在狀態(tài)轉(zhuǎn)移里各自對應(yīng)哪一步理解轉(zhuǎn)移方程的最好辦法是逆向思考要得到 dp[i][j]考慮最后一步操作作用在哪兒。假設(shè)我們已經(jīng)在湊用 A 的前 i 個(gè)字符得到 B 的前 j 個(gè)字符看三種操作分別意味著什么。刪除如果 A 的第 i 個(gè)字符是多余的把它刪掉那么問題就退化成用 A 的前 i-1 個(gè)字符變成 B 的前 j 個(gè)字符,代價(jià)是 dp[i-1][j] 1。插入如果 B 的第 j 個(gè)字符在 A 里沒有對應(yīng)我們在末尾補(bǔ)一個(gè)等價(jià)于用 A 的前 i 個(gè)字符先湊出 B 的前 j-1 個(gè)字符,再補(bǔ)上第 j 個(gè)代價(jià)是 dp[i][j-1] 1。替換把 A 的第 i 個(gè)字符直接改成 B 的第 j 個(gè)字符那么兩邊各消耗一個(gè)字符退化成用 A 的前 i-1 個(gè)字符變成 B 的前 j-1 個(gè)字符代價(jià)是 dp[i-1][j-1] 1。這三種最后一步的假設(shè)覆蓋了所有可能取它們的最小值就是答案。這里有個(gè)容易忽略的點(diǎn)當(dāng) A 的第 i 個(gè)字符和 B 的第 j 個(gè)字符本來就相等時(shí)替換這一步不需要花費(fèi)代價(jià)甚至比替換更省——直接沿用 dp[i-1][j-1]一個(gè)字符完美對齊一步都不用花。2.3 狀態(tài)轉(zhuǎn)移方程的完整形式與推導(dǎo)把上面的三種情況合在一起就得到了完整的狀態(tài)轉(zhuǎn)移方程當(dāng) A[i] B[j]下標(biāo)從 1 開始計(jì)時(shí)dp[i][j] dp[i-1][j-1]當(dāng) A[i] ! B[j] 時(shí)dp[i][j] min(dp[i-1][j-1], dp[i][j-1], dp[i-1][j]) 1我先解釋為什么相等時(shí)不用考慮另外兩種加操作。假設(shè) A[i] B[j]如果還去嘗試刪除或插入那至少要多花一步而 dp[i-1][j-1] 這個(gè)選擇能做到比它們都不差所以直接取它即可無需再取 min。這是一個(gè)可以證明的結(jié)論省掉了不必要的比較。再說說不相等時(shí)為什么是三個(gè)里取最小再加一。dp[i-1][j-1] 對應(yīng)替換dp[i][j-1] 對應(yīng)插入dp[i-1][j] 對應(yīng)刪除三者各自代表一種把當(dāng)前字符對齊掉的思路誰最省就選誰。注意這個(gè)方程天然滿足最優(yōu)子結(jié)構(gòu)大的問題答案由小的子問題答案拼出來而且子問題之間沒有循環(huán)依賴保證了按順序填表就能得到正確結(jié)果。2.4 邊界條件空串是最重要的起點(diǎn)任何 DP 都要處理邊界這道題的邊界就是其中一個(gè)是空串。dp[i][0] 表示把 A 的前 i 個(gè)字符變成空串那只能一路刪需要 i 步所以 dp[i][0] i同理 dp[0][j] 表示用空串湊出 B 的前 j 個(gè)字符只能一路插需要 j 步所以 dp[0][j] j。dp[0][0] 0 是自然而然的。這兩個(gè)邊界看似簡單但它決定了整張表的地基。很多初學(xué)者代碼思路完全正確卻因?yàn)橥顺跏蓟谝恍谢虻谝涣袑?dǎo)致后面所有格子都算錯(cuò)樣例過不去。我在下面還會(huì)專門拿一節(jié)把初始化的坑講透。這里先記住一句話第一行是從空串到 B 的各前綴第一列是從 A 的各前綴到空串它們的值就是下標(biāo)本身。理解了這句話初始化就再也不會(huì)寫錯(cuò)。3. 完整代碼實(shí)現(xiàn)與逐行拆解3.1 二維 DP 標(biāo)準(zhǔn)寫法與詳細(xì)注釋先上最標(biāo)準(zhǔn)、最好理解的二維版本。它是我們的基準(zhǔn)版本調(diào)通它之后再做空間優(yōu)化才穩(wěn)妥。#include bits/stdc.h using namespace std; int main() { string a, b; cin a b; int n a.size(), m b.size(); // dp[i][j]a 的前 i 個(gè)字符變成 b 的前 j 個(gè)字符的最少操作數(shù) vectorvectorint dp(n 1, vectorint(m 1, 0)); // 邊界第一列a 的前綴全部刪掉變成空串 for (int i 0; i n; i) dp[i][0] i; // 邊界第一行空串逐個(gè)插入得到 b 的前綴 for (int j 0; j m; j) dp[0][j] j; for (int i 1; i n; i) { for (int j 1; j m; j) { if (a[i - 1] b[j - 1]) { // 字符相同直接對齊不花代價(jià) dp[i][j] dp[i - 1][j - 1]; } else { // 替換、插入、刪除三選一再補(bǔ)上當(dāng)前這一步 dp[i][j] min({dp[i - 1][j - 1], dp[i][j - 1], dp[i - 1][j]}) 1; } } } cout dp[n][m] endl; return 0; }幾個(gè)細(xì)節(jié)值得單獨(dú)說明。第一字符串用string存儲(chǔ)下標(biāo)從 0 開始而 dp 表從 1 開始計(jì)前綴長度所以訪問字符時(shí)統(tǒng)一寫a[i-1]、b[j-1]這個(gè)偏移量是坑點(diǎn)重災(zāi)區(qū)。第二min({...})這種三參數(shù)寫法是 C11 以來的初始化列表版本如果評測環(huán)境偏老可以改成min(min(x, y), z)。第三二維數(shù)組用vector動(dòng)態(tài)分配避免大數(shù)組爆棧長度 2000 時(shí)表有 2001×2001 個(gè)格子用int大約 16MB一般題目內(nèi)存限制下沒問題但如果兩串都接近 2000 且內(nèi)存卡得緊就需要下面的滾動(dòng)數(shù)組版本。3.2 手工推演一遍樣例把表填出來代碼只是形式真正的理解來自手推。拿一本通 1276 的樣例來走一遍A sfdqxbwB gfdgw。先用邊界把第一行第一列填好然后逐格推進(jìn)得到下面這張完整的 dp 表行對應(yīng) A 的前綴列對應(yīng) B 的前綴。dpgfdgw012345s112345f221234d332123q443223x554333b665444w776554右下角 dp[7][5] 4正好是樣例輸出。你可以挑一個(gè)格子手動(dòng)驗(yàn)算比如 dp[2][2]A 的前兩個(gè)字符 sf 變成 B 的前兩個(gè)字符 gfs≠g取 min(dp[1][1]1, dp[2][1]2, dp[1][2]2) 1 2但真實(shí)情況是 sf→gf 只需把 s 改成 g一步即可為什么表里是 1回頭看看表dp[2][2] 實(shí)際填的是 1。這里我要糾正一下剛才的口算dp[1][1] 是 A 的 s 變 B 的 g值確實(shí)是 1所以 min 里 dp[1][1]1 最小加一得 2不對等等——字符 s 和 g 不相等時(shí)才加 1可對于 dp[2][2]比較的是 a[1]f 和 b[1]f它們相等所以直接取 dp[1][1]1??催@就是相等分支省掉加一的威力。我們再驗(yàn)一個(gè)不等的情況dp[3][4]A 的前三個(gè) sfd 變 B 的前四個(gè) gfdga[2]db[3]g不相等取 min(dp[2][3]2, dp[3][3]1, dp[2][4]3) 1 1 1 2和表一致。這種手推三五個(gè)格子比讀十遍代碼都管用尤其能幫你直觀感受三個(gè)鄰居誰最小到底在選什么。3.3 空間優(yōu)化把二維壓成一維當(dāng) n、m 都到 2000 甚至更大時(shí)二維表雖然能過但空間是 O(n·m)。觀察轉(zhuǎn)移方程dp[i][j] 只依賴它左邊、上面、左上三個(gè)格子也就是說填第 i 行時(shí)只需要第 i-1 行的數(shù)據(jù)更早的行完全沒用了。這就具備了滾動(dòng)數(shù)組壓縮的條件把空間從 O(n·m) 降到 O(m)。#include bits/stdc.h using namespace std; int main() { string a, b; cin a b; int n a.size(), m b.size(); // dp[j] 表示當(dāng)前處理到 a 的前 i 個(gè)字符時(shí)變成 b 前 j 個(gè)字符的最少操作數(shù) vectorint dp(m 1); for (int j 0; j m; j) dp[j] j; // 相當(dāng)于第 0 行 for (int i 1; i n; i) { int prev dp[0]; // 保存 dp[i-1][j-1]即左上角 dp[0] i; // 當(dāng)前行的第 0 列dp[i][0] i for (int j 1; j m; j) { int tmp dp[j]; // 更新前它還是上一行的值即 dp[i-1][j] if (a[i - 1] b[j - 1]) { dp[j] prev; // 對應(yīng) dp[i-1][j-1] } else { dp[j] min({prev, dp[j - 1], dp[j]}) 1; } prev tmp; // 為下一列保留左上角 } } cout dp[m] endl; return 0; }這段代碼最容易繞暈的就是三個(gè)變量的時(shí)序關(guān)系我用一句話幫你鎖定更新 dp[j] 之前先把它存進(jìn) tmp此時(shí) dp[j-1] 已經(jīng)是本行第 i 行的新值dp[j] 還是上一行的舊值而 prev 是上一行、上一列的值。三者正好對應(yīng)狀態(tài)轉(zhuǎn)移需要的左、上、左上。其中prev tmp放在本輪末尾是為了讓下一列 j1 在使用左上角時(shí)拿到的是本行前一列更新前的舊值——這個(gè)細(xì)節(jié)如果寫反答案會(huì)悄悄錯(cuò)掉但樣例有時(shí)候還能過非常陰險(xiǎn)。提示滾動(dòng)數(shù)組我強(qiáng)烈建議先在二維版上調(diào)通、拿到正確答案再做這一步優(yōu)化并用同一組數(shù)據(jù)對拍驗(yàn)證。直接上手一維版一旦出錯(cuò)你很難判斷是方程錯(cuò)還是變量時(shí)序錯(cuò)。3.4 輸入輸出與字符串讀入的注意點(diǎn)題目給的是兩行字符串中間可能有空格嗎根據(jù)一字通的題意A 和 B 是普通字符串用cin a b就能讀它會(huì)自動(dòng)以空白符分隔。但如果字符串本身可能包含空格某些變體題會(huì)這樣就必須用getline。這時(shí)常見坑是如果前面用cin讀過數(shù)字緩沖區(qū)里會(huì)殘留一個(gè)換行符getline會(huì)讀到空串得先用getchar()或cin.ignore()吃掉那個(gè)換行。這道原題不涉及這個(gè)但你在做同類型題時(shí)要有這根弦。輸出只有一個(gè)整數(shù)最簡單的cout dp[n][m]即可。有的題會(huì)要求如果無解輸出 -1 之類但編輯距離一定是有解的最壞情況就是全刪全插所以不必?fù)?dān)心邊界外的分支。4. 常見坑與調(diào)試實(shí)錄4.1 下標(biāo)偏移0 起步與 1 起步的拉鋸戰(zhàn)這是我見過最多人栽的地方。dp 表用 1 表示第一個(gè)字符而字符串下標(biāo)用 0 表示第一個(gè)字符兩者差了一位。如果你在代碼里寫成了a[i] b[j]而不是a[i-1] b[j-1]當(dāng) i 或 j 取到長度時(shí)就會(huì)越界輕則答案錯(cuò)重則程序崩潰。解決辦法有二一是老實(shí)用i-1、j-1二是干脆在字符串前面補(bǔ)一個(gè)占位符讓兩個(gè)下標(biāo)都從 1 開始對齊比如讀入后執(zhí)行a a; b b;之后統(tǒng)一用a[i]、b[j]。補(bǔ)占位符這個(gè)技巧我用了很多年能顯著減少下標(biāo)錯(cuò)誤代價(jià)是多了兩個(gè)字符的內(nèi)存完全可以忽略。兩種寫法都行關(guān)鍵是整段代碼風(fēng)格統(tǒng)一別一半用一個(gè)規(guī)則、一半用另一個(gè)規(guī)則。4.2 初始化漏寫或?qū)戝e(cuò)的連鎖反應(yīng)初始化的坑有兩種典型形態(tài)。第一種是壓根忘了初始化第一行第一列此時(shí) dp 數(shù)組里都是默認(rèn)的 0結(jié)果 dp[i][0] 應(yīng)該等于 i 卻成了 0整張表全部偏低答案也偏小。第二種是初始化寫對了范圍但寫錯(cuò)了方向比如把dp[i][0] i寫成了dp[0][i] i行列顛倒在 n≠m 時(shí)錯(cuò)誤會(huì)被放大。我的經(jīng)驗(yàn)是寫初始化時(shí)先在紙上畫一個(gè)小表把邊界的值一個(gè)個(gè)標(biāo)出來再對著代碼逐行核對尤其是 n 和 m 不相等的時(shí)候。如果你用vector且長度寫成了n1和m1記住行的上界是 n、列的上界是 m別寫反。注意dp[i][0] i這一行很容易在重構(gòu)代碼時(shí)被刪掉。養(yǎng)成習(xí)慣——凡是二維 DP先肉眼掃一遍第一行第一列有沒有賦值再點(diǎn)運(yùn)行。4.3 字符比較與 min 的書寫陷阱字符比較本身很簡單但有一個(gè)隱藏問題題目里的字符可能是大小寫混合甚至是非 ASCII 的寬字符。原題 1276 都是普通可見字符直接比較沒問題。但如果遇到 Unicode 字符串string里一個(gè)字符可能占多個(gè)字節(jié)逐個(gè)char比較會(huì)得到詭異結(jié)果這時(shí)就需要按碼點(diǎn)切分屬于進(jìn)階內(nèi)容本題不涉及。另一個(gè)高頻小錯(cuò)是 min 的參數(shù)個(gè)數(shù)。用min({a, b, c})需要包含algorithm某些環(huán)境下還要注意編譯標(biāo)準(zhǔn)用嵌套min(min(a,b),c)則絕對安全。還有一種錯(cuò)誤是忘記加 1寫成dp[i][j] min(...)而漏掉 1這種情況下答案會(huì)系統(tǒng)性偏小樣例可能湊巧還對但一提交就掛。我調(diào)試這類問題的土辦法是挑一個(gè)不相等的格子手工算出期望值再打印程序里的實(shí)際值一眼就能看出是漏加還是取錯(cuò)鄰居。4.4 與最長公共子序列的混淆編輯距離和最長公共子序列LCS長得太像了都是二維、都是前綴、都有左上角轉(zhuǎn)移很多人背著背著就串味。我把區(qū)別釘死在這里L(fēng)CS 求的是最多能匹配多少個(gè)字符相等時(shí)dp[i][j] dp[i-1][j-1] 1不相等時(shí)取左邊和上面的大者且不加代價(jià)編輯距離求的是最少要改多少步相等時(shí)dp[i][j] dp[i-1][j-1]不相等時(shí)在三個(gè)方向里取最小加一。一個(gè)求最大、一個(gè)求最小一個(gè)相等時(shí)加一、一個(gè)相等時(shí)直接沿用。實(shí)際上兩者還有一層關(guān)系在只允許插入和刪除、不允許替換時(shí)編輯距離等于n m - 2 × LCS。把這條關(guān)系記住既能幫你區(qū)分兩個(gè)模型也能在需要時(shí)互相驗(yàn)證結(jié)果。4.5 調(diào)試速查表把上面這些坑整理成一張速查表考試或比賽時(shí)對著排查效率很高?,F(xiàn)象可能原因排查辦法答案偏小且正好差一個(gè)固定值漏寫1或邊界沒初始化手工算一個(gè)不等格子的期望值對比程序越界崩潰用了a[i]但 i 可等于 n改成a[i-1]或補(bǔ)占位符n≠m 時(shí)全錯(cuò)nm 時(shí)對初始化行列寫反檢查dp[i][0]和dp[0][j]樣例過但提交錯(cuò)滾動(dòng)數(shù)組 prev 時(shí)序錯(cuò)用二維版對拍小數(shù)據(jù)答案忽大忽小無規(guī)律混用了 LCS 的轉(zhuǎn)移式逐個(gè)核對相等/不等分支5. 舉一反三從模板題到變形應(yīng)用5.1 帶權(quán)編輯距離當(dāng)三種操作代價(jià)不同一本通這道題默認(rèn)插入、刪除、替換的代價(jià)都是 1但現(xiàn)實(shí)中它們并不等值。比如某些場景下刪除很貴、替換相對便宜于是就有了帶權(quán)編輯距離給三種操作各設(shè)一個(gè)代價(jià) w_del、w_ins、w_sub轉(zhuǎn)移方程變成 dp[i][j] min(dp[i-1][j] w_del, dp[i][j-1] w_ins, dp[i-1][j-1] (相等 ? 0 : w_sub))。改法只有幾處但思路完全一致。理解了基礎(chǔ)版本帶權(quán)版本就是順手套公式。更有意思的是當(dāng)替換代價(jià)大于刪除加插入之和時(shí)替換操作永遠(yuǎn)不會(huì)被選模型就退化成純插入刪除的編輯距離正好對應(yīng)前面提到的 LCS 關(guān)系。這個(gè)現(xiàn)象說明編輯距離的三種操作并非彼此獨(dú)立它們之間存在性價(jià)比的權(quán)衡設(shè)計(jì)轉(zhuǎn)移方程時(shí) min 就是在做這種權(quán)衡。5.2 輸出具體操作路徑而不只是次數(shù)原題只要次數(shù)但很多實(shí)際需求要怎么改。做法是在填表的同時(shí)記錄每個(gè)格子的決策來源是替換、插入還是刪除最后從 dp[n][m] 反向回溯到 dp[0][0]把路徑還原出來。回溯時(shí)遇到相等格子就一起往左上走遇到不等就根據(jù)當(dāng)時(shí)取的 min 來自哪個(gè)方向決定輸出哪種操作逆序輸出即可。這個(gè)技巧在文本 diff、操作序列生成里非常有用也常被拿來當(dāng)進(jìn)階練習(xí)。寫回溯代碼有個(gè)小坑反推時(shí)要重新比較字符是否相等而不是只看到達(dá)方向因?yàn)樘鎿Q這個(gè)方向在字符恰好相等時(shí)其實(shí)代表不改動(dòng)輸出時(shí)應(yīng)該跳過。我一開始就在這里多輸出了一堆無意義的替換改了好幾遍才對。建議回溯時(shí)把 dp 表和字符串一起打印出來對照非常直觀。5.3 和其他 DP 模板的橫向?qū)Ρ确诺礁蟮淖鴺?biāo)系里看編輯距離屬于序列對齊類動(dòng)態(tài)規(guī)劃和 LCS、最長上升子序列、正則匹配、通配符匹配、最短公共超序列這幾類共享同一套骨架二維狀態(tài)、前綴劃分、左/上/左上轉(zhuǎn)移。把這幾個(gè)模型聚在一起練你會(huì)發(fā)現(xiàn)它們的差別主要就三點(diǎn)——相等時(shí)加不加一、不等時(shí)取 max 還是 min、要不要額外加常數(shù)。抓住這三點(diǎn)一整類題就打通了。模型相等時(shí)不等時(shí)目標(biāo)編輯距離取左上三方取 min 再 1最小操作數(shù)最長公共子序列左上 1左右取 max最長匹配長度最短公共超序列左上 1上下取 min 再 1最短合并長度通配符匹配視規(guī)則而定上下左取并能否匹配我自己復(fù)習(xí) DP 時(shí)習(xí)慣把這些方程列成一張對照表貼在桌角做題卡殼時(shí)掃一眼往往立刻就能定位是哪個(gè)分支記錯(cuò)了。這種把同類模型打包記憶的方式比一道一道孤立地刷要高效得多尤其適合準(zhǔn)備競賽的同學(xué)在沖刺階段快速回憶。6. 我在這道題上踩過的那些坑說點(diǎn)書本上不太會(huì)寫的東西。我第一次AC這道題花的時(shí)間遠(yuǎn)超預(yù)期原因不是不會(huì)方程而是連續(xù)栽在下標(biāo)的坑里。當(dāng)時(shí)我圖省事直接寫了a[i] b[j]小數(shù)據(jù)沒事一放大到臨界長度就段錯(cuò)誤調(diào)試工具一掛我才發(fā)現(xiàn) i 走到了 n。后來我養(yǎng)成了一個(gè)近乎強(qiáng)迫癥的習(xí)慣只要寫二維 DP先在草稿紙畫個(gè) 3×3 的小表把邊界和第一個(gè)內(nèi)格的值算出來代碼跑完先打印這張小表對照對了再放大數(shù)據(jù)。這個(gè)動(dòng)作多花兩分鐘能省掉的調(diào)試時(shí)間往往是半小時(shí)起步。第二個(gè)體會(huì)是關(guān)于對拍的。滾動(dòng)數(shù)組優(yōu)化那次我寫得挺順樣例也過了結(jié)果交上去只過了三成測試點(diǎn)。后來我寫了個(gè)小腳本隨機(jī)生成幾組長度不超過 8 的字符串分別跑二維版和一維版幾百組一比就發(fā)現(xiàn)有兩組對不上。定位到具體是 prev 更新時(shí)機(jī)錯(cuò)了——在某些 j 位置它拿了本行的新值當(dāng)左上角導(dǎo)致個(gè)別格子偏小。對拍這種暴力版 vs 優(yōu)化版的交叉驗(yàn)證是我認(rèn)為性價(jià)比最高的調(diào)試手段強(qiáng)烈建議每個(gè)做 DP 優(yōu)化的人都備一套。最后分享一個(gè)記憶訣竅。狀態(tài)轉(zhuǎn)移的三個(gè)方向我用一句話記左上管改上管刪左管插。左上角 dp[i-1][j-1] 對應(yīng)把當(dāng)前這對字符替換掉上面 dp[i-1][j] 對應(yīng)刪掉 A 的一個(gè)字符左邊 dp[i][j-1] 對應(yīng)在 A 里插一個(gè)字符補(bǔ)齊 B。順著這句話不用死記方程也能在考場上現(xiàn)推出來。至于邊界還是那句老話——第一行是第一串空串往 B 里插第一列是 A 往空串里刪值就是下標(biāo)本身。把這兩句口訣內(nèi)化這道 1276 以及它的一大票親戚題基本就穩(wěn)了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
九九九九久久久| 激情情色五月天| 99国产精品视频尤物| 91N综合网在线| 日韩成人综合网| 欧美日韩国产成人高清| 国模91| 亚码激情| 久久女人一区二区三区| 无码av永久免费专区网站| 不卡在线观看视频| 亚州精品人妻一二三区| 久久亚洲熟妇在线视频| 国产精品久久久视频| 国产福利小视频高清在线观看| 老熟妇乱轮| 果冻传媒A片一二三区| 国产怡红院| 日韩探花精品在线视频| 日本潮催一卡操| 欧美色91| 91美女高潮| 国产青视频| 午夜精品一区二区三区三上悠亚| 久热色情精品| 超碰97在线中文| 丰满搜索结果 -第18页- 久久高清无码| 欧美性爱在线无码| 国产第25页在线观看| 久久精品国产亚洲妲己影视| 精品三级在线专区| 日本熟女不卡视频| 久久久性| 国产传媒操逼视频| 欧美视频一区二区在线| 青青操轻轻| 国产家庭乱伦性爱视频| 欧美偷拍区| 国产捆绑一区| 乱伦a片视频| 国产精品麻豆视频网站| 日本Xx性爱| 国产高清MV操逼视频| 91人妻精华帖| 夜夜爽77777| 熟女性视频| 国产自偷| 超碰色大香蕉| 91丝袜在线观看| 亚洲黑人在线| 国产精品久久久久亚洲av| 中文字幕一区二区日韩网| 韩国三级一线观看久| 亚洲综合999| 另类欧美色| 一起草视频在线| 韩国三级色呦呦| 天天日天天干天天操| 欧美人人操人人插| 色小视频蜜乳| 国产精品夜夜| 超清中文乱码字幕| 99婷婷| 99热国产| 西西美女视频网| 欧美性爱网97| 欧洲色综合| 亚洲天堂男人网| 久艾草在线精品视频在线观看| 国产91福利小视频在线观看| 亚洲成人在线高清| 久99视频| 熟妇熟女一区二三区| 超碰地址97| 精品人妻一区二区三区蜜桃视频| 国产久久久久久| 777琪琪午夜免费A片| 鸡巴插逼视频| 亚洲棕合电彰| 18精品一二区| 国产精品区在线12p| 亚洲图片欧洲图片aⅴ| 免费黄色片子| 偷拍2020| 97免费视频在线观看| 91人妻精华帖| 毛片视频白嫩| 日本一卡二区在线| 韩国一级AAA| 玖玖97综合 | 无码WWW免费视频网站| 色情五月综合婷婷| 韩国国产欧美情侣视频在线| 国产午夜在线观看视频| 欧美少妇一区二区三区| 欧美色另类| 神马久久久久久伦理片| 小草精彩毛片| 久久久久9999| www.婷婷五月天| 少好三P| 无码不卡亚洲成?人片| 操逼逼中文字幕| 亚洲精品天天影视综合网| 国产白丝网站| 亚洲精品久久久久久久久豆丁网| 久久这里只有精品9| 精品性爱一区二区| 亚洲一区制服诱惑| 国产成人+综合亚洲+天堂| 老女人碰碰在线碰碰视频| 97婷婷色| 无码精品啪啪啪一区二区三区三州| 亚洲欧美国产中文视频| 小草精彩毛片| 亚洲网站一区二区在线| 91精品国久久久久久无码| 26uuu最新| 视频二区美腿丝袜制服人妻欧美| 大鸡巴久久| 国产亚洲精品第一最新| 欧美少妇高潮视频| 久久久久成人蜜桃精品| 国产精品操| 偷拍 精品 另类 四区| 怡红院成人视频| 激情干在线| 97天天在线| 99久久婷婷丁香| 精品一久久久| 激情五月天色色| 日韩精品-原创伙伴| 成人AV在线电影| 中文字幕无码不卡啪啪| 超踫中文字幕| 乱伦熟女论坛| 超碰97欧美日韩| 亚洲最大AV网| 精品九九九| 丰满人妻一区二区三区免费,| 天天干嫩逼网| 亚洲精品欧美专业| 鸡巴插逼视频| 久久久少妇| 欧亚第一综合网| 国产一区二区三区久久久精品| 97视频www| 久久婷婷色| 一区二区三| 97超碰免费人人性爱| 国产高清成人mv在线观看| 国产97av| 色香伊人| 久久久久密| 人妻中文字幕精品无码| 人乳av| 91啪啪| 免费αV在线视频| 日欧毛片久久| 色哟哟的毛片| 新久久AV| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 91丝袜激情在线| 亚洲成人免费在线| 高潮毛片无遮挡高清免费| 久久久久久久综合,国产| 亚洲欧洲小说图片视频| aaaa少妇高潮大片| 操逼操2| 国偷自 一区二区| 亚洲 日本 一 二 三| 国产精品高清2021在线| 国产精品伦理| 欧美天堂第二区| 五月婷婷色色| 浪人综合网| 97久久超碰| 蜜臀一二三区| 国产熟女精品区| 久久婷五月天| 激情看片网站| 色综合网1| 一类无码操逼视频| 国产家庭乱伦性爱视频| 可免费观看的av毛片中日美韩| 青青草中日韩在线| 香港日本韩国人妇99www.wccm20| 男人的天堂2019AV| 1769精品一区二区三区| 欧美亚洲色图另类国产| 久久久久人妻二区精品叶可怜| 欧洲亚洲人妻无码久久三区四区| 国产精品一级二级在线| 人人妻人人色| 黄网站黄视频网站进入口| 亚洲国男人的天堂| 五月婷婷丁香| 久久久久精| 激情视频网址| 欧美不卡在线美女| 日韩美女久久一区二区三区| 欧美久久久15P| 麻豆天美国美国产AV| 亚洲色欲天天人妻无码系列专区| 精品v日韩欧美国产| 精品成人亚洲午夜电影| 正在播放国产精品一区| 91av一区二区在线观看| 人人操人人搞人人草| 日韩激情毛片一级久久久| 久久永久无码人妻视频| 在线午夜成人无码视频| 99re免费视频精品全部| 日韩人妻一区二区| 男女激烈网站最新| 天天做日日爱夜夜爽| 精品一区二区成人| 91无码中出人妻视频| 激情AV| 久久97| 在线 制服丝袜中出 人妻| 婷婷中文字幕| 97干色天堂| 99久久综合| 亚洲激情天堂网| 久久久99999久网站| 亚洲精品一区二区免费在线观看| 天天躁狠狠躁av| 久久久天美| 上床啊啊啊| 久久久久久久唑| 天天干18禁| 日本淫乱女一区二区三区视频| 久一区久久蜜桃| 天堂v无码免费视频| 国产精品内射婷婷一级二| 亚洲一区日韩精品中文字幕| 粉嫩av一区二区三区四季| 少妇色综合| 久久久无码精品人妻二区| 偷偷人人精品女女久久| 两女互慰AV高潮喷水在线观看| 2019久久久久久久久福利| 很很热性爱视频| 亚洲综合另类| 91激情网| 国产精品视频内谢女人| 日本色色色视频| 91中文在线| 97欧美精品综合| 在线 欧美 亚洲| 神马久久午夜| α√在线| 久久久久久久久久久久黄色| av影片在线观看不卡| 成人七区| 亚洲情色1区| 欧美春色| 国产日韩欧美亚洲精品95| 国产精品色| 色与欲影视| www成人啪啪18秘 免费| 91人妻视频| 人妻人久久精品中文字幕| 男人的天堂 在线一区| 免费看黄视频亚洲网站| 国产九九久久久精品| 福利大香蕉| 日本一道在线播放高清| 五月丁香婷婷综合网| 色情亚洲日本成人| 久操免费在线| 操逼日韩无码| 老熟女综合| 日韩一级成人毛片免费观看 | 日本操逼视频导航| 夜夜騷av、一區二區| 久久老熟女| 强奸乱伦亚洲第一页| 亚洲天堂区| 舔人妻中文免费视频| 日韩兔费看黄片| 亚洲啪啪性视频| 亚洲综合骚逼| 嗯啊抽插大香蕉网页| 欧美精品在线观看| 久久综合九色综合欧洲98| 精品久久久亚洲AV成人网站| 大香蕉琪琪日本女优不卡| av黄图片在线观看| 国产自产91区13区| 久久久久久精| 久久久久久午夜男人的天堂| 99re视频在线播放青草| 91九色首页| 亚洲极品| 天天躁日日躁AAAXX| 91亚洲欧美综合高清在线| 人人艹亚洲| 熟女天天干| 国产捆绑一区| 人人色人人射人人妻| 欧美综合自拍| 亚洲91网。| av在线播放国产一区| 高树玛利亚无码流出| 1000部熟女视频在线观看| 亚洲不卡不卡中文字幕不卡 | 97在线亚洲| 亚洲福利中文字幕在线| 日韩BBN| 久久免费精彩视频| 在线视频免费观看午夜| 亚洲青青草| 韩国一级做A片免费的| 国产丁香精品露脸视频| 亚洲日产专区| 色综合天天| 婷婷10月天青娱乐| 日韩中文字幕av在线播放| 国产日韩在线播放av| 日韩精品影视| juliaann精品熟女一区| 久热香蕉精品在线视频| 亚洲久久久| 色哟哟-国产专区| 99这里只有精品国产| 97欧美色综合| 特级大荫道BBwBBwBBW| 国产v片在线免费观看| 91爰爱欧美| 精品人人插人人操| 欧美成熟性爱精品| 精品久久97| 国产天天骚| 久干9操| 欧美色图色综合| 久艹99| 天美国产三级传媒| 黄片直播三级黄片两女一男| 国产精品96久久久久久| 少妇第一页| 亚洲熟妇自偷自拍另欧美| 人人干人人操人人爱| 热久久无毒不卡| 精品久久久av| 91精品久久综合熟女| 屁股久久久久久| 欧美日韩人妻婷婷一区| 爱爱动态120秒| 久操网址| а√天堂资源官网在线资源| 久久99干一本高清| 96国产污污污丝袜| 国产AV人人 夜夜人人澡| 97色婷婷| 妺妺跟我一起洗澡没忍住| 亚洲最新Av| 校园春色 亚洲| 热热热热日日漂亮永久永久国产日| 99碰碰| 欧美十八禁导航成人| 91狠狠| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美色图私拍91| 激情五月综合网| 中文字幕日韩人妻视频一区二区三区 | 精人妻无码一区二区三区伊人直播 | 国产视频小说| 天天插夜夜爽| 91丝袜激情在线| 精品国产一区二区久久| 屌色在线97视频| 色综合色欲色综合色综合色综合| 久久‘黄片视频| 亚州一区二区成人片免费| 精品久久久av无码免费| 乱欲视频| 国产激情视频一区区三区| 人妻熟女一区二区在线视频| 抽插一区二区视频| 中文字幕黄色一起草| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 国产精品视频自拍在线| 免费av在线播放二区| 亚洲无992tv| 久久免费少妇| 国产无码三级视频在线观看| 中文字幕在线免费观看2| 97爱亚洲| 乱伦一二三| 国产精品又黄又猛又粗| 自拍偷拍第26| 先锋激情∨在线视频播放| 人人做天天爱| 国产精品激情久久久久久久| 肉嘟嘟www视频在线观看高清| 操逼逼中文字幕| 九色在线熟女国产黑人| 婷婷五月天小说| 91婷婷伊人狠人| 插入综合网| 精品久久久av| 伦理弟一页| 九九九九97| 久热网| 综合网91| 欧美性爱无码一区二区三区| 肉嘟嘟www视频在线观看高清| 91人人臊| 麻豆天美电影一区二区| 久9久9精品| 97免费视频在线观看视频| 久久激情视频| 97干在线| 手机在线中文字幕国产| 久久久人妻| 狼人综合婷婷激情四射 | 精品天堂| 国产精品无码久久久久2025| 成人丁香五月| 干b在线性社区| 亚洲综合69| 亚洲小说视频| 在线无码网站| 99这里有精品| 久欲AV| 操逼操2| 欧美成人性爱视频免费观看 | 男人的天堂久久| 青娱乐淫乱1314| 午夜欧美女人操逼| 中文字幕乱码人妻一区二区三区,99精品 | 3P丝袜熟女 色综合| 香港澳门日本三级网站| 亚洲人妻AV| 绑缚麻绳人妻寝取完整版| 久久久天堂| 久久久久亚洲三级电影| 99在线精品视频| 天天影视射综合网| 清纯唯美亚洲综合| 亚洲黑人在线| 躁躁日曰躁2020| www.色婷婷色综合| AV丝袜少妇| 欧美精品一二三| 岛国激情视频在线观看| 热久久精品| 97人人夜| 国产综合网站在线播放| 天天日日本| 深夜视频| 激情五月婷婷| 日韩内| 日日噜噜夜夜狠狠视频无| 99热这里只有精| 97超碰精品图片| 久操网线| 91色色综合| 岛国A V在线免费看| 五月丁香啪啪| 国产精品日日摸天天碰| 人妻人人操| 国产蜜臀在线| 国产视频不卡在线观看| 黄色一区三区| 成人日本视频人妻在线| 亚洲伊人久久精品影院| 2018天天干在线视频| 欧美精品91| 97超碰磁| 久神马| 人人操人人插人www| 美女91在线观看| 免费看黄片现成| 精品一区二区三区最新| 人人操人人插 - 百度 - 百度| 久久熟女人| 肏逼视频日本| 色欲人妻一区二区在线| 婷婷午夜成人色中色| 校园春色宗合网| 国产综合永久精品日韩鬼片| 99re综合伊人| 狠狠色色| 亚洲色综合| 亚洲AO在线| 最近2018中文字幕在线高清第一页| 在线啊啊啊啊| 熟女乱伦A| 视频在线中文字幕| 99这里有精品视频| 伊人AAA| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 日韩一级性爱无码| 亚精品无码毛片一区二区三区| 91在线视频免费播放| 色男人色天堂东京热| 性爱乱伦网址| 久久久久99999| 九九热超碰97亚洲最新香蕉| 麻花传媒免费网站在线观看| 麻豆天天躁天天揉揉AV| 久久9久9久99久9久9| 免费αV在线视频| 亚洲高清男人天堂| 亚洲图片欧美91N| 国产精品原创巨作?v网站| 精品久久9| 婷婷四五区| 色黄色美女大长腿午夜视频| 97亚洲精品超碰| 97资源欧美| 探花激情视频| 超碰免费人妻人人| 淫纸中9区| 九月AV| 久久露脸国产老熟女| 国产 日韩,欧美 自拍| 色爽——AV| 亚洲 欧美 91| 操逼网站地址| 国产人妖的免费的视频| 97欧美综合| 久久久久久久久国产| 久久9亚洲| 久久艹逼视频| 精品人妻一区| 51久久夜色精品国产麻豆| 亚洲情色 自拍| 国产亚洲福利第一页丝袜| 日韩欧美天天爽爽爽天天爽爽| 国产亚洲人妻综合日韩 久久| 金莲网址| 日韩99精品视频综合区| 中文字幕99999| 综合网亚洲1| 97视频620| 欧美久久九九| 国产亚洲99久久精品| 再深点灬舒服灬太大了添视频 | 一区在线观看中文字幕| 无码WWW免费视频网站| 欧美性爽xyxOOOO| 欧美成人精品欧美一级乱黄一区二…| 91精品久久久久久久久久| 熟女中出视频| 女同性恋一区二区三区精品视频| 人人色97| 九九在线精品| 少妇超碰在线| 亚洲精品99| 五月婷婷基地| 激情综合五月| 2020中文字幕| 欧美在线官网| 999久久久九| 蜜臀久久99精品久久久久久久久| 色99视频| 思思热在线视频精品| 国产又色又爽又舒服的三级视频| 亚洲 欧美 手机在线观看| 太久视频| 91精品无码人妻系列| 国产女人操逼视频| 亚洲成?V人片在线观看福利| 五月丁香六月婷综合成人综合| 91精品无码人妻系列| 亚洲欧洲网站免费观看| 国产精品亚洲免费| 色九九九九久| 亚州操操穴网| 5252色欧美在线| 伊人伊人LD| 综合激情一一91| 熟妇女伦乱视频视频| 亚91网| 日韩福利电影网| 日韩字幕一区| 久久夜黄色无码A级大片| 午夜寂寞欧美| 欧美后进式| 国产精品久久久久绯色| av东京热男人的天堂| 老鸭窝在线视频播放| 亚洲欧美伦综合| 国内毛片欧美香蕉精品| 在线一道啪| 九九热九九| 欧美不卡在线美女| 乱码人妻一区二区三区| 亚洲男人在线观看天堂| 久久精品午夜国产亚洲AV无码| 台湾成人无码AV| 欧美一区二区亚洲天堂| 91在线美女| 男人天堂 天天射| 校园春色AV天堂| 亚洲日韩视频二区| 狠狠色综合网| 国产二区三区粉嫩在线| 亚洲 日本 不卡| 一级成人性爱| 97天堂| 亚州久久9| 天堂亚洲欧美| 中文字幕乱在线伦视频中文字幕乱码在线 | 亚洲另类久操网| 9999亚洲电影| 快灬快灬 一下爽蜜桃在线观看| 亚洲影院无码在线| 一区二区娱乐网站| 日本欧美色| 九九九九精| 亚洲第一免费视频| 91九九九馒头| 国产超碰97| 国产成人拍国产亚洲精品| 久久性爱城| 男人的天堂欧美| 熟女熟妇一区二区三四区| 久久青青草原免费视频| 91人妻丝袜无码| 情色图区| 亚欧性爱ab| 美女91在线观看| 久操视频在线观看| 99自拍视频在线| 亚洲一二三四区在线免费看视频| 国产日韩精品suv| 香蕉久久国产AV一区二区| 久久m| 高清国产无码av| 亚洲不卡AV在线| 成人开心网在线视频| 草草影院日本第一页| 91人妻丝袜无码| 亚洲熟女诱惑| 亚洲欧美国产日本一区二区三区| 久久久一区二区| 性暴力欧美猛交在线直播| 日本亚洲vr欧美不卡高清专区| AV中文字幕三四五| 久久精品国产精品| 国产精品熟女九色九色蜜臀| 超碰午夜在线| 女性喷水高潮在线观看| 国产suv精品一区二区四区999| 日逼97| 婷婷久草| 欧美日韩资源| 欧美亚洲国内自拍| 在线观看中文字幕| 台湾佬激情综合| 国产在线播放成人免费| 日韩女优中文字幕| 国产亚洲色停停久久99精品91| 嗯嗯嗯啊啊啊在线免费观看| 夜色综合| 日韩少妇丰满亚洲| 操逼天美3区| 热久日综合| 综合免费无码中文| 日韩丨制服丨中文|在线| 久久99午夜精品一区人妻| 少妇蹲下买菜露大唇0| 殴美大黄片| 一二三区精品视频| 欧美大香蕉在线观看| 大二网站亚洲| 欧美色色人| 亚洲欧美国产日本一区二区三区| 亚洲人妻五月丁香婷婷| 人妻夜夜爽天天爽麻豆三区网站 | 美女极品一区二区三区| 九九九久| 中亚av| 日韩中文字幕视频| 素人伊尹大香蕉免费下载视频| 婷婷丁香五月激情啪啪| 欧美色女人| 1000午夜黄色| 亚洲精品亚洲人成人网| 97精品久久| 亚洲视频二区| 伊人婷婷五月天| 黄色免费网| 狠狠爱AV| 91原创在线观看| 亚洲精品一二区| 99re这里只有精品2| 亚洲欧美校园另类春色| 亚洲欧美日韩二区视频| 美女t无毒不卡不卡| 99999久久久久9国产精品| 一线黄色免费性爱片| 欧美92| 闷骚老熟女15P| 欧美疯狂做爰xxxx| 天天做天天爱夜夜爽毛片试看| 青青青草原| 欧美最婬乱婬爆婬性视频 | 无码人妻精品一区二区三区99不卡| 国产99999久久精品| 啊啊啊啊啊在线观看网址| 亚洲成人无码影院| 成人五月天丁香激情综合| 黑人干亚洲| 欧美色图私拍91| 综合激情五月丁香| 一级aaaaa欧美中文字幕录像片| 91国模| 亚洲情色综合网| 青青草吊丝| 亚洲第一综合| 国产又操| 日本操逼二区| 欧美日韩大香蕉| AV女优男人的天堂| 亚洲AV不卡在线观看| AV天堂男人的天堂| 97精品国产97久久久久久免费| aaaa少妇高潮大片| 欧美日韩大黄片| 熟女探花啪啪| 777超碰| 婷婷人妻激情| 成人夜夜| 99精品高潮| 大香蕉综合久久| 97操97色| 大香蕉伊人一区在线观看| 色婷婷激情| 任你爽视频| 自偷自拍的亚洲视频| 福利视频一区二区微拍| 很黄很色的视频在线观看| 97超碰磁| 无码免费在线观看黄色片| 日韩亚洲欧美中文字幕| 92久久| 国产精品96久久久久久| 91网站18禁| 中文字幕乱码在线| 色噜噜国产精品视频一区二区| 天天天干977| AV色女综合| 91精品国产91熟女| 亚洲色电影在线| 懂色Av一区二区三区| 春色91| 国产精品视频在线观看| 九色黄站| 青娱乐淫乱1314| 日本中文字幕不卡视频| 收看日本人日bb| 激情 欧美 亚洲 小说| 中文字幕乱在线伦视频中文字幕乱码在线| 成人av在线播放| 91在线视频免费播放| 国产一区二区精品久久99| 久久精品国产亚洲AV无码做| 天天干夜夜操网| 五月丁香婷婷综合| 精品少妇一区二区三区免费观看| 亚洲熟女国产综合另类| 91网亚洲| 亚洲欧美综合网站| 国产在线激情| 亚洲婷婷综合网| 思思热免费在线视频| 乱伦日本色图AⅤ| 九月婷婷久久| 国内精品不卡无毒99999| 丝袜综合| 超碰在线成人电影| 97干97色| 成人aⅴ一区二区三区| JULIA一区二区三区在线播放| 91碰碰| 97精品久久久久久久| 一区二区不卡免费| 欧美色图亚洲色| 亚洲 欧美 制服 另类 自拍| 久久伊人五月天| 成年男人的天堂| 少妇精品久久久八区九区| 美女啊啊啊啊啊| 欧美性爱无码一区二区三区| 日韩在线观看中文字幕视频| 欧美欲色| 欧美激情 亚洲色图| 2025年A片视频精品| 破苞ⅩXXX性无码动漫无码| 四虎永久在线精品免费网址 | 日韩激情中文字幕有码| 久久久9视频| 麻豆天美AV传媒第一页| 亚洲网站一区二区在线| 看一级黄色视频| 黄网站黄视频网站进入口 | 人妻AV 中文字幕的| 伊人久久亚洲中文字幕不卡| 久久久久久9| 欧美丰满熟妇XXXX性ppX人交| 激情图片亚洲色图| 男人综合网| 国产精品宅男免费| 老师充足的奶水小说| 欧美亚洲今日在线| 亚洲一卡2卡3卡4卡乱码网站 | 国产又黄又粗的视频| 伊人AAA| 97久久国产亚洲精品超碰热| 久久久久久网址| 日本狠狠干| 丁香7月婷婷| 欧亚性爱在线视频| 厕所偷拍在线| 成人久久久| 色区久久| 人妖欧美一区二区| 乱欲一区二区| 99re这里| 少妇人妻好深太紧了vr91| 97爱欧美| 亚欧高清| 亚州操操穴网| 极品另类| 麻豆 欧美 日韩| 婷婷色香伊人| 欧美躁死她一区二区| 99精品综合久久久久五月天| 亚洲成人福利电影免费| 欧美综合 站| 午夜120视频在线观看| 日日夜夜草草草| 岛国激情视频在线观看| 丰满精品人妻少妇久久字幕| 国产美女在线精品免费看| 综合国产97| 亚洲中文字幕在现观看| 97精品一二区| 午夜性生活av免费在线看| 亚洲精品久久久久久久久豆丁网| 97综合国产| 97视频在线免费看| 翔田千里无码一区| 欧美性爱一区| 日韩精品中文字幕一| 99热日| JULIA一区二区三区在线播放| 久久久久极品| 婷婷亚洲综合| 91美女在线观看| 99999精品成人| 人人操人人操人人人操| 我中文字幕6区| 久久草在线综合视频| 男人天堂新在线| 欧美精品另类人妖xxxx| 国产女s强制榨精视频| 久久大陆| 婷婷五月天av| 日韩少妇无码| 男人天堂综合| 欧美在线播放aaaa| 91精片| 啊啊啊好大好湿| 欧亚在线视频| 人人妻人人玩人人澡人人爽| 天天弄欧美| a天堂视频| 久久激情婷婷| 18禁久极品美女久久哦哟呀!| 免费看欧美美女黄色大片| 亚洲天堂2020| 亚洲欧洲日产国产综合网| 亚洲 欧美日韩 另类| 97这里只有精品| 久久亚码| 999久久久精品国产| 在线观看无码三级少妇| 亚洲高清欧美总合| 在线视频五十市| 国产精品成人在线| {男男暴菊gay无套网站| 四虎免费在线播放| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 亚州欧美综合| 欧美日韩性感| 久久九九国产精品| 久操电影| 麻豆色99999| 蜜臀99999| 久青草影院| 精品中文字幕一区二区l - 百度| 亚洲一二三四区| 亚洲天堂电影网| 亚洲一二三精品久久网| 免费久久精品麻豆一区二区av| 狠狠操,使劲操| 91精品人妻一品二品三品| 欧美中字二区| 日韩97视频!在线| 五月婷婷基地| 亚洲成熟国产精品美女| 国产综合在线视频网站| 日韩大香蕉| 综合少妇网| 久久6热精品99视频| 色老汉色| 青草青青久久久久久国产| 国模吧 一区二区三区| 欧美一区二区三区另类精品| 人妻天天爽天天爽三区| 人妻91少妇| 人人操人人精品影片| 欧亚成人在线视频| 男人的天堂欧美| 美女露胸露尿口| 色婷婷电影网| 久久性爱城| 国产亚洲精品玖玖玖在线观看| 亚洲av无码成电影在线播放| 成人线上超碰| 91殴美| www.91视频网| 日韩91网| 国产乱码久久久| 美女骚尻视频| 999九九九九国产动| 色超碰综合| 欧美日韩国产电影| 91偷拍欧美亚洲| 97视频在线观看播放与子乱对白在线……| www.天天干| 91丨九色丨熟女高潮| www久久99| 91麻豆va国产精品| 久久98| 涩五月婷婷| 中文字幕高清20页视频| 五月婷视频| 亚洲天堂综合AV| 国产伦精品一区二区三区视频女| 26uuu国产| av天堂影视中文在字幕在线中文| 伊人AAA| 亚洲最大91网| 中文字幕乱碼在线| 国产乱人妻精品入口| 污污污8888| 久久久精品一区二区| 玖玖爱综合网| 巨乳特殊服务按摩| v91av| 国产乱伦搜索结果91P| 国产传媒午夜理伦精品| 操逼逼中文字幕| 国产精品无码AV网站| 丁香六月婷婷| 9/A片| 麻豆成人av| 桑老女人九区| 东京热毛片177b2viP| 免费a级毛片av无码久久精品中文字幕| 欧美日韩另类在线播放| 人人噜夜夜操| 欧洲大香蕉| 国产熟女无套内射| 亚洲性爱成人| 国产强奸超碰AV| 天天干天天干天天干| 色婷婷在线视频精品导航| 精品无码久久久久| 在线看污网站| 国产探花日韩援交| 国产精选三级在线观看| 欧美熟妇乱码在线一区| 麻豆精品三区视频| 天天色欧美| 伊人精品久久网站| a网站免费观看| 国产91精品久久久久久久网曝门| 色哟哟精品1精品2| 欧美欧美啪啪视频| 久草免费在线一区二区| 欧美精品成人亚洲| 欧美综合网1| 亚洲欧美日韩激情不卡| 日韩欧美tv一区二区在线观看| 欧美日韩91| 成人片视频| 清纯唯美亚洲综合| 欧美成人性爱视频免费观看 | 啪啪啪综合网| 亚洲成人一区二区精品| 成人AV素股で擦久久| 人妻大香蕉| 国产一级137片内射麻豆| 婷婷五月综合激情| 久久婷婷亚洲欧| 天天综合网91| 国内三级自拍小视频在线观看| 中文乱码99| 亚洲高清欧美总合| 黄色免费网页无码| 日韩欧美被操黄免费观看| www欧美91| 99热只有这里有精品| 黑人中出21连凳花野真衣| 嗯嗯不要视频| 手机看片1024你懂的国产| 人妻社区男人天堂| 亚洲精品久久久久毛片A片拉屎 | 97精品久久久久久久| 国产97在线 | 亚洲| 探花一区在线| 欧美亚洲宗合色性图| 亚洲一区二区三区在线激情| 婷婷五月花| 久久久三区二区一区| 成人三一级一片aaa| 国产精品。| 成人性爱免费播放| 艳美熟妇先锋一二三区| 99re视频在线播放青草| 国产AV高清AV无码| AV色图| 无色无码| 欧美九一精品久久久熟妇| 在线欧美69V免费观看视频| 青青操在线亚洲视频观看欧美在线 | 精品久久久久久久| 午夜人妻精品综合在线| 人妻熟女一区二区三区视频| 日韩精品一区二区三区色欲| 亚州图片第一页| 九九探花视频在线观看| 尤物视频偷拍免费| wwwcaobibi| 亚洲图片视频小说| 九九人人操| 日本一区二区三区四区五区六区七区八区九区| 日本一级黄色电影| 国产在线激情| 亚洲男人的天堂亚洲| 97在线免费看视频| 96久久科窝| 九九视频黄色片| 色九九九九| 综合久久六月久久婷婷| 日韩精彩视频| 五月天社区| 欧美综合自拍| 久偷拍| 欧美黄片欧美黄片xxx| 国产92麻豆天美精品色欲5| 欧美在线干| 丁香五月婷婷基地| 97啪啪| 97超碰免费人人性爱| 欧美十八禁导航成人| 欧美 日韩第一性色| 国产精品色色| 青娱乐999| 天天综合网~91入口| 欧亚性爱视频免费看| 亚洲欧洲综合| 蜜臀亚洲中文| 久久久久久国产精品免费网站| 日本久久久精品电影| 日本在线一二| 久草尤物| 91国产伊人大香蕉| av天堂影视中文在字幕在线中文| 韩国三级一线观看久| 成人天天爽| 天天综合网~69| 看免费的黄片| 黄片免费视频2019| 日韩熟妇二区| 日本精品中文字幕视频| 91少妇通奸网站| 久久久一级| 亚洲色图尤物视频| 男生通女生屁股| 人人澡综合涩| 久99热| 性videos欧美熟妇hdx| 久久九九精品一区二区 | 久久超碰av在线| 久久极品一区二区| 3d成人精品一区二区| 综合久久9| 后入福利| 久久偷拍人| 99热网站| 性久久| 亚洲伊人成综合成人网| 夜夜国自区| a人欧美综合天堂麻豆| 国产激情久久| 日韩性爱免费视频在线网站| 欧美人体性爱互联网第一页婷婷日本| 俞拍自拍| 一区二区精品更新提醒| 大香樵伊人网| 白嫩国模丰满一二三区| A级毛片在线看免费| 伊人九九| 97超色| 欧美色日本| 国产原创精品| 91久久婷婷| 国产精品无码在线| 青青免费在线视频一区| 欧美天天射| 欧美图片校园春色| 97精品在线| 牛牛久久国产精品视频一二三| 熟女人妻久久中文字幕一二区| 亚洲色图亚洲无码强奸乱伦| 樱花蜜乳av| 超碰在线人妻中文字幕| 97超碰香蕉| 大香久久| 久久精品无码熟妇一区二区三区视频导航 | 96精品在线| 色婷婷综合网站| 亚洲蜜桃V妇女| 国产精品美女久久久久AⅤ国产馆| 日本国产欧美一区三区二区| 97免费在线观看| 久久香蕉国产线看观看亚洲女人 | 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 伊人女女资源在线观看| 377p欧洲日本亚洲大胆| 国产精品视频自拍在线| 欧美日韩国产成人高清| 久久久97| 成人性爱免费播放| 91狠狠综| 黄片视频观看| 女性喷水高潮在线观看| 久久精品熟女亚洲AV麻豆软件| 日本506070| 综合另类| 无码一区免费在线不卡| 97精品一区二区视频| 亚洲一区在线观看欧洲| 国产91亚洲精品一区二区三区| 亚洲无码 国产无码| 亚洲一区中文精品| 国产精品视频自拍在线| 亚洲一级性爱视频免费看| 日韩国产乱子伦App| 女人喷水视频在线观看|