日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

C++模擬算法詳解:從約瑟夫環(huán)到掃雷展開(kāi)的實(shí)戰(zhàn)指南

C++模擬算法詳解:從約瑟夫環(huán)到掃雷展開(kāi)的實(shí)戰(zhàn)指南 2. 先把模擬算法說(shuō)清楚它到底在“模擬”什么這幾年在算法社區(qū)里看帖發(fā)現(xiàn)一個(gè)很有意思的現(xiàn)象一提起模擬題很多人的第一反應(yīng)是“這不就是照著題目寫代碼嗎有什么技術(shù)含量”。但真到了比賽或者實(shí)際項(xiàng)目里翻車最多的恰恰是這類題目。我自己帶過(guò)不少剛?cè)腴TC競(jìng)賽的新人也在一些嵌入式項(xiàng)目里用模擬邏輯處理過(guò)狀態(tài)機(jī)可以說(shuō)模擬算法遠(yuǎn)不止“照著做”這么簡(jiǎn)單。先說(shuō)定義。模擬算法通常指的是直接用代碼去復(fù)現(xiàn)某個(gè)過(guò)程、某個(gè)規(guī)則、某套系統(tǒng)的運(yùn)行邏輯以此得到問(wèn)題的結(jié)果。它不需要推導(dǎo)復(fù)雜的數(shù)學(xué)公式不需要套用經(jīng)典的數(shù)據(jù)結(jié)構(gòu)模式核心就是把問(wèn)題描述“翻譯”成可執(zhí)行步驟。聽(tīng)起來(lái)很簡(jiǎn)單但這里頭的關(guān)鍵在于怎么把文字描述轉(zhuǎn)換成無(wú)歧義的程序邏輯怎么讓這個(gè)程序在時(shí)限內(nèi)跑完以及怎么處理那些題目描述里語(yǔ)焉不詳?shù)倪吔缜闆r。從應(yīng)用場(chǎng)合來(lái)看模擬算法大致可以分成三類流程模擬比如約瑟夫環(huán)、報(bào)數(shù)出圈、卡片洗牌、排隊(duì)調(diào)度這類題目描述了一個(gè)過(guò)程你要逐步執(zhí)行。系統(tǒng)模擬比如掃雷展開(kāi)、棋類對(duì)弈規(guī)則判斷、電梯調(diào)度、操作系統(tǒng)里的進(jìn)程調(diào)度這類題目涉及多個(gè)對(duì)象之間的交互。數(shù)值模擬比如物理運(yùn)動(dòng)軌跡推算、細(xì)胞自動(dòng)機(jī)生命游戲、隨機(jī)過(guò)程的蒙特卡洛近似這類往往還牽扯到數(shù)值計(jì)算和時(shí)間步長(zhǎng)。你去看各種C項(xiàng)目里的代碼llama.cpp這類大規(guī)模推理引擎雖然核心是矩陣和張量運(yùn)算但它的內(nèi)存管理、任務(wù)隊(duì)列調(diào)度本質(zhì)上也有大量模擬邏輯在里面——用一個(gè)統(tǒng)一模型去預(yù)判和復(fù)現(xiàn)內(nèi)存分配過(guò)程。甚至更簡(jiǎn)單的單例類設(shè)計(jì)在多線程下做狀態(tài)同步時(shí)也常常先寫一個(gè)模擬程序去驗(yàn)證時(shí)序是否正確。所以模擬算法不是競(jìng)賽專屬的“花架子”它貫穿了從入門到工程實(shí)戰(zhàn)的幾乎所有階段。之所以在C里討論模擬算法特別合適是因?yàn)镃的表現(xiàn)力足夠強(qiáng)STL容器幫你組織數(shù)據(jù)原生數(shù)組幫你精確定位下標(biāo)bitset幫你做狀態(tài)壓縮再加上足夠快的運(yùn)行速度讓那些步驟繁多的模擬不至于因?yàn)檎Z(yǔ)言性能而超時(shí)。后面我會(huì)結(jié)合具體題目來(lái)拆你會(huì)感受到同樣的思路用不同數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)代碼復(fù)雜度和運(yùn)行效率能差出一個(gè)量級(jí)。3. 手寫一個(gè)Cpp模擬程序前務(wù)必想清楚的三個(gè)問(wèn)題很多人拿到模擬題第一反應(yīng)是打開(kāi)編輯器就寫。催著寫代碼這個(gè)問(wèn)題我在別人代碼里和自己身上都見(jiàn)過(guò)多次。其實(shí)模擬算法最忌諱的不是想不到“怎么做”而是沒(méi)有把“按什么規(guī)則做”想清楚就開(kāi)始動(dòng)手。代碼寫了一大半才發(fā)現(xiàn)對(duì)題意的理解和出題人不一樣返工成本極高。3.1 狀態(tài)怎么表示選錯(cuò)數(shù)據(jù)結(jié)構(gòu)后面全是淚模擬程序的核心是“狀態(tài)”。每一輪模擬的執(zhí)行本質(zhì)上就是舊狀態(tài)向新?tīng)顟B(tài)的轉(zhuǎn)移。所以第一步要回答這個(gè)狀態(tài)用什么數(shù)據(jù)結(jié)構(gòu)來(lái)裝。以約瑟夫環(huán)為例N個(gè)人圍成一圈從第1個(gè)人開(kāi)始報(bào)數(shù)報(bào)到M的人出圈問(wèn)最后剩下誰(shuí)。最直觀的做法是用數(shù)組標(biāo)記每個(gè)位置是否還在圈內(nèi)然后循環(huán)遍歷計(jì)數(shù)。但如果你用vector直接erase出圈的人那就涉及到元素的移動(dòng)時(shí)間復(fù)雜度退化。再比如隊(duì)列模擬報(bào)數(shù)報(bào)到的數(shù)字不等于M的人從隊(duì)頭彈出放到隊(duì)尾等于M的人徹底彈出這種方式代碼最短也最貼合“循環(huán)”的語(yǔ)義。選擇依據(jù)很簡(jiǎn)單題目里的實(shí)體是一個(gè)有序序列、一個(gè)集合還是一張網(wǎng)絡(luò)序列用數(shù)組或vector集合用unordered_set或bitset網(wǎng)絡(luò)用鄰接表或鄰接矩陣。另一個(gè)判斷標(biāo)準(zhǔn)是看操作類型——頻繁刪除首尾用queue或deque頻繁按下標(biāo)隨機(jī)訪問(wèn)用vector頻繁在中間插入用list。3.2 時(shí)間成本怎么算先估算再動(dòng)手模擬題最容易讓人掉以輕心的是復(fù)雜度。很多題目的規(guī)則本身就意味著海量步數(shù)如果你不看數(shù)據(jù)范圍悶頭“忠實(shí)”地模擬到了線上立馬超時(shí)。判斷一個(gè)模擬方案是否可行有一個(gè)簡(jiǎn)單的辦法把題目給的數(shù)據(jù)范圍上限代入你算法的時(shí)間復(fù)雜度再結(jié)合C在1秒內(nèi)大約能執(zhí)行10的8次方量級(jí)的基礎(chǔ)操作這個(gè)經(jīng)驗(yàn)值看會(huì)不會(huì)超。如果會(huì)超要么想一個(gè)更高效的數(shù)據(jù)結(jié)構(gòu)來(lái)加速模擬要么這道題實(shí)際上需要你找規(guī)律——這就已經(jīng)脫離純模擬而進(jìn)入優(yōu)化范疇了。舉個(gè)例子一個(gè)模擬鐘表指針轉(zhuǎn)動(dòng)的題目如果給你一個(gè)10的18次方級(jí)別的秒數(shù)讓你算時(shí)針?lè)轴樦睾洗螖?shù)“一秒一秒走”的方案在數(shù)學(xué)上沒(méi)錯(cuò)但10的18次方秒顯然不可行。這就是所謂“模擬會(huì)死規(guī)律才會(huì)活”的典型場(chǎng)景。我見(jiàn)過(guò)太多人卡在這種題上不是不會(huì)做而是沒(méi)意識(shí)到模擬步數(shù)已經(jīng)遠(yuǎn)遠(yuǎn)超出了可執(zhí)行范圍。3.3 邊界條件怎么收斂死循環(huán)和越界都出在這種地方模擬程序最常見(jiàn)的運(yùn)行時(shí)問(wèn)題一個(gè)是死循環(huán)一個(gè)是數(shù)組越界一個(gè)是數(shù)據(jù)結(jié)構(gòu)訪問(wèn)不存在的元素。死循環(huán)的根源通常是狀態(tài)不收斂。循環(huán)條件是“直到滿足某條件”但這條條件在反向或循環(huán)狀態(tài)下可能永遠(yuǎn)不滿足。規(guī)避辦法很簡(jiǎn)單給循環(huán)設(shè)置一個(gè)迭代次數(shù)上限比如超過(guò)N的三次方就強(qiáng)制退出并打印當(dāng)前狀態(tài)以便調(diào)試。這在復(fù)雜系統(tǒng)模擬里幾乎是必備手段。數(shù)組越界往往不是粗心而是邏輯上對(duì)“邊界位置”的判定漏了等號(hào)。處理環(huán)形結(jié)構(gòu)時(shí)把下標(biāo)加一圈長(zhǎng)度再取模是常規(guī)操作但取模前是否要減1、取模后是否會(huì)等于N都得仔細(xì)推敲。更穩(wěn)妥的辦法是把用到的數(shù)組開(kāi)大一點(diǎn)比如N最大是1000就開(kāi)1010甚至1005留出冗余避免一些極端下標(biāo)訪問(wèn)直接把程序干崩。這在C里尤其重要因?yàn)関ector的at方法會(huì)拋異常而原生數(shù)組的下標(biāo)訪問(wèn)是狼性行為——錯(cuò)了也不告訴你直到你在調(diào)試器里看出一堆亂碼。4. 三個(gè)經(jīng)典案例的拆解從題目到代碼的完整推演這里選三個(gè)我實(shí)際在比賽和工程中都碰到的場(chǎng)景分別覆蓋線性結(jié)構(gòu)、二維矩陣和文本解析。不光是給最終代碼關(guān)鍵是把從讀題到寫代碼這條思考鏈路完整攤開(kāi)。4.1 約瑟夫環(huán)隊(duì)列模擬與數(shù)學(xué)解法的分界線題目描述大家都很熟了編號(hào)1到N的人圍成一圈從第1個(gè)人開(kāi)始報(bào)數(shù)報(bào)到M的人出局然后從下一個(gè)人開(kāi)始繼續(xù)報(bào)數(shù)求最后存活者的編號(hào)。最貼合過(guò)程的寫法是用隊(duì)列#include bits/stdc.h using namespace std; int main() { int n, m; cin n m; queueint q; for (int i 1; i n; i) q.push(i); int cnt 1; while (q.size() 1) { int cur q.front(); q.pop(); if (cnt m) { cnt 1; } else { cnt; q.push(cur); } } cout q.front() endl; return 0; }這段代碼的思路特別直觀每次取隊(duì)頭相當(dāng)于當(dāng)前報(bào)數(shù)的人。如果報(bào)到了M就出局不再入隊(duì)否則就放到隊(duì)尾體現(xiàn)環(huán)形的語(yǔ)義。這里有一個(gè)容易寫錯(cuò)的小地方cnt是全局計(jì)數(shù)還是每次重新從1開(kāi)始數(shù)按題意出局的下一個(gè)人從1重新報(bào)數(shù)所以要保留全局計(jì)數(shù)只有報(bào)到M時(shí)才重置為1。我在很多新手代碼里看到他們把cnt放在while循環(huán)里重新初始化導(dǎo)致報(bào)數(shù)永遠(yuǎn)從1開(kāi)始結(jié)果完全不對(duì)。另一種常見(jiàn)實(shí)現(xiàn)是數(shù)組標(biāo)記法維護(hù)一個(gè)bool數(shù)組表示某人是否出局然后不斷往后找到下一個(gè)未出局的人。這個(gè)方法適合M比較小、N比較大的情況因?yàn)殛?duì)列實(shí)現(xiàn)需要把不報(bào)數(shù)的人反復(fù)入隊(duì)出隊(duì)操作次數(shù)是O(N*M)當(dāng)M也很大時(shí)會(huì)有性能問(wèn)題。數(shù)組標(biāo)記法雖然時(shí)間復(fù)雜度同樣不低但常數(shù)會(huì)小一些。不過(guò)模擬的局限也在這里當(dāng)N和M都達(dá)到10的6次方甚至更大時(shí)任何模擬方案都會(huì)超時(shí)。這時(shí)候就輪到數(shù)學(xué)遞推上場(chǎng)了最后的勝者編號(hào)f(N, M)滿足f(1)0f(N)(f(N-1)M)%N的遞推式時(shí)間復(fù)雜度只有O(N)。這個(gè)案例說(shuō)明了一個(gè)重要道理模擬是安全的兜底方案但不是最佳方案??吹綌?shù)據(jù)范圍的那一刻你就該判斷是老實(shí)模擬還是尋找規(guī)律。4.2 掃雷展開(kāi)DFS/BFS還是純模擬掃雷游戲的“點(diǎn)開(kāi)空白格自動(dòng)展開(kāi)周圍區(qū)域”功能是二維矩陣模擬的經(jīng)典入門題。給你一個(gè)地雷分布圖和一個(gè)點(diǎn)擊位置要求輸出點(diǎn)開(kāi)后的局面。規(guī)則是點(diǎn)擊的位置如果是雷直接爆炸如果不是雷顯示周圍8個(gè)格子中雷的數(shù)量如果周圍沒(méi)有雷則繼續(xù)展開(kāi)周圍8個(gè)格子——這就是遞歸展開(kāi)。這里有一個(gè)很關(guān)鍵的設(shè)計(jì)決策這個(gè)遞歸展開(kāi)到底用深度優(yōu)先還是廣度優(yōu)先還是說(shuō)用一個(gè)循環(huán)隊(duì)列也能模擬先說(shuō)DFS代碼最簡(jiǎn)#include bits/stdc.h using namespace std; int n, m; vectorstring mp; vectorvectorint vis; int dx[8] {-1, -1, -1, 0, 0, 1, 1, 1}; int dy[8] {-1, 0, 1, -1, 1, -1, 0, 1}; int cntMine(int x, int y) { int cnt 0; for (int i 0; i 8; i) { int nx x dx[i], ny y dy[i]; if (nx 0 nx n ny 0 ny m mp[nx][ny] *) cnt; } return cnt; } void dfs(int x, int y) { if (vis[x][y]) return; vis[x][y] 1; int cnt cntMine(x, y); mp[x][y] char(0 cnt); if (cnt 0) { for (int i 0; i 8; i) { int nx x dx[i], ny y dy[i]; if (nx 0 nx n ny 0 ny m) { dfs(nx, ny); } } } } int main() { cin n m; mp.resize(n); for (int i 0; i n; i) cin mp[i]; vis.assign(n, vectorint(m, 0)); int x, y; cin x y; if (mp[x][y] *) { cout Boom! endl; return 0; } dfs(x, y); for (int i 0; i n; i) cout mp[i] endl; return 0; }這里值得展開(kāi)說(shuō)的地方有三個(gè)。第一個(gè)是方向數(shù)組的寫法。dx和dy數(shù)組按行排列把8個(gè)方向的偏移量預(yù)先寫死。這比在每個(gè)判斷里寫8行if要清晰得多而且不容易漏方向。我自己的習(xí)慣是把方向數(shù)組定義在全局區(qū)讓多個(gè)函數(shù)都能直接引用免得在函數(shù)之間反復(fù)傳參。第二個(gè)是邊界判定。每次計(jì)算neighbor坐標(biāo)時(shí)都要檢查nx和ny是否在有效范圍內(nèi)。這個(gè)檢查不能省否則DFS會(huì)越界。稍微懂一點(diǎn)工程經(jīng)驗(yàn)的人會(huì)寫一個(gè)isValidLambda但C競(jìng)賽代碼里直接寫if語(yǔ)句是最快的。第三個(gè)是vis數(shù)組的作用。它不是必須的因?yàn)槿绻褡右呀?jīng)被揭開(kāi)它的值不再等于原來(lái)的?或標(biāo)記字符下次展開(kāi)時(shí)其實(shí)可以靠字符狀態(tài)判斷是否訪問(wèn)過(guò)。但加上vis數(shù)組可以避免一些特殊局面下的重復(fù)遞歸也對(duì)代碼的可讀性有幫助。用上vis數(shù)組就意味著把“訪問(wèn)狀態(tài)”和“面板內(nèi)容”解耦了這在大型模擬中是很重要的設(shè)計(jì)意識(shí)——狀態(tài)本身和展示內(nèi)容經(jīng)常是兩回事。關(guān)于選擇DFS還是BFSDFS實(shí)現(xiàn)簡(jiǎn)潔但由于系統(tǒng)棧深度是有限的默認(rèn)通常在1MB到8MB之間如果棋盤特別大遞歸深度可能撐爆。BFS用queue存儲(chǔ)待擴(kuò)展節(jié)點(diǎn)不會(huì)爆棧但代碼稍微長(zhǎng)一點(diǎn)。我個(gè)人建議在遞歸深度可控的題目里貪圖DFS的簡(jiǎn)潔沒(méi)問(wèn)題一旦矩陣能到達(dá)1000x1000級(jí)別直接上BFS。4.3 文本替換與指令解析最容易被忽視的模擬分水嶺除了數(shù)組和矩陣類模擬還有一大類模擬題是“解析字符串指令”。這類題目在工程里極其常見(jiàn)——你寫一個(gè)配置文件解析器、一個(gè)簡(jiǎn)單的腳本解釋器、一個(gè)命令行工具本質(zhì)上都是逐行讀取、按規(guī)則拆分、根據(jù)指令執(zhí)行。舉個(gè)我處理過(guò)的例子實(shí)現(xiàn)一個(gè)自定義日志格式轉(zhuǎn)換器輸入若干行日志命令一部分是普通文本行一部分是變量賦值語(yǔ)句格式為“變量名變量值”還有一類是輸出指令“print 變量名或文本”。要求按順序執(zhí)行把最終輸出結(jié)果打印出來(lái)。用C實(shí)現(xiàn)第一步是選對(duì)輸入讀取方式。逐行讀取用getline不要用cin因?yàn)閏in遇到空格就會(huì)截?cái)喽鴰Э崭竦奈谋拘刑?。第二步是?duì)每一行做前綴判斷它是賦值行還是print行還是普通文本。第三步是建一個(gè)mapstring, string存儲(chǔ)變量值。#include bits/stdc.h using namespace std; int main() { int n; cin n; cin.ignore(); mapstring, string vars; string line; for (int i 0; i n; i) { getline(cin, line); if (line.rfind(print, 0) 0) { string content line.substr(6); if (!content.empty() content[0] $) { string varName content.substr(1); if (vars.count(varName)) cout vars[varName] endl; else cout undefined endl; } else { cout content endl; } } else if (line.find() ! string::npos) { int pos line.find(); string key line.substr(0, pos); string value line.substr(pos 1); vars[key] value; } } return 0; }這個(gè)例子看起來(lái)簡(jiǎn)單里面其實(shí)有一個(gè)極其經(jīng)典的坑讀取完n之后的那個(gè)換行符必須用cin.ignore()清掉否則第一次getline會(huì)直接讀到一個(gè)空行后續(xù)所有邏輯都錯(cuò)位。這種輸入緩沖區(qū)殘留問(wèn)題是模擬題里最常見(jiàn)的“本地樣例過(guò)、提交WA”的元兇之一。另一個(gè)值得養(yǎng)成習(xí)慣的地方是解析字符串時(shí)優(yōu)先用rfind判斷前綴。C20的starts_with是更優(yōu)雅的寫法但很多舊OJ不支持。rfind(name, 0)0相當(dāng)于判斷字符串是否以name開(kāi)頭這是老代碼中廣泛使用的技巧。麻煩的是如果你用find(name) 0來(lái)判斷雖然大多數(shù)情況下等價(jià)但有些實(shí)現(xiàn)會(huì)有細(xì)微行為差異穩(wěn)妥起見(jiàn)用rfind。從工程角度說(shuō)這類模擬解析器的設(shè)計(jì)模式也可以遷移到更大型的C項(xiàng)目里。比如llama.cpp的推理參數(shù)解析、各種命令行工具的flag解析底層邏輯都脫不開(kāi)“按行讀、按規(guī)則拆、分派處理”。你在刷題時(shí)形成的這種“把模糊需求拆成精確規(guī)則”的能力比記住任何具體API都值錢。5. 模擬題里最容易翻車的四個(gè)坑踩過(guò)才記得住要說(shuō)刷模擬題最大的收獲我覺(jué)得不是會(huì)寫代碼而是知道“哪些地方會(huì)莫名其妙出錯(cuò)”。下面這幾個(gè)坑幾乎每個(gè)都是我親手踩過(guò)、或者在幫別人查錯(cuò)時(shí)親眼見(jiàn)過(guò)的。5.1 輸入格式里的隱藏空格和換行符這是新手翻車率最高的一處。題目說(shuō)“每行兩個(gè)整數(shù)以一個(gè)空格隔開(kāi)”你用cin就能讀得干干凈凈。但一旦題目說(shuō)“第一行一個(gè)整數(shù)n接下來(lái)n行字符串”而字符串可能為空行或包含空格時(shí)cin和getline混用就是災(zāi)難。cin讀完n后換行符還殘留在緩沖區(qū)緊接著的getline會(huì)先把空行讀走。解決這個(gè)問(wèn)題的標(biāo)準(zhǔn)姿勢(shì)是在cin之后、getline之前加cin.ignore()或者干脆統(tǒng)一用getline讀取再用istringstream做詞法拆分。商用的做法是寫一個(gè)readInt和readLine的封裝函數(shù)把所有輸入讀取集中到一個(gè)地方這樣出錯(cuò)了只需要改一處。我在實(shí)際項(xiàng)目里寫配置解析器時(shí)也是這個(gè)思路。5.2 多組測(cè)試數(shù)據(jù)的重置時(shí)機(jī)很多OJ題目會(huì)有多組測(cè)試數(shù)據(jù)每組數(shù)據(jù)之間共享一些全局變量或靜態(tài)數(shù)組。如果你忘了在每輪開(kāi)始前重置上一輪殘留的數(shù)據(jù)就會(huì)污染下一輪。這種錯(cuò)誤最陰險(xiǎn)的地方是——第一組數(shù)據(jù)往往是對(duì)的第二組開(kāi)始出錯(cuò)而且錯(cuò)誤信息還千奇百怪。解決問(wèn)題的方案很樸素所有可變狀態(tài)都定義在循環(huán)內(nèi)部不要定義成全局。如果必須用全局明確寫一個(gè)init函數(shù)在每組數(shù)據(jù)開(kāi)始時(shí)調(diào)用??梢园堰@個(gè)init函數(shù)寫全把該清零的全部清零包括計(jì)數(shù)器、標(biāo)記數(shù)組、容器尺寸寧可多做不要漏做。我自己還習(xí)慣在init函數(shù)末尾打一條assert確認(rèn)關(guān)鍵狀態(tài)已經(jīng)被重置這在debug階段非常有幫助。5.3 浮點(diǎn)數(shù)比較精度模擬“無(wú)窮小”的時(shí)候別直接用等于有一類模擬題會(huì)涉及浮點(diǎn)數(shù)比如模擬一個(gè)小球在重力作用下的反彈判斷某時(shí)刻是否到達(dá)某個(gè)位置。最自然的寫法是判斷當(dāng)前位置是否等于目標(biāo)位置但浮點(diǎn)數(shù)運(yùn)算的誤差會(huì)讓這個(gè)“等于”永遠(yuǎn)為假。正確做法是設(shè)置一個(gè)很小的epsilon比如1e-9凡是|a - b| eps就認(rèn)為相等。這個(gè)eps的大小也有講究設(shè)得太小誤差會(huì)被當(dāng)成不相等設(shè)得太大可能把本不該相等的兩個(gè)值合并。一個(gè)可用經(jīng)驗(yàn)是根據(jù)題目里給出的精度要求來(lái)判斷——如果保留一位小數(shù)eps取1e-6就夠了如果精確到1e-9那eps再往下取兩三個(gè)數(shù)量級(jí)。當(dāng)然更推薦的方案是盡量避開(kāi)浮點(diǎn)數(shù)。比如把等距位移的問(wèn)題轉(zhuǎn)換成整數(shù)步長(zhǎng)用“走了多少步”代替“走了多少距離”這在物理模擬題里經(jīng)常能把一個(gè)浮點(diǎn)bug變成一個(gè)整數(shù)邏輯問(wèn)題從而完全消除精度困擾。5.4 看似無(wú)關(guān)緊要的順序問(wèn)題先判斷還是先更新模擬的本質(zhì)是“按規(guī)則逐輪推進(jìn)狀態(tài)”那么每輪循環(huán)里先執(zhí)行哪一條規(guī)則、后執(zhí)行哪一條規(guī)則會(huì)對(duì)結(jié)果產(chǎn)生決定性影響。最常見(jiàn)的問(wèn)題是邊界條件應(yīng)該在一輪開(kāi)始判斷還是在一輪結(jié)束后判斷這讓我想起鍛煉里“先熱身還是先拉伸”的爭(zhēng)論。其實(shí)沒(méi)有統(tǒng)一答案完全取決于題目的定義。能做的是讀題時(shí)把“第X步之前”“執(zhí)行完Y之后”這類時(shí)間狀語(yǔ)圈出來(lái)然后嚴(yán)格按照時(shí)間線順序編碼。養(yǎng)成一個(gè)習(xí)慣在代碼注釋里把時(shí)間線寫清楚比如“// 第1步輸入預(yù)定”→“// 第2步判斷是否有人到達(dá)終點(diǎn)”→“// 第3步移動(dòng)”。這個(gè)注釋不光是給讀者看的更重要的是逼你自己把順序理清避免腦子一熱就把兩步并成一步寫了。6. 從模擬到“趕時(shí)間”時(shí)間復(fù)雜度殺手與優(yōu)化思路模擬題做到后面你一定會(huì)遇到一個(gè)瓶頸邏輯完全正確步驟完全忠實(shí)但就是超時(shí)。這時(shí)候你面對(duì)的不是“不會(huì)寫”而是“寫得太慢”。6.1 怎么判斷模擬會(huì)超時(shí)判斷的方法其實(shí)很簡(jiǎn)單前面也已經(jīng)提過(guò)把數(shù)據(jù)范圍上限代入算法復(fù)雜度對(duì)比1秒執(zhí)行10的8次方到10的9次方次基本操作的經(jīng)驗(yàn)值。需要特別提醒的是C的vector和map操作比基本for循環(huán)要慢不少所以同一個(gè)復(fù)雜度下用map的程序可能比用數(shù)組的程序慢3到5倍。這也是為什么競(jìng)賽代碼里能開(kāi)數(shù)組就開(kāi)數(shù)組實(shí)在不行才用哈希表。模擬程序還有一個(gè)特點(diǎn)它的實(shí)際運(yùn)行時(shí)間高度依賴輸入數(shù)據(jù)本身而不是只依賴數(shù)據(jù)規(guī)模。比如模擬一個(gè)隊(duì)列的進(jìn)出隊(duì)操作如果輸入數(shù)據(jù)導(dǎo)致隊(duì)列長(zhǎng)期保持很大規(guī)模那頻繁的push和pop都會(huì)比數(shù)據(jù)規(guī)模本身消耗更多時(shí)間。所以在評(píng)估“會(huì)不會(huì)超”時(shí)不要只看N有多大還要考慮模擬過(guò)程中單個(gè)狀態(tài)上的操作是否可能反復(fù)執(zhí)行很多遍。6.2 從模擬轉(zhuǎn)向規(guī)律輾轉(zhuǎn)相除法的啟示這里我想特別提一下輾轉(zhuǎn)相除法這個(gè)經(jīng)典算法。你單純按“模擬”去看它就是不斷做“大數(shù)除以小數(shù)余數(shù)替換大數(shù)”這個(gè)反復(fù)操作。如果M和N都很大一步一步模擬運(yùn)算次數(shù)其實(shí)也不小。但歐幾里得發(fā)現(xiàn)這個(gè)過(guò)程有嚴(yán)格的對(duì)數(shù)復(fù)雜度——因?yàn)槊看纬ê笥鄶?shù)至少減小一半。這就是“找到了過(guò)程中的規(guī)律從而把模擬優(yōu)化成公式”的極致例子。很多看上去需要模擬的題目當(dāng)你把模擬過(guò)程列出來(lái)盯著每一步的狀態(tài)轉(zhuǎn)移看了半小時(shí)后可能會(huì)發(fā)現(xiàn)某個(gè)量是單調(diào)的、循環(huán)的、或者能用前綴和預(yù)計(jì)算的。這個(gè)時(shí)候你走的已經(jīng)不是模擬的路線而是把模擬當(dāng)作觀察平臺(tái)找到更高級(jí)的優(yōu)化思路。這也是我特別建議模擬題做的原因它逼你先完整理解過(guò)程再動(dòng)手優(yōu)化而不是一上來(lái)就套模板。6.3 常見(jiàn)優(yōu)化技術(shù)清單這里列一個(gè)我在實(shí)際寫代碼時(shí)會(huì)過(guò)的清單按使用頻率從高到低排列下標(biāo)映射把對(duì)象編號(hào)從0開(kāi)始而不是從1開(kāi)始能夠少處理很多邊界也方便取模運(yùn)算。方向數(shù)組處理網(wǎng)格移動(dòng)時(shí)用dx/dy數(shù)組代替一堆if代碼更短bug更少。狀態(tài)壓縮當(dāng)狀態(tài)只有“是/否”兩種可能時(shí)用bitset代替bool數(shù)組或者用整型的位運(yùn)算來(lái)代表多個(gè)開(kāi)關(guān)可以大幅減少內(nèi)存和拷貝時(shí)間。事件驅(qū)動(dòng)模擬系統(tǒng)的推進(jìn)不一定按固定時(shí)間步長(zhǎng)。如果兩次“事件”之間沒(méi)有任何變化可以直接跳躍到下一個(gè)事件發(fā)生點(diǎn)。這在離散事件模擬如進(jìn)程調(diào)度里特別有用。記憶化如果模擬過(guò)程中反復(fù)計(jì)算某個(gè)子狀態(tài)的結(jié)果用一個(gè)表存起來(lái)第二次直接用——本質(zhì)上就是從模擬過(guò)渡到動(dòng)態(tài)規(guī)劃。6.4 工程實(shí)戰(zhàn)里的模擬單例模式和llama.cpp的啟示最后想聯(lián)系熱詞里提到的兩個(gè)方向。一個(gè)是C的單例類很多人覺(jué)得單例只是個(gè)設(shè)計(jì)模式跟模擬無(wú)關(guān)。但你在多線程環(huán)境下測(cè)試單例的線程安全性很難靠“看代碼”得出結(jié)論通常要寫一個(gè)模擬程序創(chuàng)建大量線程同時(shí)獲取實(shí)例觀察是否會(huì)出現(xiàn)重復(fù)構(gòu)造或者異常狀態(tài)。這個(gè)模擬過(guò)程本身就是在驗(yàn)證系統(tǒng)行為和我們前面說(shuō)的系統(tǒng)模擬如出一轍。另一個(gè)是llama.cpp。我最近在看llama.cpp的源碼時(shí)注意到它雖然是一個(gè)推理引擎但在CPU offload到內(nèi)存的時(shí)候做了大量“模擬內(nèi)存布局”的工作——預(yù)估每層張量的大小、排布方式、對(duì)齊要求然后整塊分配。這種操作其實(shí)就是在模擬一個(gè)內(nèi)存分配過(guò)程。如果你能熟練在競(jìng)賽題里做“模擬內(nèi)存池分配”之類的題目理解llama.cpp的這類代碼會(huì)輕松很多。所以說(shuō)模擬算法的適用范圍早已不局限于OJ它可以滲透到任何需要“通過(guò)代碼復(fù)現(xiàn)過(guò)程”的場(chǎng)景。再?gòu)?fù)雜的框架再精妙的設(shè)計(jì)模式抽絲剝繭之后底層往往都有一段樸素的模擬邏輯在支撐。把模擬基本功打好等于給自己裝上了一雙能看清各種復(fù)雜系統(tǒng)的眼睛。我自己這些年在寫模擬類程序時(shí)最深的體會(huì)是寧可多花十分鐘把題目中的每一步規(guī)則、每一個(gè)邊界條件理清楚也不要在代碼寫到一半的時(shí)候返工。模擬算法的代碼量未必大但它對(duì)邏輯嚴(yán)謹(jǐn)性的要求在全算法領(lǐng)域都是數(shù)一數(shù)二的。多數(shù)WA和TLE根源都不在“算法沒(méi)學(xué)夠”而在于“規(guī)則沒(méi)看清、狀態(tài)沒(méi)設(shè)好、復(fù)雜度沒(méi)算準(zhǔn)”。希望這篇梳理能讓你在下一道模擬題面前少走一些我當(dāng)年走過(guò)的彎路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
中文字幕jul-617人妻熟女| 欧美一区91大爱| 爱爱60秒免费视频| 2017超碰| 久久伊人大香蕉| 91熟女网| 欧美黄片欧美黄片xxx| 日韩在线观看AV| 激情久久久| 草蕉影视亚洲无码| 亚洲最大成人a毛毛片| 大香蕉AV丝袜| 久久久久国产精品片区无码直播| 丝袜av一区二区三区| 无码人妻精品一区二区中文| 国产乱码久久久久久| 少妇一区二区三区高速| 91精品少妇搡搡搡| 欧美男人一区| 东京热视频网| 超碰视97中文| 久久久久久亚洲精品不卡人乳 | 五月激情在线| 久久久久亚洲熟妇熟女| 一二三卡欧美日韩人妻免费精品| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 中文欧丝袜诱惑| 欧美系列在线一区二区| 精品人妻15区| 久久久av爱| 激情久久久| 欧美天天综合网| 99国产天美| 天天操天天舔| 无码久久国产| 91模特在线观看| 少妇毛片久久| 色婷婷视频| 麻豆视频国产一区二区| 九九九一二三| 超碰导航97| 97激情97激情| 国产白领连续中出在线观看| 天天综合网站| 亚洲日产专区| 日本色婷婷| 人人 操人人 操人人| 97欧美| 黄色工厂这里只有精品| 亚洲欧美清纯| 91亚洲最新在线| 大乔未久88一区| 超硑97精品| 九热视频| 色情综合| 欧亚综合一卡二卡中文字幕| 九九无码久久精品视频| 欧美亚洲丝袜美女电影| 中文字幕人妻色偷偷久久皮 | 亚洲天堂自拍| A一级色女| 美女骚尻视频| 亚州欧美在线| 丰满人妻-区二区三区免费看| 超碰99re| 久久毛卡| 丰满少妇一区二区三区专区| www.高清无码诱惑一区.com| 亚州,欧美在线| 亚洲视频精选| 无码WWW免费视频网站| 色婷婷九月天天综合| 久久综合资源一区二区| 温婉少妇玩3p| 性欧美另类高清| 久久色一区二区| 夜色97| 人妻精品一区二区| 一区二区三区探花在线观看| 97精品国产97久久久久久| 天天综合网1| 97久久久久久久久久| 日产欧美电影一区二区三区| 日本精品不卡一二三区| 秋霞一区二区三区四区五区六区七区| K8久久久久| 国产黄色在线播放观看| 黄污污污污| 日韩av熟女一区二区三区成人| 一色网男人的天堂| 亚洲精品欧美专业| 亚洲高潮影院| 狠狠操官网| 极品色社| 国产精品农村妇女| 丁香五月激情综合| 伦理日韩国产久久| 欧美精品xxxwww| 国产老熟女| 日本二区不卡| 中文字幕在线免费观看视频| 色狠狠一区二区三区香蕉| aaaa少妇高潮大片| 99最新日韩偷拍视频| 国产欧美在线观看免费观看| 国产毛片久久久久久久| 亚洲综合影视| 欧美αv.com| 日韩欧美资源| 插欧洲美女欧美精品| 任我爽在线视频免费观看| 人妻81p| 亚洲欧美综合图片| 色乱二区| 18禁止看精品中文字幕| 国产精品农村妇女| 国产高清在线自在拍69| 天天舔九色婷婷| 麻豆国产尤物AV| 日韩精品一区二区日韩| 日本中文字幕不卡视频| 中文字幕三四五区| 国产精品乱码久久久| 熟女精品一区二区在线观看| 亚洲情色五月天 | 99精品久久久久久| 精品无码一二三四区| 性爱动态120秒| 一级免费啪啪片| 亚洲午夜福利视频| 自拍偷拍 日韩无码| 强奸乱伦亚洲第一页| 亚洲高清自拍| 欧美亚洲国产91在线| 欧美日韩久久精品爱爱| 黄页av| 四虎影视欧美| 三级日本一区二区三区| 影音先锋日本一区二区| 情色AV电影| 国产18精品亚洲精品| 不卡免费av在线播放| 国产伦乱91| 午夜男女爽爽爽在线视频| 在线观看黄色电话| 五月色丁香| av婷婷色网| 青青草精品| 久久m| 死我十八禁| 欲色综合| 人人潮人人摸| 玖玖视频在线资源一区二区三区| 日产国产精品中文久久婷婷| 97av,com| 91精品人| 久久精品性| 日本亚洲vr欧美不卡高清专区| 美女诱惑1区2区| 成人黄页| 男人女人18禁片免费看网站| 久久国内| 国产精品久久久蜜臀| 欲女人妻性色av| 七月婷婷综合| 色狠狠综合| 亚洲视频小说| 久久精品国产亚洲AV清纯| 操逼片国产| 日本在线不卡123| 物业黑人 AV一区| 国产强奸乱伦无码视频| 你懂得91| 91天堂丝袜美腿| 国产欧美精选激情视频| 精品四五区| 欧美丝袜91| 国产操操日韩三级黄| 欧美亚洲激情小说| 999综合网| 717影院理论午夜伦八戒| 久久伊人在线五区| 久久夜夜| 久久久精品视频免费观看| 亚洲精品丝袜-不卡成人免费……| 国产97视频免费观看| 精久久久| 97草草| 狠色婷婷久久一区二区三区_| 青青草操逼逼视频| 国产动漫操逼视频| 国产高清MV操逼视频| 日韩一级性爱无码| 日本伦乱九九九综合| 久久精品无码不卡| 欧美日韩国产三级黄色| 最新啪啪视频| 美女91AV| 97人人爱人人做人人乐| 丝袜狠狠草尤物人妻av91| 99在线精品观看视频中文| 激情丁香五月婷婷| 色五月天AV| 97天天爽| 天天天操天天天爱| 婷婷探花久久精品一区| 国语对白在线播放视频| 日韩欧美女求操每天更新| 超碰人人妻| 国产二区三区免费视频| 亚洲综合情色| 97视频网站在线观看| 亚洲无码超碰免费| 正宗无毛一线天嫩逼| 国产又黄又猛又粗又爽的网站| 国产精品999aaa| 我中文字幕6区| 六月婷婷色综合| a片 xxxx受爽视频| 久久视频,这里只有精品| 九月婷婷综合| HEYZO高无码国产精品227| 97在线视频免费看| 亚洲熟女偷拍在线观看| 婷婷五月天久久精品视频一区二区三区| 人人看人人插| 日韩啊V| 国产精品69久久久久孕妇欧美| 丰满少妇一区二区三区专区| 岛国片在线观看视频亚洲| 色吧 综合| 久久粉色| 少妇天堂| 亚洲天堂资源网| 久超碰这里只有精品| 成人精品视频一区二区| 日本天堂网| 这里有精品| 一级免费啪啪片| 欧美网站免费| 久操不卡视频| 五月婷婷综合激情| 九九在线精品| 中文字幕国产精品1区| 色婷婷狠狠| 国产一级片| 国产成人精品亚洲日本| 91丨九色丨东北熟女| 欧美黄色片AAAAA| 综合激情婷婷| 青青操青娱乐| 精品96久久| 久热久操| 久久精品无码熟妇一区二区三区视频导航 | 亚洲综合性网址| 东京热一区二区三区四区五区六区| 99热亚洲| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 美女91在线观看| 超碰人妻中文在线| 欧美在线综合| 久久久久久久9| 狠狠爱综合网| 凸凹视频在线观看| 欧美综合网1| 久久中出在线| 偷窥自拍亚洲| 粉嫩在线一区二区懂色| 久久精品国产Aⅴ| KK色在线影院| 男人的天堂久久狠| 五十路六十路七十路熟婆| 亚洲情色一区三区| 亚洲中文国际强奸字幕| 亚洲天堂另类| 大香蕉 222| 男人高清无码一区二区| 日日AAvv| 婷婷三区| 精品区国产区一区二区三区| 大香蕉伊人75| 欧美视频激情久久久久久| 国产操偷| 日韩日本欧美在线观看| 久久人妻无码毛片A片麻豆| 大香蕉九九| 乱伦一二三区| 少妇无码999| 天堂伊人久久| 亚洲综合色男人网| 免费中文在线| 男女激烈网站最新| 久久久久久人| 青青草色情网站视频| 25国产精品免费观看| 二男一女成人A片| 伊人天天久久动态图| 精品乱码在线观看| 午夜影美女日鸡鸡天天视频国产| 亚洲欧洲综合av在线| 国产91乱伦| 久热久| 日韩免费人妻色情网站| 日日摸日日碰夜夜爽视频| 国产传媒av天美传媒在线| 操逼天美3区| 伊人久久艹| 精品美女少妇一区二区三区| 99rre在线精品99re8| 影音先锋日本乱伦| 五月天丁香| 亚洲九九爱| 青娱乐国产剧情av一区| 精品国产72| 91久久精品中文字幕| 伊人操| 91色s| 2003天天干夜夜操| 78综合网| 青青草九九九九九| 大香蕉啪啪啪| 午夜影美女日鸡鸡天天视频国产| 秋霞色色影院| 在线洲亚线| 久久久久久久久久久久久久久久9| 免费观看啪视频| 天堂俺去俺来也www久久婷婷| 91亚洲电影| 黑丝制服中文字幕| 2003天天干夜夜操| 日本精品九九九| 啊啊啊97视频| 日本 免费 一区二区三区 久久香蕉 | 色777999综合| 欧美丝袜美女电影一二三四区| 使劲用力艹少妇视频一区二区| 精彩久久中文| 亚洲天天综合| 欧美视频边做饭边橾| 91美女中出| 免费观看啪视频| 综合色播| 操久久久久久| 夜夜躁狠狠躁日日躁av| 超碰在线成人电影| 中文字幕人乱码中文字的预防方法| 中国一区二区亚洲人妻| 超97在线精品视频| 色狠狠 - 百度| 亚洲欧美色图小说| 黄色视频60分钟| 在线播放成人高清免费视频| 久久精品一区二区一8| 97啪啪| 九九九精品一区二区无码| 一区二区三区机械有限公司| 久久精品国产亚洲妲己影视| 久久97超碰香蕉| 欧美97在线欧| 自慰白浆在线观看| 久9久精品视频| 综合久久久久久久久91| 开心五月深爱五月| rivers-china.com| 台湾大香蕉99热| 日本熟妇自慰性高潮一区二区三区| 天堂蜜桃无码视频一区二区| 爱妃国产亚洲视频中文字幕| 91网站18| 大香蕉亚洲中文| 欧美日韩插逼视频| 日韩性色| 首页亚洲国产高跟丝袜诱惑视频| 欧美 亚洲 综合 制服 另类| 伊人专区一区二区三区| 用力操死我| 老鸭窝成人免费毛片视频| 看黄片视频免费| 99综合自拍| 91亚洲欧洲| 五月激情小说| 亚洲欧美91| 十八禁啪啦拍视频无遮挡| 941超碰| 高潮的A片激情扒开一区| 久热伊人99re| 香蕉99秘 一区精品蜜桃臀| 亚洲天堂99| 亚洲美腿丝袜香蕉影视欧美成人| 黑人嘿嘿嘿超爽免费视频| 婷婷15月天青娱乐| 免费精品中文字幕| 精人妻无码一区二区三区伊人直播| 天天干天天燥| 久久伦理视频久久大香蕉视频| 老司机天天操| 日韩av影片在线观看| 亚洲色图欧美色图制服诱惑| 国语国产操逼伊人AV网| 精品无码产区一区二| 国产精品久久久久久 百度| 久操影视| 欧美色五月| 啊啊啊免费| 大香交伊人网| yaouchengrenav| www四虎| 免费国产电影一区二区| 欧美视频激情久久久久久| 又粗又长又爽在线观看| 玖日综合网| 成人av免费观看| 97欧美在线| 夜夜狼人妻| 国产一级特黄大片处女| 91精品婷婷国产综合久久| 人妻22p| 久久精品| 国产1727欧美| 成视频在线观看免费看| 狠狠操使劲操| 中日韩久久久免费看| 九月婷婷| 2017人人操,人人摸| 狠狠操狠狠燥| 亚洲人成网www| 日韩av电影成人在线| 超碰97首页| 99色热| 国产成人拍国产亚洲精品| 操91| 91最新综合| 蜜乳性色无码专日粉嫩骚逼AV| 亚洲综合网91| 91丨九色丨东北熟女| 青娱乐淫乱1314| 99re99视频在线免费观看| 精品少妇一区二区三区在线视频| 操逼无码操逼| 亚洲成人AB| 一区二区三区男女操逼黄色小电影| 午夜乱轮操逼视频免费看| 亚洲国产97在线精品一区| 白丝1区2区3区| 岛国视频免费在线观看| 99久久精品国产系列| 免费草草草草草视频| 久久天天摸| 日本人人操人人操| 自拍偷拍第26| 久久久久久久97| 最新9久久久9免费视频| 中文字幕av久久爽Av| 99久久网站| 天天色黄色影院天天操| 国产一级高清免费观看| 素人伊尹大香蕉免费下载视频| 一区二区三区四区五区高清无码永久视频 | 亚洲 综合 欧美| 中文字幕一区二区韩| 好爽视频在线观看视频| 亚洲欧美天| 伊人一区二区三区| 99热亚洲天堂| 校园春色综合| 中文字幕成人| 中文字幕性感少妇av| 国产精品黄色三级av| 大色综合| 欧美翘臀视频网站一区二区三区| 久久久无码精品人妻二区| 亚洲无限观看| 日本片日本片祼观看网站在线看中文版网页在线看 | 射丝袜大香蕉| 欧美大片天天看| 一区二区三区国产精产| 青青草视频久久| 超碰人人草| 国产粉嫩出水在线播放| 欧美性爱三区二区| 手机在线视频国内精品| 国产亚洲中文不卡二区| 99老司机精品视频在线观看| 欧美综合国产精品久久丁香| a片自拍直播视频| 日韩91网站| 91情色在线| 日韩欧美三级| 欧美天天搞| 97日亚洲欧美| 中文字幕蜜乳av| 男女一进一出视频久久| 国产1024在线播放| 熟妇的味道HD中文字幕| 国产一区二区三区久久久精品| 欧美一级美片在线观看免费| 少妇一区二区三区精选| 国产白嫩漂亮KTV在线| 成人5码视频| 国产不卡免费在线视频| 一区二区视频在线播放| 久久婷婷综合国际产色怕| 国产成人精品亚洲日本| 五月丁香六月| 亚洲男人天堂网久久| 男人天堂久久日韩| 欧美激情久久久久| 欧美图片校园春色| 九九九九AV| 偷拍盗拍亚洲色图图片| 高清孕妇孕交 交孕妇| 蜜臀久久99精品久久久久久成人小说 | 熟妇视频一区二区三区在线观看| 日韩国产十八禁| 五毛骚逼极品美女怕怕| 蜜桃臀av一区二区| 精品午夜福利导航| 精品国产a∨一区天美传媒| 九七人妻在线| 久热婷婷| 德国一二三不卡| 亚洲老司机123专区| 玖玖大干人妻| 无遮挡男女激烈动态图| 国产一区二区三区久久久精品| 欧美日韩性爱操大逼| 涩涩五月天| 国产高清不卡视频| 成人精品久久| 国产极品精品美女视频| 久久久激情| 欧美日韩国产电影| 亚洲人妻爽爽爽| 久久久久久久久久va| 69精品久久久久中文字幕| 久久久艹艹艹| 亚洲做性| 大香蕉视频一二三区| 国产综合操逼高清| 好看的91视频| 国产又黄又爽| 十八禁啪啦拍视频无遮挡| 久久综合精品一区二区三区| 精品一区二区2| 岛国免费视频在线| 色情成人五月天| 久久久久亚洲精品| 日本操逼视频导航| 尹人免费观看视频在线| 防屏蔽在线视频| 超碰69| 国产精品视频内谢女人| 97婷婷色| 蜜桃臀久久| 日本操逼视频不卡直接放| 桃色五月天| 中文在线视频| 国产精品亚洲天堂网址| 久久久久性熟视频| 一区二区三区麻豆| 欧洲熟妇xxXx欧美老妇裸体 | 无码免费在线观看黄色片| 色色国产| 国产精品伦理| 欧美麻豆成人同性GⅤ在线| 国产中文福利| 人妻一区二区三区视频 | 国产农村一一级特黄毛片| 中文幕97| AA级电影三区| 久久精品天美| 亚洲av综合伊人久久| 曰韩欧美国产传媒麻豆第一区| 欧美图片校园春色| 婷婷色导航| 午夜操操操| 日韩乱伦视频| 国产视频97| 欧美成人黄网色网站| 欧美激情亚洲情色| 日本精品高清一二区一本到| 97欧美色综合| 干婷婷综合网| 精品人妻一区二区三区四区| 中文字幕一区日韩精| 婷婷五月天色网| 综合欧美日本三级| 国产一区二区在线看| 开心五月激情网| 亚洲综合有码| 91久精品| 国产精品69久久久久久久| 性爱乱伦一区| 中国91AV| 午夜精品99久久久久传媒| 69天堂| 丝袜喷水在线| 2018天天干在线视频| 日本精品久久久久久久| 欧美性爱精品一区二区| 色吊丝 日日骚 清纯唯美| 欧美后进式| 国产又粗又大硬免费色网视频| 800zy一区二区| 二男一女成人A片| 青青草女人天天干| julia高潮后不停追击中出| 国产女人视频三四五区| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 91男人综合| 激情自拍 校园春色| 成人五月天丁香激情综合| 夜草欧美| 精品国产片亚洲一区| 色香综合| 最新av在线| 任你爽视频| 成年人网站在线免费观看| 少妇精品久久久| 开心五月天激情网| 亚洲男人久久综合天堂| 亚洲少妇综合| 日韩av色图综合| 亚洲午夜福利视频| 天堂v无码免费视频| 蘋果手機免費看成人Av| 天天综合色| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 岛国人妻少妇av在线观看| 无码精品一区二区三区潘金莲| 999热日韩精品| 蜜桃精品一区二区三区ww| 岛国网址国产 | 亚洲人妻久久久| 岛国小电影| 国产亚洲精品第一最新| 亚洲无码 国产无码| 天天草AV| 色性荡荡荡荡视频| 欧美性爱另类综合| 国产成人精品必看| 亚洲欧美另类小说| 香蕉大久久久| 99九九久久| 九九这里只有精品| 无码最新| 国产无马在线| 99re视频这里只有精品| 97久久国产亚洲精品超碰热| 欧美色图片91| 欧美日不卡| 国产成人无码网站在线视频| 精品成人无码| 亚洲色图欧美一区二区不卡| 强乱老妇中文字幕| 中文字幕在线2| 国产农村妇女精品1区二区| 久热这里| av资源在线播放天堂| 久草免费福利在线播放| 日韩极品无码B| 国产400孕妇孕交群| 国产在线激情| 91亚洲狠狠色| 91伊人久久在线| 今日头条成人一区二区三区四虎精品| 久jiu久神马影院| 欧美色婷婷| 亚洲午夜福利视频| 大伊香蕉在线视频免费| 欧美αv.com| 少妇厨房愉情理伦片bd在线观看| 欧美色人| 五月婷亚洲精品天堂| 美性中文综合网| 熟女自慰久久久| 有码人妻系列| 国产13区| 一二三啪啪专区| 午夜精品99久久久久传媒| 红杏大香蕉| 久久麻豆一区二区| 日韩啪啪啪啪啪| 美女刺激久久国产欧美| 熟妇在线视频一区二区| 婷婷五月丁香五月| 国产av高清版| 麻豆AV一区二区| 欧美 青青草| 男人久久精品| 九九国产热| 欧美体内射精| aV中文麻| 天天澡天天狠天天天做| 亚欧无码线免费观看视频| 欧亚无码视频| 人妻啪| 日韩欧美成人性爱在线| 破苞ⅩXXX性无码动漫无码| 91干熟女| 盗摄 精品 另类 一区| 青青草自拍视频在线播放| 极品粉嫩一区二区| 粉嫩AV一区夜夜嗨| 女上位精品在线| 色97欧美| 日韩成人性日韩成人性爱视频在线免费观看| 思思热国产高清| 最新国内自拍av免费| 亚洲成?V人片在线观看福利| 91|九色|国产熟女| 97干在线看| 亚洲在高跟鞋自慰久久在色线| 丝袜狠狠草尤物 91| 亚洲一区中文字幕| 国产午夜精品理论片a大结局| 级做a爱无码性色永久免费| 3D污黄视频在线观看| 操91| 操人妻逼91| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 综合网天天| 又粗又长又爽在线观看| 亚洲欧美精品福利在线| 啊啊啊com| 国产后入内射| 黑人综合网| 日本精品无码三级网站| 开心激情站| 歐美性天天| 精品日日人妻| 亚洲精品无码久久AV| 久久久久成人蜜桃精品| 国产情色第一第二页在线观看| 另类小说欧美激情校园春色| 国内精品久久人妻性色av| 五月天色图| 欧亚日韩三区| 蜜臀AV午夜精品久| 国产成人亚洲精品无码古代早漏男 | 亚洲国产精品V?在线播放| 黄网色一区二区三区四区精品| 中文字幕 av v| 欧日韩一二三f区| 色在线亚洲视频www| 色老汉玖玖爱| 婷婷九月丁香| 黄片视频,下载| 亚码激情| 亚洲高潮影院| 国产三级多多影院2022国产AA一级毛片无码 | 欧差乱伦二三| 欧美视频在线视频免费va| 色大香蕉97N| 天天日天天操天天射河南省| 久久亚洲婷婷| 色色青青久久| 久久久久久日韩| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 99精品欧美一区二区三区桃色| 天天欧美色| 国产精品夜夜| 91操人视频| 欧美综合色综合| 九九九九亚洲| 日韩不卡a级视频专区| 亚洲一二三| 色屁屁影院www国产| 极品丝袜无码| 久久区| 久久五月份| 亚洲无码一区成人免费午夜| 亚洲无码一区二区三区三州| 亚洲色图综合网| 亚欧性爱无码| 欧美在线55555| 级做a爱无码性色永久免费| 久视频在线观看| 日本一道在线播放高清| 91色女| 超碰78| 亚洲 欧美 中文 日韩超碰 | 久久一二三四不卡 | 国产区在线| 91操人视频| 精品人妻久久久久一区二区三区| 婷婷久月| 男同专区一区二区三区在线| 婷婷香蕉| 天天综合青苹果| 志村玲子视频一区二区| 亚洲天天更新| 伊人五月天青青草婷婷| 国产一级高清免费观看| 精品久久久中文字幕不| 日韩欧美亚欧在线视频| 欧美丝袜激情| 无码最新| 免费男人的天堂| 99在线精品视频| 亚洲久久久| 日韩紧密久久| 亚洲欧美日韩免费电影| 国产99999久久精品| 欧美疯狂做爰xxxx| 日韩有码中文字幕女同性恋| 久久天天摸| gogogo免费高清看中国国语 | 欧美乱色| 蜜臀AV秘一区翔田千里| 九九九九九精品十六| 在线国产一区二区av| 欧美宗合网| 日本不卡码黄色| 中文字幕久热视频在线| 久99在线免费观看视频| 久久久久久亚洲精品不卡人乳| 乱伦一二三| 久湿久久| 欧美综合站| 久久久久久久伊人精品| 人妻人久久精品中文字幕| 五月综合色| 亚洲黄色视频在线观看视频| 99热国产精品| 久99久视频精选| 亚洲中文字幕久久人妻| 欧美天天干| 99啪啪| 国产高潮AA片免费看| 亚洲加勒比久久日本道| 精品人妻一二三四区视频| 男人的天堂啪啪啪啪啪蜜桃不卡| 成人性爱av| 日本大香蕉综合网红本杳社区| 国产精品经典一卡久久久 | 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 久九九九九九九热| 网页导航五月天免费一二三区| 91色宗合| 中文熟女五十乱码在线| 人人色人人射人人妻| 亚洲色图欧美视频| 自拍偷拍第26| 精品人妻一区二区三区四区| 欧美A√综合网| 人人色97| 精品一区二区成人动漫| 欧美精品久久久久久久丰满| 亚洲丨在线| 精国久久一区二区三区98| 天美av在线观看| 1769精品一区二区三区| 国产精品爱欲| 欧美色欧美| 亚洲精品九九九九九九| 伊人操操| 99热精品青草在线| 涩五月婷婷| www.av在线视频| 人人干人人操人人爱| 青草一区二区| 天天看综合网| 久久久96| 国产污视频麻豆传媒一区二区| 欧美日韩传媒| 国产一区二区啪啪视频| 女人久久久| 国产宅男宅女在线观看| 天堂亚洲精品久久老牛| 97超碰在线资源网站| 91婷婷| 日韩肏逼视频| 久操视频在线| 亚洲欧洲久久天堂| 91人妻人人妻| 日日夜夜干| 丁香啪啪| 综合一区中亚洲国产成人综合精品| 欧美18 在线观看| 国产色图乱伦| 男人的天堂网页| 国产人妻久久精品一区二区三区| 久操影视| 久久精品高清无码一区| 97一本大道亚洲一区| 麻豆人妻少妇在线免费观看| 色噜噜人妻av 中文字幕| 国产AV色黄看到爽| 91丨九色丨国产丨人妻在线| 欧洲黄色网| 亚洲成人激情小说视频| 亚洲日韩天堂| 高清国产精品福利网站| 白嫩少妇| 欧美精品三区| 12一15性XXXX粉嫩国产| 26uuu最新| 婷婷超| 亚洲超碰97| 躁躁躁日日躁2020| 97超碰大| 天天干18禁| 狼人狠干| 久九色| 黄骗免费网站| 人妻夜夜爽天天爽三区麻豆AV网站| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 97超碰国产亚洲精品| wuyechaopeng| 欧美韩国你懂得在线| A啊啊在线观看| 欧美色天堂网在线视频| 美日韩在线不卡人妻| 97爱b| 97se综合| 九九九九九用不成了| 亚州人妻| 综合91网| 国产精品乱码久久久、久久| 日韩欧视频| 国产又黄又粗又猛大片| 久操com| 91一起操| 亚洲色图久久成人| 大香蕉在线视频重口味毛片在线| 亚拍在线| 亚洲高清欧美总合| 午夜男女爽爽爽影院视频| 免费久久一级毛片大黄| 欧美人人AAA| 992这里有精品| 欧美一二在线| 99热精品国产| 9 1超碰九色| 97干在线| 国产精品探花在线| 久久久人体| 青青操少妇| 久久黄黄黄| 免费观看网黄| 久久AV无码网址| 999久久久九| 九九九九精品一区| 精品日日人妻| 懂色av色欲av蜜臀av| 乱伦3P视频| 97免费在线视频在线观看| 亚洲欧美在线综合| 伊人九九九| 草草网站影院白丝内射| 91 在线亚洲| 无码人妻精品一区二区三区九九| 东北熟女91| 在线免费观看日韩一区| 无套内射性感少妇视频| 久久久精| 老熟妇综合| 国产99999| 入口操逼网站| 男女91| 午夜在线播放| 99精品久久久久久久婷婷| 91男女啊啊啊| 性欧美999| 五十路三级片| 色97| 国产蜜臀精品一区二区尤物| 国产亚洲女v在线观看| 亚洲91少妇| 国产伊人精品在线| 欧美性爱视频免费一区一A| 亚洲人成色9999精品久久| 蜜臀久久久国产| 成年人黄色| 亚洲蜜桃V妇女| 超碰亚洲97| 蜜臀一二三区| 国产美女自拍AV| 亚洲情色1区| 亚洲97超碰| av天堂精品久久| 中文字日本乱码| 亚洲国产综合图区中文字幕| 亚洲欧洲日韩国产自在线| 做爱福利视频一区二区| 久草精品国产99| 青青草视频这里只有精品| 99AV| 九色PORNY9l原创自拍| 91nbbbbbb| 午夜乱轮操逼视频免费看| 亚洲五区熟女| 97亚洲欧美| 国产黄a三级三级三级av在线看| 五月天伊人网| av片在线观看免费播放| 91AV国产精品| 亚洲各类熟们中文字幕| 青青草成人视频在线观看二区| 豆花视频操逼网址 | 黑人性欧美| 97碰在线视频| 99操逼| 国产CHASE男男GAYGA 毛多色婷婷| 中文熟女五十乱码在线| 狠狠色狠狠色狠狠五月| 96国产污污污丝袜| 亚洲成人无码影院| 超碰9 7女人| 亚洲最大无码中文字幕网站| 亚欧操逼片在线观看 | 日产操逼| 日韩三级网址| 国产JDAV无码视频在线观看| 97超碰热线| 国产又黄又爽又刺激久久久久久| 9精品在线| caoni国产亚洲av| 91激情综合| 一区二区三区精品久久| 97操碰| 天天色粽合合合合合合合| 久久97| 99色婷婷中文字幕乱色| 人人艹亚洲| 久久禁| 麻豆精品久久久久久久| 国产一级内射高清视频| 另类亚洲图色| 激情综合网激情综合| 久久伊人在线五区| 亚洲av综合色| 国产精品另类| 国产熟女少妇一区| 日韩性爱视频在线免费观看| 91亚洲欧美综合高清在线| 亚洲精品成人激情在线| 久久久久久精| 国产偷人妻精品一区二区在线| 亚洲字幕一区二区| 天天干1区2区在线| 夜夜嗨一区二区| 国产大陆天天艹| 婷婷九月丁香| 9久久9综合| 国产一区二区av综合| 国产精品久久久亚洲第一牛牛_在线观看 | 色妇91| 国产精品一区二区黄片| 思思热国产高清| 学生妹天天看| 91精品综合久久久久久五月丁香| 久96热在线观看视频| 女同性恋中文字幕| 少妇高潮99p| 亚洲AV无码黄色强奸| 加勒比海色香蕉婷婷| 校园春色欧美色图| 国产三级中文有码在线视频| 国产乱子伦久久精品综合一区二区三| 美日韩在线不卡人妻| 日韩啪啪网| 少妇无码av专区线| 加勒比海色香蕉婷婷| 白丝少妇一区二区| 久久精彩视频| 国产精品久久久无码AV网站| 色97干| daxiangjiao你懂的| 国产农村妇女精品1区二区| 夜夜草网站| 欧美日韩黄片精品在线| 97在线视频网站| 欧美色图在线视频少妇| 久久国色天香香蕉| 97精品综合久久| 国产亚洲美日韩Aⅴ中文字幕无码成人| 久久久精| 亚洲男人的天堂在线看| 97精品国产97久久久久久户外免费| 亚洲精品无码少妇久久| 岛国免费视频在线| 亚洲国产97| 可乐操在线| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 久久久9视频| 狠狠干,狠狠操| 无色无码| 五月天久久综合网| 午夜成人爽爽爽爽A片李冰冰| 老熟女阿 国产91| 久久久专区| 久久av色| 91欧美偷拍| 中文字幕在线观看AV| 色色热| 久久九九99| 91GD.COM| 国产成人手机视频激情| 秋霞一集毛片观看| 欧洲一区二区| 国产乱码久久久久久| 天美精品一区二区三区四区在线观看| 青青草日本无码| 丝袜美腿欧美| 久久久久9| 亚洲另类电影| 久久婷婷影院| 操屄不卡视频| 青娱乐日韩无码| 久热大香蕉| 九色PORNY9l原创自拍| 亚洲中文字母在线播放| 天天干夜夜一操| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 精品97精品97| 伊人大香蕉在线| 99啪啪视频| 色大师网站www永久网站视频| 九久久九精品视频| 日韩精品高清资源在线 | 我爱大香蕉| 欧美婷婷五月天| 激情五月婷婷| 麻豆久久视频在线地址| 亚洲日韩一区电影| 神马久久久久眼| 亚洲精品骚逼| 亚洲的天堂网| daxiangjiao你懂的| 69久久| 亚洲欧洲激情卡通另类文学四射小说网站 | 亚洲综合97中文网| 欧美v日韩欧亚洲电影天堂色诱,国产传媒 | 中文字幕丝袜人妻| 第四色奇米影视777| 热G综合热G中文| 一二三区精品视频| 亚洲无 码A片在线观看麻豆| 欧美综合亚洲综合| 最新无码国产| 久久男人精品| 中文久久久| 伦激情人妻另类人妻| 爆操无码| 久久精品欧美一区蜜桃| 男人的天堂在线2| 九九av| 欧洲综合色| 秋霞操逼片| 午夜福利精品| 久9热| 久久亚洲天天做| 天美麻豆黄色录像| 粉嫩av一区二区三区天美传媒 | 牛黄色久午久| 丰满人妻一区二区三区| 啊啊啊啊啊在线视频|