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

ARTICLE DETAIL

資訊詳情

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

藍(lán)橋杯算法題解:BFS狀態(tài)擴(kuò)展與二維前綴和優(yōu)化實(shí)戰(zhàn)

藍(lán)橋杯算法題解:BFS狀態(tài)擴(kuò)展與二維前綴和優(yōu)化實(shí)戰(zhàn) 1. 從“大胖子”到迷宮尋路一個(gè)算法題的場景化拆解看到“大胖子走迷宮”這個(gè)題目很多參加過藍(lán)橋杯或者準(zhǔn)備算法競賽的朋友可能會(huì)心一笑。這可不是一個(gè)簡單的迷宮尋路問題它巧妙地將“角色體積”和“時(shí)間”這兩個(gè)維度引入了傳統(tǒng)的BFS廣度優(yōu)先搜索框架。我當(dāng)年第一次遇到這類變種題時(shí)也卡了挺久核心難點(diǎn)就在于如何把“胖子會(huì)隨時(shí)間變瘦”這個(gè)動(dòng)態(tài)規(guī)則無縫整合到每一步的狀態(tài)判斷里。今天我們就來徹底拆解這道來自藍(lán)橋杯第十屆國賽Java B組的真題不僅講清楚怎么做更重點(diǎn)剖析為什么這么做以及在實(shí)際編碼中那些容易讓人栽跟頭的細(xì)節(jié)。這道題的本質(zhì)是一個(gè)帶有狀態(tài)擴(kuò)展的圖搜索問題。迷宮是靜態(tài)的但我們的主角“大胖子”是動(dòng)態(tài)的他在某些時(shí)刻占據(jù)多個(gè)格子比如3x3或5x5的范圍并且這個(gè)占據(jù)范圍會(huì)隨著時(shí)間流逝而縮小。這就意味著同一個(gè)坐標(biāo)點(diǎn)(x, y)在不同時(shí)間t對于胖子而言的可達(dá)性是完全不同的。傳統(tǒng)的BFS記錄(x, y)作為狀態(tài)已經(jīng)不夠用了我們必須將時(shí)間t也作為狀態(tài)的一部分形成三維狀態(tài)(x, y, t)。同時(shí)胖子的“體型”決定了他在移動(dòng)時(shí)不僅目標(biāo)點(diǎn)要為空地他身體所覆蓋的所有格子都必須同時(shí)為空地。理解并建模好這個(gè)“體型覆蓋”邏輯是解題的第一道坎。2. 問題定義與核心狀態(tài)建模我們先拋開代碼用最直白的話把題目規(guī)則翻譯一遍。假設(shè)有一個(gè)N x N的網(wǎng)格迷宮用字符矩陣表示‘.’代表空地‘*’代表障礙物。有一個(gè)“大胖子”初始位于(sx, sy)他的目標(biāo)是走到(ex, ey)。胖子的體型隨時(shí)間變化規(guī)則通常如下具體參數(shù)需以題目描述為準(zhǔn)這里是常見設(shè)定在時(shí)間t k時(shí)胖子是一個(gè)以自身為中心、邊長為5的正方形即占據(jù)5x5的格子區(qū)域。在時(shí)間k t 2k時(shí)胖子縮小為以自身為中心、邊長為3的正方形即占據(jù)3x3的格子區(qū)域。在時(shí)間t 2k時(shí)胖子恢復(fù)為正常體型只占據(jù)自身所在的1x1格子。這里k是一個(gè)給定的常數(shù)。胖子可以執(zhí)行兩種操作移動(dòng)向上、下、左、右四個(gè)方向移動(dòng)一格。移動(dòng)的前提是在移動(dòng)完成的那個(gè)時(shí)刻胖子體型所覆蓋的所有格子都必須是空地即‘.’且不能出界。停留在原地等待一個(gè)單位時(shí)間。胖子可以選擇不行走等待自己變瘦。我們需要求解的是胖子從起點(diǎn)到終點(diǎn)的最短時(shí)間。顯然停留操作的存在使得“最短時(shí)間”不一定對應(yīng)“最少步數(shù)”因?yàn)橛袝r(shí)等待變瘦后再走反而比硬闖更省時(shí)。2.1 為什么是BFS以及狀態(tài)維度的擴(kuò)展求最短時(shí)間在無權(quán)圖每次移動(dòng)或停留代價(jià)為1中BFS是天然的選擇。但傳統(tǒng)迷宮BFS的狀態(tài)是(x, y)用一個(gè)二維數(shù)組vis[x][y]記錄是否訪問過。在這里行不通了因?yàn)?x, y)點(diǎn)在不同時(shí)間t的可訪問性不同。舉個(gè)例子起點(diǎn)旁邊緊挨著一個(gè)障礙物。當(dāng)胖子是5x5體型時(shí)他的身體會(huì)覆蓋到那個(gè)障礙物因此他無法移動(dòng)或停留在起點(diǎn)如果起點(diǎn)區(qū)域本身有障礙甚至無法開始。他必須等待時(shí)間t增加到k體型變?yōu)?x3后如果3x3區(qū)域不包含障礙他才能開始移動(dòng)。如果3x3區(qū)域還包含障礙則需要等到t 2k變?yōu)?x1。因此我們必須將狀態(tài)定義為(x, y, t)。訪問標(biāo)記數(shù)組也需要升維vis[x][y][t]這里有個(gè)問題時(shí)間t可能很大我們無法開一個(gè)三維數(shù)組。但仔細(xì)分析時(shí)間維度存在一個(gè)“穩(wěn)態(tài)”當(dāng)t 2k后胖子的體型不再變化始終為1x1。此后的問題就退化成了標(biāo)準(zhǔn)的迷宮BFS。所以我們只需要關(guān)心從t0到t2k這個(gè)動(dòng)態(tài)變化的過程。對于t 2k的狀態(tài)我們可以用一個(gè)統(tǒng)一的“正常體型”狀態(tài)來處理。實(shí)際上更常見的做法是不顯式存儲(chǔ)t而是將“體型階段”作為狀態(tài)的一部分。定義狀態(tài)為(x, y, stage)其中stage表示當(dāng)前的體型階段stage 0: 體型為5x5對應(yīng)t kstage 1: 體型為3x3對應(yīng)k t 2kstage 2: 體型為1x1對應(yīng)t 2k那么時(shí)間t如何體現(xiàn)它蘊(yùn)含在BFS的搜索層數(shù)即步數(shù)/時(shí)間中。當(dāng)我們從隊(duì)列中取出一個(gè)狀態(tài)(x, y, stage)時(shí)我們知道走到這個(gè)狀態(tài)所花費(fèi)的當(dāng)前時(shí)間curTime。根據(jù)curTime我們可以判斷這個(gè)狀態(tài)對應(yīng)的stage是否應(yīng)該更新。例如取出狀態(tài)時(shí)stage0但curTime k說明胖子已經(jīng)變瘦了我們應(yīng)該將stage更新為1再以此為基礎(chǔ)進(jìn)行后續(xù)動(dòng)作的判斷。關(guān)鍵理解stage是胖子在當(dāng)前時(shí)刻的體型屬性而BFS隊(duì)列中每個(gè)節(jié)點(diǎn)攜帶的時(shí)間curTime是用來決定stage是否需要進(jìn)階的依據(jù)。兩者共同定義了胖子在某一時(shí)空下的完整狀態(tài)。2.2 體型覆蓋檢測算法效率的關(guān)鍵無論是移動(dòng)還是停留都需要判斷“以(x,y)為中心根據(jù)當(dāng)前stage決定的體型范圍內(nèi)所有格子是否都是空地”。這是一個(gè)需要頻繁調(diào)用的操作。假設(shè)迷宮大小N最大為300最壞情況下BFS節(jié)點(diǎn)數(shù)可達(dá)N^2 * 3量級約27萬每次判斷如果都樸素地遍歷5x525個(gè)格子或3x39個(gè)格子計(jì)算量約數(shù)百萬次檢查尚可接受但顯然有優(yōu)化空間。優(yōu)化思路二維前綴和我們可以預(yù)處理一個(gè)二維前綴和數(shù)組sum[][]其中sum[i][j]表示從(1,1)到(i,j)這個(gè)矩形區(qū)域內(nèi)障礙物‘*’的個(gè)數(shù)。這樣對于任何以(cx, cy)為中心邊長為len奇數(shù)的正方形區(qū)域其障礙物總數(shù)可以通過前綴和O(1)計(jì)算得出障礙數(shù) sum[cxlen/2][cylen/2] - sum[cx-len/2-1][cylen/2] - sum[cxlen/2][cy-len/2-1] sum[cx-len/2-1][cy-len/2-1]如果這個(gè)“障礙數(shù)”為0說明該區(qū)域全是空地。在本題中我們只需要判斷“是否全為空地”因此等價(jià)于判斷該矩形區(qū)域的“障礙數(shù)”是否為0。預(yù)處理前綴和的時(shí)間復(fù)雜度為O(N^2)之后每次體型檢測都是O(1)極大地提升了效率。實(shí)操心得在算法競賽中遇到需要頻繁查詢子矩陣和的問題一定要立刻想到二維前綴和。它能把一個(gè)O(L^2)的操作降到O(1)是性價(jià)比極高的優(yōu)化。編碼時(shí)注意處理好邊界可以將迷宮數(shù)據(jù)從1開始存儲(chǔ)方便前綴和計(jì)算。3. BFS搜索框架的詳細(xì)實(shí)現(xiàn)有了以上的分析我們可以搭建BFS的搜索框架了。下面我將分步驟給出實(shí)現(xiàn)細(xì)節(jié)并解釋每一步的意圖。3.1 數(shù)據(jù)結(jié)構(gòu)與初始化import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { static int N, K; static char[][] maze; static int[][] sum; // 二維前綴和記錄障礙數(shù) // 方向數(shù)組 static int[] dx {-1, 1, 0, 0}; static int[] dy {0, 0, -1, 1}; // 訪問標(biāo)記第三維是體型階段 stage (0:5x5, 1:3x3, 2:1x1) static boolean[][][] vis; public static void main(String[] args) { Scanner sc new Scanner(System.in); N sc.nextInt(); K sc.nextInt(); maze new char[N2][N2]; // 從1開始索引方便處理 sum new int[N2][N2]; vis new boolean[N2][N2][3]; for (int i 1; i N; i) { String line sc.next(); for (int j 1; j N; j) { maze[i][j] line.charAt(j-1); // 計(jì)算前綴和如果是障礙物則值為1 int val (maze[i][j] *) ? 1 : 0; sum[i][j] sum[i-1][j] sum[i][j-1] - sum[i-1][j-1] val; } } // 假設(shè)起點(diǎn)為(1,1)終點(diǎn)為(N, N)具體以題目輸入為準(zhǔn) int ans bfs(1, 1, N, N); System.out.println(ans); } }說明數(shù)組開N2是為了方便處理邊界避免在判斷前綴和時(shí)頻繁檢查下標(biāo)是否小于1。vis[x][y][stage]記錄狀態(tài)(x, y, stage)是否已被訪問。注意同一個(gè)坐標(biāo)(x,y)在不同stage下被視為不同狀態(tài)。前綴和sum[i][j]的計(jì)算采用了動(dòng)態(tài)規(guī)劃的思想是這類問題的標(biāo)準(zhǔn)寫法。3.2 核心函數(shù)檢查當(dāng)前位置是否合法這是整個(gè)算法的基石需要根據(jù)當(dāng)前的stage體型來判斷胖子能否位于(x, y)點(diǎn)。// 判斷在階段stage下中心點(diǎn)在(cx, cy)的位置是否合法即體型覆蓋區(qū)域全為空地 static boolean check(int cx, int cy, int stage) { int len; // 體型的邊長 if (stage 0) len 5; else if (stage 1) len 3; else len 1; // stage 2 // 計(jì)算體型區(qū)域的左上角和右下角坐標(biāo) int half len / 2; // 對于5-2, 3-1, 1-0 int x1 cx - half; int y1 cy - half; int x2 cx half; int y2 cy half; // 首先檢查邊界體型區(qū)域不能超出迷宮范圍[1, N] if (x1 1 || y1 1 || x2 N || y2 N) { return false; } // 利用前綴和檢查該矩形區(qū)域內(nèi)是否有障礙物 int obstacleCnt sum[x2][y2] - sum[x1-1][y2] - sum[x2][y1-1] sum[x1-1][y1-1]; return obstacleCnt 0; }避坑提示邊界檢查必須放在前綴和查詢之前。因?yàn)槿绻w型區(qū)域越界我們?nèi)ゲ樵僺um[x2][y2]時(shí)下標(biāo)可能非法導(dǎo)致數(shù)組越界錯(cuò)誤。這是一個(gè)非常常見的編碼失誤點(diǎn)。3.3 BFS搜索過程詳解BFS隊(duì)列中的節(jié)點(diǎn)需要存儲(chǔ)x坐標(biāo)、y坐標(biāo)、到達(dá)該狀態(tài)的時(shí)間以及到達(dá)時(shí)的體型階段。由于stage可以從curTime推導(dǎo)也可以顯式存儲(chǔ)。顯式存儲(chǔ)邏輯更清晰。static class Node { int x, y, time, stage; Node(int x, int y, int time, int stage) { this.x x; this.y y; this.time time; this.stage stage; } } static int bfs(int sx, int sy, int ex, int ey) { QueueNode queue new LinkedList(); // 初始狀態(tài)檢查如果起點(diǎn)在初始體型下就不合法則無法開始 if (!check(sx, sy, 0)) { // 可能需要等待不題目通常保證起點(diǎn)初始合法或允許等待。這里先嘗試加入。 // 更嚴(yán)謹(jǐn)?shù)淖龇ㄊ菍⑵瘘c(diǎn)狀態(tài)加入時(shí)其stage應(yīng)根據(jù)當(dāng)前時(shí)間0計(jì)算。 } // 初始節(jié)點(diǎn)時(shí)間0階段0。但加入隊(duì)列前其stage應(yīng)根據(jù)時(shí)間0確定。 int initStage getStage(0); if (!check(sx, sy, initStage)) { // 如果起點(diǎn)在初始階段就不合法說明需要等待。但BFS起點(diǎn)就是等待的開始。 // 我們可以選擇將(時(shí)間0, 階段0)加入在彈出時(shí)處理階段更新。 // 另一種思路直接將(sx, sy, 0, 0)加入但在處理節(jié)點(diǎn)時(shí)先根據(jù)其time更新stage。 } vis[sx][sy][initStage] true; queue.offer(new Node(sx, sy, 0, initStage)); while (!queue.isEmpty()) { Node cur queue.poll(); int cx cur.x, cy cur.y, ct cur.time, cs cur.stage; // 彈出節(jié)點(diǎn)后首先根據(jù)當(dāng)前時(shí)間ct更新其真實(shí)的體型階段rs (real stage) int rs getStage(ct); // 注意如果cs與rs不同意味著我們在隊(duì)列中存儲(chǔ)的stage是過時(shí)的。 // 我們需要以更新后的rs為準(zhǔn)進(jìn)行后續(xù)操作。 // 因此檢查當(dāng)前狀態(tài)是否合法應(yīng)用rs。 if (!check(cx, cy, rs)) { continue; // 當(dāng)前狀態(tài)不合法跳過例如在隊(duì)列中等待時(shí)體型縮小后發(fā)現(xiàn)當(dāng)前位置被障礙卡住 } // 到達(dá)終點(diǎn)判斷必須在體型為1x1時(shí)即rs2站在終點(diǎn)才算成功 if (cx ex cy ey rs 2) { return ct; } // 擴(kuò)展動(dòng)作停留和四個(gè)方向的移動(dòng) // 動(dòng)作1停留 int nt ct 1; int ns getStage(nt); // 下一時(shí)刻的體型階段 if (!vis[cx][cy][ns]) { vis[cx][cy][ns] true; queue.offer(new Node(cx, cy, nt, ns)); } // 動(dòng)作2向四個(gè)方向移動(dòng) for (int i 0; i 4; i) { int nx cx dx[i]; int ny cy dy[i]; // 移動(dòng)后的階段使用下一時(shí)刻的階段ns if (nx 1 nx N ny 1 ny N !vis[nx][ny][ns]) { // 關(guān)鍵判斷移動(dòng)是否合法要看在下一時(shí)刻ns階段下新位置(nx, ny)是否合法 if (check(nx, ny, ns)) { vis[nx][ny][ns] true; queue.offer(new Node(nx, ny, nt, ns)); } } } } return -1; // 無法到達(dá) } // 根據(jù)時(shí)間t返回對應(yīng)的體型階段 static int getStage(int t) { if (t K) return 0; else if (t 2 * K) return 1; else return 2; }逐段解析節(jié)點(diǎn)定義與初始化Node類包含了位置、時(shí)間和階段。初始化時(shí)根據(jù)時(shí)間0計(jì)算出初始階段initStage并標(biāo)記訪問。這里隱含了“起點(diǎn)在初始時(shí)刻必須是合法的”這一常見題目條件。狀態(tài)更新從隊(duì)列中取出節(jié)點(diǎn)cur后第一件事就是用cur.time重新計(jì)算真實(shí)的階段rs。為什么因?yàn)楣?jié)點(diǎn)入隊(duì)時(shí)存儲(chǔ)的stage是基于入隊(duì)時(shí)的time計(jì)算的。在隊(duì)列中等待被處理的過程中time沒有變但當(dāng)我們處理它時(shí)是以它被取出時(shí)的視角來看的。實(shí)際上由于BFS按時(shí)間遞增順序擴(kuò)展cur.time就是該狀態(tài)發(fā)生的時(shí)刻用這個(gè)時(shí)刻計(jì)算rs是準(zhǔn)確的。cscur.stage在入隊(duì)后就沒有意義了我們以rs為準(zhǔn)。合法性復(fù)查用rs檢查當(dāng)前位置是否合法。這一步很重要考慮一種情況胖子以5x5體型移動(dòng)到一個(gè)位置然后這個(gè)位置在3x3體型下是合法的但他在隊(duì)列中“等待”時(shí)時(shí)間流逝體型變?yōu)?x3此時(shí)需要復(fù)查該位置是否依然合法。如果因?yàn)轶w型縮小原來被身體邊緣覆蓋的障礙物現(xiàn)在“進(jìn)入”了身體內(nèi)部導(dǎo)致位置非法那么這個(gè)狀態(tài)就應(yīng)該被丟棄。終點(diǎn)判斷題目通常要求胖子以正常體型1x1到達(dá)終點(diǎn)。所以判斷條件不僅是坐標(biāo)匹配還要rs 2。動(dòng)作擴(kuò)展停留時(shí)間1階段變?yōu)間etStage(ct1)。如果該新狀態(tài)未訪問則入隊(duì)。這里有一個(gè)關(guān)鍵點(diǎn)停留后位置不變但時(shí)間增加了階段可能變化。移動(dòng)計(jì)算下一個(gè)位置(nx, ny)時(shí)間同樣是ct1階段為ns。移動(dòng)的合法性判斷是在下一時(shí)刻nt處于下一階段ns的胖子其身體覆蓋區(qū)域在新位置(nx, ny)上必須全部是空地。這個(gè)判斷調(diào)用的是check(nx, ny, ns)而不是check(nx, ny, rs)。3.4 為什么不需要在移動(dòng)判斷中檢查當(dāng)前狀態(tài)細(xì)心的讀者可能會(huì)問移動(dòng)時(shí)不需要保證從當(dāng)前位置移動(dòng)一格這個(gè)動(dòng)作本身是合法的嗎比如胖子當(dāng)前是5x5他向右移動(dòng)一格在移動(dòng)過程中他5x5的身體是否會(huì)蹭到右邊的障礙物在我們的模型里這個(gè)檢查已經(jīng)蘊(yùn)含在check(nx, ny, ns)之中了。我們假設(shè)移動(dòng)是瞬時(shí)的在t時(shí)刻末胖子還在(cx, cy)在t1時(shí)刻初胖子已經(jīng)到達(dá)(nx, ny)。我們只關(guān)心在t1時(shí)刻胖子在(nx, ny)處是否合法。這符合題目的離散時(shí)間模型。不需要考慮移動(dòng)過程中的“碰撞檢測”。4. 常見錯(cuò)誤與性能優(yōu)化陷阱即使理解了算法實(shí)現(xiàn)時(shí)依然會(huì)遇到不少坑。下面我結(jié)合自己的調(diào)試經(jīng)驗(yàn)列舉幾個(gè)高頻錯(cuò)誤點(diǎn)。4.1 狀態(tài)重復(fù)訪問與剪枝BFS必須要有訪問標(biāo)記來避免重復(fù)訪問否則隊(duì)列會(huì)無限膨脹。這里的狀態(tài)是(x, y, stage)。為什么是stage而不是time因?yàn)閷τ谕粋€(gè)(x, y)如果stage相同那么無論time是多少胖子在此處的“行動(dòng)能力”是相同的因?yàn)轶w型相同。后續(xù)從該狀態(tài)出發(fā)能擴(kuò)展出的路徑其時(shí)間差是固定的。如果允許相同(x, y, stage)的狀態(tài)被多次訪問后訪問的狀態(tài)其time一定大于等于先訪問的狀態(tài)因此不可能產(chǎn)生更優(yōu)解時(shí)間更短。所以用vis[x][y][stage]剪枝是正確的。一個(gè)易錯(cuò)場景胖子在(x,y)點(diǎn)stage05x5時(shí)間t1時(shí)被訪問。之后他在別處等待時(shí)間tK此時(shí)stage應(yīng)變?yōu)?時(shí)又想到達(dá)(x,y)點(diǎn)。此時(shí)他訪問的是(x,y, stage1)這是一個(gè)新狀態(tài)即使坐標(biāo)相同也是允許的。我們的vis數(shù)組第三維正好區(qū)分了這一點(diǎn)。4.2 時(shí)間與階段更新的同步問題這是最核心的易錯(cuò)點(diǎn)??匆韵掠袉栴}的偽代碼// 錯(cuò)誤示例 Node cur queue.poll(); if (cur.stage 0 cur.time K) { cur.stage 1; } // ... 然后用cur.stage去進(jìn)行check和擴(kuò)展錯(cuò)誤在于修改了cur對象的屬性并且用更新后的stage去判斷移動(dòng)合法性。但移動(dòng)發(fā)生在下一時(shí)刻cur.time1其階段應(yīng)該是getStage(cur.time1)而不是更新后的cur.stage。正確的做法如前文所述引入一個(gè)局部變量realStage getStage(cur.time)用于當(dāng)前狀態(tài)判斷而擴(kuò)展動(dòng)作時(shí)使用nextStage getStage(cur.time1)。4.3 起點(diǎn)/終點(diǎn)合法性處理的邊界情況題目可能不會(huì)明確保證起點(diǎn)在初始時(shí)刻t0,stage0是合法的。例如起點(diǎn)本身是空地但胖子初始5x5的身體覆蓋了周圍的障礙物。根據(jù)規(guī)則此時(shí)胖子無法“存在”于起點(diǎn)。那該怎么辦題目通常隱含允許“等待”。也就是說胖子的起始狀態(tài)是“在起點(diǎn)等待直到體型縮小到可以容納為止”。我們的BFS初始化需要處理這種情況。一種方法是不直接將(sx, sy, 0, 0)設(shè)為初始狀態(tài)而是將“在起點(diǎn)等待”這個(gè)動(dòng)作也納入BFS。我們可以虛擬一個(gè)開始或者更簡單地檢查getStage(0)下的起點(diǎn)是否合法。如果不合法則根本不能將起點(diǎn)狀態(tài)加入隊(duì)列。但題目要求求最短時(shí)間如果起點(diǎn)初始不合法最短時(shí)間可能就是他從“不存在”到“存在”的等待時(shí)間。更通用的初始化方法是// 尋找第一個(gè)可以使起點(diǎn)合法的時(shí)刻作為BFS起點(diǎn) int startTime 0; while (startTime 2*K !check(sx, sy, getStage(startTime))) { startTime; } if (startTime 2*K) { // 即使變?yōu)?x1也不合法說明起點(diǎn)有障礙直接輸出-1或根據(jù)題意處理 } int startStage getStage(startTime); vis[sx][sy][startStage] true; queue.offer(new Node(sx, sy, startTime, startStage));這樣BFS的起點(diǎn)時(shí)間就不是0而是胖子在起點(diǎn)能夠“站穩(wěn)”的第一個(gè)時(shí)刻。這個(gè)邏輯更完備。4.4 二維前綴和的邊界處理這是實(shí)現(xiàn)細(xì)節(jié)上的坑。我們的迷宮下標(biāo)從1開始sum[0][j]和sum[i][0]都應(yīng)初始化為0。在check函數(shù)中計(jì)算矩形和時(shí)x1-1或y1-1可能為0這正是前綴和公式能正確工作的前提sum[0][*] sum[*][0] 0。如果數(shù)組從0開始存儲(chǔ)就需要在計(jì)算時(shí)增加更多的條件判斷容易出錯(cuò)。因此強(qiáng)烈建議將迷宮數(shù)據(jù)存儲(chǔ)在1-indexed的數(shù)組中。5. 完整代碼參考與測試思路將上述所有部分整合并加入一些健壯性判斷得到完整代碼。這里假設(shè)輸入格式為第一行兩個(gè)整數(shù) N 和 K接下來 N 行每行 N 個(gè)字符表示迷宮起點(diǎn)(1,1)終點(diǎn)(N,N)。import java.util.*; public class FatManMaze { static int N, K; static char[][] g; static int[][] sum; static boolean[][][] vis; static int[] dirx {-1, 1, 0, 0}; static int[] diry {0, 0, -1, 1}; static class Node { int x, y, time, stage; public Node(int x, int y, int time, int stage) { this.x x; this.y y; this.time time; this.stage stage; } } public static void main(String[] args) { Scanner sc new Scanner(System.in); N sc.nextInt(); K sc.nextInt(); g new char[N2][N2]; sum new int[N2][N2]; vis new boolean[N2][N2][3]; for (int i 1; i N; i) { String s sc.next(); for (int j 1; j N; j) { g[i][j] s.charAt(j-1); int val g[i][j] * ? 1 : 0; sum[i][j] sum[i-1][j] sum[i][j-1] - sum[i-1][j-1] val; } } int ans bfs(); System.out.println(ans); sc.close(); } static int bfs() { QueueNode q new LinkedList(); int startX 1, startY 1, endX N, endY N; // 初始化找到起點(diǎn)第一個(gè)合法時(shí)刻 int startTime 0; while (startTime 2 * K !check(startX, startY, getStage(startTime))) { startTime; } if (startTime 2 * K) { // 即使變成1x1起點(diǎn)也不合法起點(diǎn)是障礙 return -1; } int startStage getStage(startTime); vis[startX][startY][startStage] true; q.offer(new Node(startX, startY, startTime, startStage)); while (!q.isEmpty()) { Node cur q.poll(); int cx cur.x, cy cur.y, ct cur.time, cs cur.stage; // 根據(jù)當(dāng)前時(shí)間確定真實(shí)階段 int rs getStage(ct); // 復(fù)查當(dāng)前狀態(tài)合法性針對等待后體型變化的情況 if (!check(cx, cy, rs)) { continue; } // 終點(diǎn)判斷 if (cx endX cy endY rs 2) { return ct; } int nt ct 1; int ns getStage(nt); // 動(dòng)作1: 停留 if (!vis[cx][cy][ns]) { vis[cx][cy][ns] true; q.offer(new Node(cx, cy, nt, ns)); } // 動(dòng)作2: 移動(dòng) for (int d 0; d 4; d) { int nx cx dirx[d]; int ny cy diry[d]; if (nx 1 || nx N || ny 1 || ny N) continue; if (vis[nx][ny][ns]) continue; if (check(nx, ny, ns)) { vis[nx][ny][ns] true; q.offer(new Node(nx, ny, nt, ns)); } } } return -1; // 無法到達(dá) } static boolean check(int cx, int cy, int stage) { int len; if (stage 0) len 5; else if (stage 1) len 3; else len 1; int half len / 2; int x1 cx - half; int y1 cy - half; int x2 cx half; int y2 cy half; // 邊界檢查 if (x1 1 || y1 1 || x2 N || y2 N) { return false; } // 前綴和查詢區(qū)域是否有障礙 int obs sum[x2][y2] - sum[x1-1][y2] - sum[x2][y1-1] sum[x1-1][y1-1]; return obs 0; } static int getStage(int t) { if (t K) return 0; else if (t 2 * K) return 1; else return 2; } }測試建議簡單通路小迷宮無障礙直接測試BFS基本功能。需要等待設(shè)置一個(gè)狹窄通道寬度為1但長度方向無障礙。起點(diǎn)在通道一端。初始5x5體型無法進(jìn)入通道必須等待至3x3或1x1才能進(jìn)入。驗(yàn)證程序是否選擇了等待。起點(diǎn)被卡起點(diǎn)是空地但周圍緊挨著障礙物使得5x5體型不合法。驗(yàn)證程序是否能通過等待找到起始時(shí)間。混合路徑設(shè)計(jì)一個(gè)迷宮其中一條路徑短但需要長時(shí)間等待如穿過一個(gè)最初很窄的走廊另一條路徑長但無需等待。驗(yàn)證程序是否能正確選擇總時(shí)間更短的路徑可能是等待短路徑。大尺寸壓力測試N300隨機(jī)生成障礙物測試程序在極限數(shù)據(jù)下的運(yùn)行時(shí)間和內(nèi)存是否可接受Java下應(yīng)能在1-2秒內(nèi)完成。這道“大胖子走迷宮”題目融合了BFS、狀態(tài)壓縮、前綴和優(yōu)化以及對題目規(guī)則的細(xì)致建模是檢驗(yàn)選手綜合思維和代碼實(shí)現(xiàn)能力的一道好題。理解其核心——將時(shí)間維度轉(zhuǎn)化為體型階段并將此階段作為狀態(tài)的一部分進(jìn)行搜索——是解決所有類似動(dòng)態(tài)障礙或動(dòng)態(tài)角色問題的鑰匙。在編碼時(shí)時(shí)刻分清“當(dāng)前狀態(tài)”和“動(dòng)作后的狀態(tài)”處理好階段與時(shí)間的同步關(guān)系就能穩(wěn)穩(wěn)拿下這類題目。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
9丨久久九九九| 久草网站免费在线观看| 国产av又色又爽又黄| 啪啪视频亚洲第一| 亚洲日韩国产欧美综合v| 国语av最新自产拍在线观看| 人人摸人人添人人操 | 一区AV| 无遮挡一级毛片视频免费的| 亚洲无码色| 女生自91网站| 熟妇人妻精品一区二区| 男人天堂黄片| 久九干| 熟女高潮精品一区二区| 国产精品爽爽v| 啊啊啊不要好疼视频| 国产和美国毛片| 日本韩高清无砖码22o| 9久久精品| 久久做97| 91人妻人人澡人人爽人人精品| 狠狠爱综合| 欧美偷偷网| 2017,超碰| 酒色综合网| 亚洲成人一区二区精品| 熟妇艹鸡八| 欧美性五月| 18禁精品网站在线看| 一二三四日本视频高清| 天天干天天操天天操夜夜操天天操| 新婚人妻扶着粗大强行坐下| 青青操视频在线| 富女玩鸭子一级毛片| 偷窥自拍A片| 美女毛片999| 熟人人妻少妇精品久久| 新版天堂中文资源8在线| 欧美高清18A片| 91动漫操逼视频| 老司机免费视频在线91| 人妻久久一区二区三区 | 国产天天看| 91在线一起| 色香色欲天天综合网天天来吧| 伊人操操| 亚洲va综合va国产va中文| 久久riav中文精品| 夜夜综合| 久热9| 91岛国动作片| 中文字幕精品久久久久人妻红杏ⅰ| 亚洲国产精品V?在线播放| 97色爱| 国产午夜福利专区综合| 国产宅男宅女在线观看| 久久成人东京热人妻| 精品亚洲国产成人AV制服丝袜| 精品9999| 九九久久国产精品| 五月天激情综合网| 天堂中文日本在线观看| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 五月天婷婷基地| 插入逼91| 一级AAA片一区二区三区| 欧美啪啪啪91| 青青操在线亚洲视频观看欧美在线| 亚洲无码一二三区| 91亚洲网| 9997se| 亚洲 欧美 中文 日韩超碰 | 91jk色拍| 九九色热| 久久99草| 五月天开心网| 在线观看中文av字幕| 男人的天堂久久| 中出789在线视频| 久久久久久夜夜夜夜夜| 日本中文字幕在线电影| 秋霞蝌科网日本一区| 日本综合色图| 亚洲一卡二卡在线免费| 久久激情婷婷| 不卡在线观看视频| 大香蕉手机在线| 少妇精品久久久八区九区| 老熟妇一区二区三区啪啪| 久久国产视频性吧 | 蜜桃久久综合视频| 亚洲成人一区二区精品| 99老司机精品视频在线观看| 亚洲国产奇米影视久久| 一起草欧美| 色牛aV| 欧美综色欧| 日本精品加勒比海一区| 久久久久久久| 久久人| 欧美综合91| 国产综合网站在线播放 | 美女淫穴| 伊人精品国产| 欧成人精品一区二区三区| 综合大香蕉美。| 熟女熟妇伦久久影院毛片一区二区| 欧美国产一区二区三区麻豆传媒 | 中国一级操逼视频| 操逼不卡中文字幕| 蜜乳av首页| 久久人妻视频网| 九九久久99| 99热这里都是精品| 丁香五月影院| 淫乱图区 | 色爱综合网| 狠狠色婷婷| 国产精品视频电影| 欧美日韩性爱操大逼| 中文久久爆乳| 天操天操夜操夜月操月年年操 | 婷婷久久五月| 欧美亚洲影视| 天操天操夜操夜月月年年操操| 久久久精选| 欧美性爱一区二区| 乱日视频| 亚州,欧美在线| 大香蕉欧美| 丝袜美腿制服人妻二区中文字幕| 盗摄 精品 另类 一区| 69人妻精品丰满熟女区| 99re99在线视频| 亚洲欧美一区二区三区在钱蜜桃| 91爱综合| 超碰97护士| 东京热视频网| 992这里有精品| 好看的久久不射无码影视影院| 美国三级日本三级久久99| 91精片| 成人熟女视频一区二区三区| 一二三四区操操Av| 国产精品不卡高清在线观看| 久热91| 成人AV在线网站| 日操粉逼逼| 丰满少妇人妻久久久久久| 成人免费视瓶| 久久欧美1卡2卡3| 久久9免费视频| 日本人妻中文字幕精品| 久久日韩毛| 国产日韩久久| 黑操B| 91情色在线| 顶级丝袜熟女一区二区三区| 99国产在线 精品 视频| 91蜜臀在线久久久久| 国产欧美日产一区二区三区 - 国产欧美日| 国产9区| 成人网欧美风情| 国产精品白领在线观看| 色av中文字幕| 国产女人操逼视频| 综合97久久| 在线综合色| 欧美草草| 小少妇| 国产九九九九九九九九| 高潮9999外国| 人妻熟女字幕一区二区| 色综合91好| 久久9久9久99久9久9| 日韩在线一区二区| 中国特猛少妇色xxx| 东京太热久久久| 亲子敌伦对白在线播放| 青青草玖玖爱| 我爱大香蕉| 色五月综合网| 久久99国产精品| 蜜臀亚洲中文| 久精品无码av一区二免费国产在线观看| 欧美一品道| 欧美日韩第一页| 蜜臀视频网站| 欧美亚洲清纯| 熟妇视频一区二区三区在线观看| 99操视频| 97在线视频观看网站| 色哟哟AV| 青青草啪啪网| 国产欧美伊人| 99操| 志村玲子视频一区二区| 日韩精品人妻一| 日韩超碰97| 久久久久无码一妻区| 99久久婷婷国产综合精品草原| 欧美另类综合久久| 日韩av电影成人在线| 综合亚州欧美| 国产视频第2页| 亚洲 日本 一 二 三| 中文字幕AV乱伦| 久悠悠av| 国产无马av| 日韩激情中文字幕有码| 欧美日韩另类在线播放| 五十路六十路素人熟女| 熟女人妻精品一区二区视频 | 婷婷五月天丁香花| 人人操,操人人| a一区二区三区乱码在线| 亚洲**2021在线观看| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 五十路熟女工口| 台湾佬激情综合| 天天干,夜夜爽| 五月丁香婷婷色| 日韩啪啪网| 亚洲精品成人激情在线| 五月天丁香| 亚洲……91| 精品一区二区成人动漫| 密臀在线视频| 伊人网在线点播| 天天天肏屄肏屄肏屄欧美欧美| 破处bbq| 97超碰免费生活| 久久九九热| 九九热国产| 欧美一级A一级a爱片久久| 三男一女不戴套的A片| 最近2018中文字幕在线高清第一页| 激情综合网亚洲| 人人摸.人人色| 九九热精彩视频| 人妻熟女一区二区三区在线| 热热色91| 制度丝袜99| 色综合久久久久| 鲁鲁色综合网| 亚洲精品一卡二卡三卡福利视频网站 | 97超碰色色| 国产精品干干干| 日日摸夜夜夜夜爽| 日本有码久久| 99热99在线播放激情| 欧美激情视频在线一区| 五月天婷婷成人网| 亚欧美综合网。| 天天综合-91入口| 女人被添高潮免费视频| 欧美韩国你懂得在线| 亚洲国产精品久久久久婷婷老年| 屁股久久久久久| 成人一级性爱| 久久久久久中文字幕中文字幕最新| 欧美日韩婷婷中文| 秋霞Av理论一级在线| 二三四区精品| 久9爱精品| 国产女同视频在线播放| 精品超碰中文在线| 日韩在线观看AV| 国产精品爽爽v| 欧美性爱97超碰| 亚洲人妻爽爽爽| av天堂5| 国产一区麻豆免费观看| 动漫爆乳3D奶水一区在线观看| 婷婷国产精品九区| 七月丁香婷婷| 久/久精品99看9| 亚洲偷91色| 一级二级三级黑人无码| 国产精品久久久久中文字幕| 亚洲色入欧美| 色牛牛AV| 97爱综合| 伊人天天久久动态图| 91 偷| 亚洲美女精品九九视频| 国产sv美女内射| 欧美Aⅴ| 在线视频免费播放一区| 国产精品熟女乱伦| 国产原创自拍| 99999re| 国产丝袜啪啪| 思思热一热婷婷热一热| 放黄片放3级黄片没穿衣服| 亚洲啪啪综合?v一区综合精品区| 国产日韩精品无码去免费专区国产| 久久久精品网站| 秋霞蝌科网日本一区| 激情五月天色色| 麻豆黄站| 男人午夜天堂| 亚洲乱码国产乱码精网站| 超碰在线91| 91美女丝袜诱惑视频| 97中文字幕色| 色噜噜狠狠色综无码久久合欧美| 一本一道波多野毛片中文在线| 亚洲情色中文字幕一区| 操熟女91| 蜜乳av一区二区| 久久婷婷热| 91老熟女91老女人| 一个色导综合| 99热综合| 国产精品农村妇女| 亚洲AV无码久久久国产精品| 国产欧美日韩女同性恋ww喷水精品| 欧美亚洲厕所精品偷拍91| 久久ww| 色噜噜国产在线| 亚洲无码日韩电影| 久久丁香五月天| 色阁阁AV综合网| 人人贴人人摸| 色哟哟-国产专区| 无套后入双马尾| 在线观看日韩av不卡| 免费人人搞97| 色播五月丁香| 国产精品久久久久999| 午夜一区二区三区国产| 男人的天堂色偷偷青青草视频婷婷网| 日韩无码极品| 欧美不卡在线美女| 欧美色亚洲| 性老妇一区二区三区| 91人妻最真实刺激绿帽| 欧美美女自慰一区二区三区| 在线日韩精品一区二区三区| 夜夜爽夜夜摸夜夜操免费视频| 9Ⅰ超碰| 久久熟女人| 亚欧免费| 97欧美精品综合| 在线视频免费观看午夜| 性性久久| 四虎影视永久在线免费| 亚洲综合另类色图| 久久亚洲色图中文字幕| 国产精品香蕉热久久新品| nuu12国产麻豆精品| 精品超碰国产| 伊人久久综合影院精品久久久| 蜜桃一区二区三区| 免费观看啪视频| 欧美18老人禁| 78m成人视线| 又黄又粗又硬又长又大| 亚洲 自拍偷拍 欧美| 久久久久久久久女黄| 素人美腿视频网站| 热九九精品| 欧美激情视频一区二区| 国产三级资源在线观看| 少妇免费视频| 五月丁香大香蕉| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 婷婷五月综合在线| 天天色,天天干,天天干| 久9精品| 亚洲天堂日本| 久久久久白虎| 夜夜免费视频| 九九九九免费高| 亚州乱码中文字幕综合久久久| 人妻乱仑一区二区三区| 精品亚洲国产成人av网站| 亚洲成人黄色在线观看| 久久久96| 欧美Aⅴ| 国产乱伦性爱区| 91强热人妻| 国内毛片欧美香蕉精品| 思思视频免费看网站| 尤物网站91| 东北女人高潮视频| 九九碰九九爱97超碰| 嗯嗯不要视频| 97干97色| 综合伊人激情| 操逼免费视频无码国产| 六月婷激情福利天堂69| 激情五月激情综合网| 日本午夜精品理论片A级APP发布| 亚洲精品无码久久AV| 秋霞网—男女啪啪亚洲免费体验区| 男人的天堂va在线| 人妻啪| 26uuu国产日韩综合在线观看| 亚洲天堂中文字| 婷婷久久五月| 国内精品999| 人人妻人人操人人乐| 蜜桃在线观看一区二区三区 | 941超碰| 亚洲在线| 亚洲一本大道中文字幕无码在线| 精品女人999| 老熟女熟妇| 久久成人午夜狠狠| 国产九九九九九九九九| 大屁股xxxxx| 小草精彩毛片| 久肏视频字幕| 3PAV乱伦视频| 久久精视频美日韩在线视频| 色欧美天天| 中文字幕女同在线| 黄色工厂这里只有精品| 操逼大黄片| 超碰97欧美在线| 亚洲少妇激情一区二区三区| 日本人妻伦在线中文字幕| 日韩精品视频在线观看一卡二卡| 搡老女人老妇女老妇老熟女怎么读| 成人性交午夜免费片| 午夜福利国产欧美日韩夜夜| 好爽,再快点啊哈嗯嗯嗯嗯| 精品白丝一区| 思思热免费视频观看| 91/欧美| 亚洲国产精品无码AV在线| 亚洲精品欧洲精品| 乱伦色图网址是多少| 国产一区二区三区不卡手机在线| 亚洲日韩美女丝袜美腿人妻视频| 中文字幕日韩人妻视频一区二区三区| 99综合自拍| 啊啊啊无码| 色噜噜人妻av 中文字幕| 91色香| 日日日日做夜夜夜夜做无码97| 老鸭窝成人| 五月开心网| AAAA级日本片免费视频| 97超碰69| 26UUU欧美激情一区二区| 狠狠躁AV| 日韩图区 偷拍| 澳门人妻久久| 3d成人精品一区二区| 97AV在线观看| 97色欧州| 色婷婷久久| 大香久久| 欧美91色| 日韩97视频!在线| 久操网视频| 成人性爱AV在线免费观看| 丁香五月电影| 免费无码国产精品v片在线观看| 97视频620| 亚洲一区中文字幕一区| 亚洲超碰97| 欧美日韩一干二干| 国产福利精品最新在线| 三级日本一区二区三区| 99热欧美| 青青草一本道福利视频| 黄网站黄视频网站进入口| 国产精品一区av在线| 亚洲成人ab| 热99re69精品8在线播放| 亚洲国男人的天堂| 入口操逼网站| 欧美另类综合久久| 日本乱人伦片中文三区| 国产精品福利视频| 综合五月天| 欧美一二三区四五区| 久久人妻办公室视频| 曰韩操B| 性色亚洲| 综合久久9| 久久久久99精品成人片蜜臀| 久久久久久久久国产| 亚洲自拍一区夜夜操| 一区 欧美 日韩 麻豆| 日本在线不卡123| 天天爽天天干| 成人av免费观看| 国产激情久久久| 思思热免费视频观看| 国产精品探花色| 翔田千里A片一区二区| 亚洲精品国产熟女| 亚洲最大网站av| 岛国艾薇凹凸视频天堂| 久精品无码av一区二免费国产在线观看| 欧美国产精品| 日韩丰满熟妇| 99精品在线| 欧美性暴力猛交XXXX | 五月丁香久久| 人人摸人人干| 亚洲精品国产AV天美传媒| 99青青草国产视频| 超碰97综合网| 搡老女人911熟妇老熟女| 人妻81p| 亚洲色图亚洲无码强奸乱伦| 深夜激情无码| 曰韩精品九九无码| 老熟妇一区二区三区啪啪| 91欧美少妇| J?P?NESEHD熟女熟妇伦| 天天视频黄网站| 国产亚洲人妻综合日韩 久久| 天天干人妻| 国语精品av| 天天干天天舔| 色综合天天| 国产精品一区二区黄片| 亚州色图欧美| 免费精品无码一级毛片牛牛影视| 欧美,日韩,亚洲视频| 五十路熟女工口 | 青青草乱入乱欲视频在线观看| 国产精品3| 亚洲一级性爱视频免费看| 成人熟女视频一区二区三区| 91老司机视频| www.婷婷| 另类欧美综合| 一区二区你上我| 0755午夜福利视频| 国产三级日产三级韩国三级| 午夜性| 久久精品一区二区一8| 偷拍欧美亚洲| 东北女人的毛片| 91bbb| 欧美大香蕉卡久久| 尤物av网站免费在线播放| 69人妻精品一区二区绯色| 99re视频在线播放青草| 91丝袜美女国产| 国产精品日日摸夜夜添骚逼| 内射中出日韩在线观看视频| 91在线精品一区二区三区| 97亚洲一区| 日本韩国国产精品一区| 五毛骚逼极品美女怕怕| 国产激情av女片自拍| 91四海无码日韩欧美| 国产亚州高清国产拍精| 中文字幕99999| 97免费免费视频网| 精品人妻一区二区视频| 麻豆天美在线喷水AV| 入口操逼网站| 日韩欧视频| 黑丝少妇| 久久伊人最新网址视频| 东京热熟女亚洲视频网站| 影音先锋视频在线| 三级色影综合网| 九九热精品在线| 国产精品福利资源在线尤物| 欧美成人一区二区| 国产精品老师| 啪啪啪东京| 日本506070| 人人摸人人舔一区二区| 97综合在线观看| 巨爆乳肉感一区二区三区竹菊影视 | 久久久久久午夜男人的天堂| 91看黄片| 亚洲不卡三级手机播放| 久九九九九九九九热| 性爱AV天堂| 蜜桃久久久久久| 亚洲色人妻综合| 久久伊人五月天| 免费啪啪av| 日韩少妇无码| 98超碰欧美| 免费99精品国产自在在线| 九色 人妻 大香蕉| 麻豆人妻精品一区二区| 午夜寂寞欧美| 人人操人人插人www| 国产精品不卡av免费在线观看| 蜜臀99久久精品久久久久| 啊啊啊啊嗯嗯在线久久久| 后入式999| av草草在线电影| 国产AV人人夜夜澡人人爽麻豆| 少妇天堂网络| 欧美白嫩女HD| 日韩久草| 天堂av最新电影网| com 首页 18岁 禁区 女优 免费 精选 同城 | 综合免费无码中文| 乱伦图av| 国产按摩一区二区三区| 日韩内射视频| 欧天美中出| 欧美激情久久久久| 国产丸一视频| 97碰碰色| 久久精品国产精品一区 | 色妺妺在线视频| 亚洲视频一二区| 免费超碰97久久| 99热在线只有精品| 国产精品ww久久| 无码 黑人一区二区三区| 日韩不卡毛片Av免费高清| 性色一线| 999久久久| 91精品国产91久久青草| 国产A v无码专区| 久热久| 久久精品72| 欧洲亚洲人妻无码久久三区四区| 国内外内射高清视频| 亚洲97成人在线观看| 日韩人妻无码专区| 抽查国产福利主播| 1240青青草一区二区三区视频天爱| 97干97色| 色色五月婷婷| 青青草好吊| 日本爽爽爽爽爽爽免费视频| 国产成人精品日本亚洲语言| 中文字幕在线观看网页| 国产精品网址| 99热思思| 97亚洲色图| xxxx网站亚洲精品| 牛牛久久国产精品视频一二三| 97chaopenrihan| 东亚亚洲无码高清| 久久9免费视频| 四色永久成人网站| 久久伊人影院| 欧美78p| 草莓精品视频在线免费观看| 久久久熟妇熟女国产| 精品成人无码| 天天爽入口| 久久久久13| 国产成人99久久亚洲综合| 欧美日本天堂| 丁香六月天| 欧美性爱无码一区二区三区| 亚洲的天堂网| 亚洲天堂人妻一区二区| 国产精品一区二区亚洲人成毛片 | 少妇久久久久久久| 91网亚洲| 久久婷婷热| 韩美日操逼| 色偷偷综合91久久噜噜| 日韩美一区| 色综合av男人天堂| 亚洲欧美首页| 色综合 加勒比| 和协无码影院| a久久| 欧美性爱1080p| 97干色| 竹菊一区二区三区AV线| 色91综合网| 久久精彩视频| 色999五月色| 日韩人成网站在线播放| 两女互慰AV高潮喷水在线观看| 色综九九九一区| 日韩一级二级三级免费看完整版国语版| 五月天色综合| 97自拍视频在线| 中文字幕亚洲热播人妻| 色欲av一区二区三区蜜芽| 无码78| 中日韓欧美高清| 亚洲不雅视频1区二区| 亚洲色性| 女生看匆91网站| 久久久啊啊啊| 少妇三p| 亚洲色欧美| 国产老太乱伦一区| 人人性爱视频免费| 熟妇综合一区二区三区| 日韩精品中文字幕人妻| 视频国产成人精品日本亚洲18| 欧美性夜| 国产精品久久妻无码网站| 国产女大学生AV| 日本国产亚洲一区在线观看| 免费日韩黄片| 国语精品内射在线观看| 久热91| 96AV久久久| 欧美国产操逼| 久伊人网78| 亚洲综合影院| 欧美日韩性爱无码| 久色网| 97 国产一区| 一本一道久久综合久久| 日韩有码专区| 加勒比在线观看一区二区| 免费中文在线| 午夜福利久久久噜久噜久久综合| 啊啊啊不要啊啊受不了了视频在线| 色老牛| 测评在线观看AV| 强奸乱伦资源| 操逼精品视频| 懂色av一区二区三区天美传媒| 国产美女自拍AV| 激情视频网址| 91欧美性| 欧美一级黄片视频在线| 成人五月香网在线| 久久9精品网站| 日本高清视频xxxx| 蜜桃成人1区2区3区| 超碰97最新人妻| 男人天堂电影院| 色婷婷综合网站| 日本黄色XXX| 中文人妻av高清一区| 欧美九9 9 9| 性感美女91影视| 婷婷五月天激情网| 少妇第一页| 国产一级内射无挡观看| 天天干天天日天天射黄色片| 我要色综合网| 欧美制服网站美腿丝袜| 色欧美在线| 91热爆在线| 亚洲欧美激情小说| 日本99久久| 久久久女人| 色99视频| 亚州综合网| 久久久久久久少妇| 国产亚洲福利第一页丝袜| 麻豆天美国美国产| 精品九九| 欧日韩在线观看| 手机在线人成免费视频| 日本亚欧爱爱| 九九亚洲| 岛国激情视频在线观看| 欧洲精品欧洲精品| 操逼日韩无码 | 99热最新网址| 91香蕉国产尤物视频| 九九久久国产精品| 围产精品一区二区三区视频播放| 九九热只有精品| 丰满少妇一区二区三区免费看| 东亚亚洲无码高清| 91香蕉视频在线观看免费| 欧美九九爱| 亚洲精品99999| 天天综合色| 欧美色97| 欧美激色| 偷拍综合亚洲| 内射黑丝袜| 人人九九精| 夜夜嗨一区| 亚洲人妻五月丁香婷婷| 99999亚洲| 中文字幕欧美丝袜07资源| 免费试看60秒| 亚洲中字幕日本一区二区三区| 欧美日韩精品久久久久久久久东北老熟妇| 久久久三区二区一区| 99精品九九九九九九| 男女啊啊啊啊啊| 日本韩高清无砖码22o| 欧美色图91| 亚洲在线| 一起草日韩| 综合激情五月天| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 秋霞午夜成人福利片片| 天天操人人操骚逼网站| 欧亚久久偷拍视频| 欧美色图下一页| 亚洲一区二区 麻豆传媒| 99re3这里只有精品| 久久久久一本一区二区青青蜜月| 欧美.亚洲.另类.丝袜.制服.诱惑| 亚洲欧美国产日本一区二区三区| 欧天美中出| 久久久噜噜噜久久久| 亚洲一区日韩精品| 欧美熟妇亚洲版| 影音先锋国产精品| 免费精品无码一级毛片牛牛影视 | 国产精品自拍欧美在线| 亚州免费啪啪视频| 国产高清免费不卡av| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 天天综合97| 天堂v无码免费视频| 国产高清午夜成人在线观看| 看日韩黄片| 国产亚洲性生活视频播放| 日韩精品碰碰| 人人扣人人操| 久久综合18p| 一本色道久久综合熟妇| 加勒比综合在线| 亚洲精品自拍| 成人乱码一区二区三少妇| 色色激情五月天| 亚洲日韩青青草色月| 春色综合免费| 欧美日韩中文视频播放| 亚洲成人性爱网站在线播放| 自偷自拍的亚洲视频| ,国产乱人伦精品一区二区三区| 骚女高跟AV在线| 九热久| 亚洲精品第一| 麻豆天美制片厂网站视频| 偷拍99| 欧美亚洲一级在线观看| 婷婷爱五月| 中国的操老妇女| 精品日韩人妻精品一二三区| 国产AV超爽| 国产精品天干天干综合网麻豆| 成人区人妻精品一| 日本熟妇人妻中出视频| 丝袜综合色图| 熟女探花啪啪| 亚洲图片欧美91N| 亚洲激情深爱文学小说网站| 伊人久久在线视频观看| 丰满翘臀美女影院视频| 女生看匆91网站| 丰满的三级少妇欧美久久久| 骚女高跟AV在线| 色欲无码人妻日韩欧美精品| xxx亚洲午夜天堂| 男人午夜天堂| 久久久久国产亚洲一区欧美色图日韩 | 人人人人人人少妇| 国际精品久久久| 五月天丁香网| 大香蕉中文在线| 日韩av女优在线免费一区| 亚洲综合网91| 91最新综合| 天堂а√在线最新版在线| 97精品综合久久网| 国产AV久久野战精品| 亚洲男人综合网| 大香蕉人妻| 蜜臀中文字幕| 亚州综合AⅤ| 亚洲国产高清福利视频| 风间由美日韩欧美久久| 黑丝内射一区二区三区| 国产精品人妻无码久久久互動交流 | 日韩A优精品在线观看| 91熟女视频网| 午夜激情床戏激情| 九九热AV| 人人看人人爰人人操| 黄页网站成人免费| 亚欧中文字幕在线视频| 成人5码视频| 色图综合网| 67914在线兔费成人视频| 偷拍 精品另类 凸凹了四区| 18禁免费视频| 亚洲色婷婷久久久综合日本 | 人妻中文字幕日韩电影| 97精品免费| 欧美色91| 婷婷久草| 欧洲精品在线播放| 骚逼高潮久久精品| 国产精品亚洲一区二区三区四区| 日本中文熟女视频| 97亚洲自在精品在线观看| 97日视频| 99爱久久视频频| 天天舔天天 | 欧美一区二区亚洲天堂| gogogo免费高清看中国国语| 嗯嗯啊啊好爽| 色欧美亚洲| 另类欧美色| 日韩欧美女求操每天更新| 亚洲日本大香蕉1| 97欧美色综合| 久久精品高清无码一区| 少妇三P| 精吧天堂| 肉丝无码中文高清| 国产欧洲精品亚洲午夜拍精品| 情色五月天久久久| 校园春色五月天| 亚洲区限制级 99| 日本孕妇孕交| 性欧美| 天天cao在线| 日本不卡五区| 黄色大片免费在线| 中国一级操逼视频| www网站黄| 男人的天堂亚洲| 超91综合网| 啊好爽快点-国产一区二区三区撒尿在线-成人AV | 热思思免费视频| 国产操伦| 国产67194| 蜜桃不卡一区二区| 日本好吊色视频| 狠日欧美| AV和黑人在线播放| WWW操逼| 亚洲日韩久久精品一区| 777超碰| 九月婷婷综合| 男人的天堂com| 色99视频| 久久精品国产精品一区 | 日韩无码久久熟女一级片| 国产精品人妻免费精品| 天天综合精品| 91熟女在线| 在线黄页看毛片| 精品九九九九九| 97天天爽| 午夜亚洲WWW湿好大| 国产13区| 久久黄色视频一区二区三区| 97色涩| 综合欧美激情网| 大干人妻| 久碰视频| 91精品人妻偷情| 国产精品久久久999| 美女午夜福利免费视频| 久久亚州大香蕉| 六月天婷婷| 中文字幕精品免费一区二区| 激情终合网| 免费看久久久性性| 啊啊啊爽爽| 欧美 熟女 日韩| 亚洲图片欧美在线视频| 97免费在线视频| 久久九精品| 啊…啊…操我用力操我 | 一区二三区四区视频大全套| 久久久com| 都市久久精品激情亚洲| 台湾佬中文娱乐网久久久久久久久久com| 国内自拍 日韩激情 99| 欧美日韩在线视频网站| 好屌色综合| 国产成人资源| 国产精品自在线发布| 亚洲欧美小说| 亚洲AV不卡在线观看| 精品久久在线区一区| 日韩性爱高清免费视频| 久久久精品中文字幕爱豆| 欧美啪啪啪91| 日日嗨AV一区二区夜夜| 精品人人| 一区二区三区精品黑丝白丝酒店对鸡| 在线欧美69V免费观看视频| 亚州性色| 亚洲成成熟女人综合一区二区| 日本超碰97日韩精品人妻| 天天欧美色| 免费看毛片操穴| 欧美精品自慰系列寂寞少妇 | 五月天婷婷综合网| 成人三级片无码| 国产区91柔拿会所技师| 在线观看无码三级少妇| 强奸乱伦 亚洲一区| 国产激情综合| 婷婷综合网| 日韩av乱伦| 久久激情视频| 久久久激情| 五月丁香影院| 亚州情色j区| 久久久久久久 九九九九九九九| 五月激情综合网| 国产乱码久久| 久久9精品视频| 九九AV| 波多野结衣先锋影音| 九九九九热| 蜜臀AV一区二区三区| 久久后入制服| 久偷拍欧美日韩三区| 东北女人| 欧美 传媒 麻豆 日韩 偷拍| 丁香五月婷婷基地| 操比国产| 免費黃色視頻觀看一| 国产高清26uuu| 国产强奸乱伦无码视频| 精品少妇一区二区| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 欧美极度丰满熟妇hd| 欧美伊人久久综合网| 热思思免费视频| 麻豆久久精品亚洲精品88 | 爱射综合| 婷婷五月综合在线| 婷婷激情五月天小说网| 国产亚洲中文不卡二区| 中文人妻av高清一区| 伊人网免费视频| 国产AV色黄看到爽| 翔田千里一区二区三区奶水| 国产一在线观看| 欧美日韩 强奸乱伦| 国产AV高清AV无码| 激情专区综合| 人妻加勒比东京热| 丁香五月天婷婷姐| 九九九草| 91影库| 狠狠综合网| 久久久久亚洲一区女同性恋中文字幕| 视频二区熟女人妻| 午夜一区| 国产传媒午夜理伦精品| 黄色一级视| 精品大久久| 一区二区三区在线日韩影院观看| 熟妇视频一区二区三区在线| 欧美日韩色综合网| 成人五月香网在线| 性欧美精| 玖玖爱在线视频免费观看| 围产精品一区二区三区视频播放| 午夜激情床戏激情| 青青草好吊色| 亚洲AV无码国产精品久久久久| 青青草原人妻| 日本媚薬中文字幕在线| 熟女突然公开看18禁影片| 午夜综合在线| 国产精品久久久久无码A√| 麻豆久久久久久久久丝袜| 我想要 啊 啊 啊| 亚卅熟女乱色| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 99热精品在线播放| 美女天天干| 高清国产av无码| 欧洲色综合| 综合欧美日韩在线观看| 91美女看B| 久操凹凸视频| 色www精品视频在线观看| 国产亚洲中文不卡二区| 亚洲情色在线| 亚洲砖码砖专无区2023| 99热99re6国产在线播放| 久久九九国产精品| 美女上床网站| 天天日天天爽| 国产操逼网站亚洲一级黄色| 欧洲综合视频| 国产精品久久久久久高清无码免费看| 夜夜操老骚逼视频网站| 老司机深夜18禁污污网站| 亚洲色入欧美| 婷婷视频网| 日本东京热久久久电影| 9999亚洲电影| **一级毛片国产| 亚洲欧美国产中文视频| 亚洲日韩东京热一区| 久操精品网| 久久久久久国产成人| 超碰在线在公开超碰在线在公开| 五月婷婷六月天| 2020中文在线一区二区三区| 91热| 偷拍在线观看视频| 国语人妻精彩刺激| 日本高清_区二区三区| 欧美草草高清日韩视频| 九九拍拍精品视频在线播放| 好吊妞转入那个网| 麻豆啪啪啪视频| 蜜乳AV色欲AVAV无码| 欧美日韩激情无码专区| 日韩在线一区高清在线| 日韩欧美成人综合在线| 涩涩涩综合| 成人性爱av.com| 国产 无码 一区二区| 熟女色综合久久| 亚洲无线码一区国产欧美国| 亚洲AV无码成人精品久久| 亚洲一卡2卡3卡4卡乱码网站 | 国产呦精品系列在线观看| 亚洲97网站| 久啪视频| 九九九九热只有精品| 久九九九九九九九热| com 首页 18岁 禁区 女优 免费 精选 同城| 亚洲大色堂| 四虎免费看黄| 欧美综合 站| 漂亮人妻被强中文字幕hd| 啊啊啊水好多| 丝袜综合网| 国产无码三级视频在线观看| 秋霞 色色| 天天草夜夜草高潮片| 国产精品探花在线| 天天做日日爱夜夜爽| 久久99久久99精品免视看婷婷| 日日不卡av| 久久国产热视频97电影| 黄网色一区二区三区四区精品| h无码动漫在线观看| 免费一级视频特黄色大片| 久热无码| 久久鲁夜| 超碰色美女| 18禁止看精品中文字幕| 在线A日本| 天天拍天天操| 超碰人妻中文在线| 国产97在线播放| 国产高清自拍视频| 欧美成人四级在线播放| 国产成人网址| 天美精品一区二区三区四区在线观看| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 |