日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7月清北学堂培训 Day 5

發布時間:2025/3/15 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7月清北学堂培训 Day 5 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天是鐘皓曦老師的講授~

動態規劃

動態規劃的三種實現方法:

1.遞推;

2.遞歸;

3.記憶化;

?

舉個例子:

斐波那契數列:0,1,1,2,3,5,8……

Fn = Fn-1 + Fn-2

?

1.我們直接遞推,用別人的結果得到自己的結果:

#include<iostream>using namespace std;int main() {cin >> n;f[0]=0;f[1]=1;for (int a=2;a<=n;a++)f[a] = f[a-1] + f[a-2];cout << f[n];return 0; }

?

?

2.用自己的結果去算其他的結果:

#include<iostream>using namespace std;int main() {cin >> n;f[0]=0;f[1]=1;for (int a=0;a<n;a++){f[a+1] += f[a];f[a+2] += f[a];}return 0; }

在動態規劃的時候,任何一個題都可以用這兩種方法去寫;

但是不同的題對兩種方法有優有劣,所以我們兩種方法都要會。

?

3.記憶化搜索:

我們很容易發現求斐波那契數列的過程就是遞歸的過程,那么就可以寫一下遞歸的代碼:

由于我們這種方法的斐波那契數是一個一個加上去的,時間復雜度是O(Fn);

如果一個東西已經被算出來了,那么我們就把它存下來,以后直接訪問就好了,不用再遞歸,這就是記憶化搜索:

int f[233]; bool g[233];int dfs(int n) {if (n==0) return 0;if (n==1) return 1;if (g[n]) return f[n];f[n] = dfs(n-2) + dfs(n-1);g[n]=true;return f[n]; }

?

動態規劃具有的特點:

狀態:要算算什么;

轉移方程:要怎么算;

無后效性:動態規劃所有的狀態之間組成的有向無環圖;

階段性:我們在求一個狀態時,前面的狀態一定是已經求出來的;

有時候動態規劃不一定是從1 -> n 的,它可能是亂序的;但我們要始終記住它是一個 DAG,所以可以將每個狀態看作一個結點,進行拓撲排序,然后就又變得有序了;

?

動態規劃的常見種類:

1.背包問題:

01背包:

n 個物品,m 容量,每個物品有體積和價值,放入的物品不超過背包容量,求最大化價值和;

第一個維度:f [ i ] 表示我們現在已經放好了前 i 個物品了;

第二個維度:f [ j ] 表示放進去的物品的體積之和是多少;

那么狀態就是:f [ i ][ j ] 代表我們已經嘗試將前 i 個物品都放進去過,體積之和為 j 時所能取到的最大價值;

怎么轉移?

如果第 i+1 個物品不放進去: f [ i ][ j ] = f [ i+1 ][ j ] ;

如果第 i+1 個物品放進去:f [ i+1 ][ j+v[i+1] ] = f [ i ][ j ] + w [ i+1 ];

這種方法是自己更新別人。

我們現在用別人更新自己:

如果第 i 個物品不放進去:f [ i ][ j ] = f [ i-1 ][ j ];

如果第 i 個物品放進去:f [ i ][ j ]= f [ i-1 ][ j-v[i-1] ] + w[ i ];

注意邊算邊取 max;

#include<iostream> #include<cmath>
using namespace std;int n,m,w[233],v[233]; int f[233][233];int main() {cin >> n >> m;for (int a=1;a<=n;a++)cin >> v[a] >> w[a];for (int i=1;i<=n;i++)for (int j=0;j<=m;j++){f[i][j] = f[i-1][j];if (j >= v[i]) f[i][j] = max(f[i][j],f[i-1][j-v[i]]+w[i]);}int ans=0;for (int a=0;a<=m;a++)ans = max(ans,f[n][a]);cout << ans << endl;return 0; }

?

?

完全背包:

考慮每個物品可以用無限次的最大價值。

狀態還是不變。

重新考慮下狀態轉移方程:

由于每個物品可以放若干個,所以我們枚舉一下第 i 個物品放了多少個;

#include<iostream>using namespace std;int n,m,w[233],v[233]; int f[233][233];int main() {cin >> n >> m;for (int a=1;a<=n;a++)cin >> v[a] >> w[a];for (int i=1;i<=n;i++)for (int j=0;j<=m;j++)for (int k=0;k*v[i]<=j;k++) //注意上限 f[i][j] = max(f[i][j],f[i-1][j-k*v[i]]+k*w[i]);int ans=0;for (int a=0;a<=m;a++)ans = max(ans,f[n][a]);cout << ans << endl;return 0; }

但是時間復雜度升到了O(n3),我們要考慮一下優化:

我們可以在之前01背包的代碼上做個小小的改動就好了:

#include<iostream> #include<cmath>using namespace std;int n,m,w[233],v[233]; int f[233][233];int main() {cin >> n >> m;for (int a=1;a<=n;a++)cin >> v[a] >> w[a];for (int i=1;i<=n;i++)for (int j=0;j<=m;j++){f[i][j] = f[i-1][j];if (j >= v[i]) f[i][j] = max(f[i][j],f[i][j-v[i]]+w[i]); //改動就是這里 }int ans=0;for (int a=0;a<=m;a++)ans = max(ans,f[n][a]);cout << ans << endl;return 0; }

為什么這樣是對的呢?原理何在?

我們可以簡單地畫一下這個程序的流程圖:

我們改動之后的那一行的代碼的意思就是在第 i 層上橫著跑,每走一次就是第 i 種物品在原先的基礎上多選一個,無限走下去就實現了選無限個物品;

這樣時間復雜度就被我們降到了O(n2);?

?

有限背包:

考慮每個物品可以用有限次的最大價值。

我們直接枚舉每個物品用多少次:

#include<iostream> #include<cstdio> #include<cmath>using namespace std;int n,m,w[233],v[233],z[233]; int f[233][233];int main() {cin >> n >> m;for (int a=1;a<=n;a++)cin >> v[a] >> w[a] >> z[a];for (int i=1;i<=n;i++)for (int j=0;j<=m;j++)for (int k=0;k<=z[i];k++)f[i][j] = max(f[i][j],f[i-1][j-k*v[i]]+k*w[i]);int ans=0;for (int a=0;a<=m;a++)ans = max(ans,f[n][a]);cout << ans << endl;return 0; }

時間復雜度O(n3)級別的,顯然不行,考慮優化一下:?

我們可以將原先的物品捆綁在一起:

假設我們一個物品能用 13 次,那么我們就可以將這 13 個拆成四個捆綁包:

假設我們要選 9 個這種物品,其實就是選上第1,2,4 個捆綁包!

這樣的話,我們原先的有限背包的問題就轉化成了01背包的問題!(判斷選擇那幾個捆綁包)

時間復雜度O(n2k),k 是物品能分成幾個捆綁包;

怎么拆捆綁包?類似于二進制:

如果我們一個物品能用 26 次:

我們可以將 26 拆成:1,2,4,8……,我們接下來要拆 16 了,可是只剩下了 26-1-2-4-8=11,明顯小于 16,所以最后一個包的大小就是11;

為什么要這樣拆分捆綁包呢?換句話說就是為什么這樣能包含所有的情況呢?

最終的疑問還是在最后一個捆綁包11上。

我們看 26 能拆成的所有捆綁包:1,2,4,8,11;

由于前四個數是我們通過二進制分解來的,所以前四個捆綁包能表示1~15的所有情況;

那么對于16~26的情況呢?這時候我們就必須選上最后一個捆綁包11,那么我們還需選5~15,這不就轉化成了前面的情況了嘛?明顯5~15能被前四個捆綁包全部包含。

證畢!

我們發現拆成的捆綁包的個數是 log n,那么時間復雜度就是:O(nm log n);

我們在讀入的時候就要處理一下捆綁包。

#include<iostream> #include<cmath>using namespace std;int n,m,w[233],v[233]; int f[233][233];int main() {cin >> n >> m;int cnt = 0;for (int a=1;a<=n;a++){int v_,w_,z;cin >> v_>> w_ >> z; //z個物品 int x = 1;while (x <= z) //如果能分解出一個完整的捆綁包就分解 {cnt ++; //捆綁包個數加一 v[cnt] = v_*x; //這個捆綁包的體積 w[cnt] = w_*x; //這個捆綁包的價值 z-=x; //還剩下多少個物品 x*=2; //別忘記乘2 }if (z>0) //如果有剩余,單獨作為最后一個捆綁包 {cnt ++;v[cnt] = v_*z;w[cnt] = w_*z;}}n=cnt; //改成捆綁包的數量 for (int i=1;i<=n;i++) //和01背包的代碼一樣 for (int j=0;j<=m;j++){f[i][j] = f[i-1][j];if (j >= v[i]) f[i][j] = max(f[i][j],f[i-1][j-v[i]]+w[i]);}int ans=0;for (int a=0;a<=m;a++)ans = max(ans,f[n][a]);cout << ans << endl;return 0; }

?

?

2.基礎動態規劃

經典例題:數字三角形

狀態:f [ i ][ j ] 走到第 i 行第 j 列所經過的最大數字之和最大是多少;

考慮到 f [ i ][ j ] 要么從上面 f [ i-1 ][ j ] 走過來,要么從左上方 f [ i-1 ][ j-1 ] 走過來,所以取個max就好了;

狀態轉移方程: f [ i ][ j ] = max ( f [ i-1 ][ j ] , f [ i-1 ][ j-1 ] ) + a [ i ][ j ];

?

數字三角形2

由于太簡單,加了一個條件:求最后答案 mod 100 最大。

如果我們還是像剛才那樣定義狀態的話是錯的,因為和大的話不一定模數最大,也就是說前面的最優值不能求出后面的最優值;

這個題多一個條件,那么我們就增加一個維度;

定義狀態: f [ i ][ j ][ k ] 我們走到第 i 行第 j 列的位置使得最大值之和模 100 等于 k 是可行不可行的;

狀態轉移方程:

從 ( i , j ) 往下走:f [ i+1 ][ j ][ (k+a[ i+1 ][ j ])%100 ] =1;

從 ( i , j ) 往右下走:f [ i+1 ][ j+1 ][ (k+a[ i+1 ][ j+1 ])%100 ] =1;

初始化:f [ 1 ][ 1 ][ a[1][1]%100 ] = 1;

#include<iostream>using namespace std;bool f[233][233][233];int main() {cin >> n;for (int i=1;i<=n;i++)for (int j=1;j<=i;j++)cin >> a[i][j];f[1][1][a[1][1] % 100] = true;for (int i=1;i<n;i++)for (int j=1;j<=i;j++)for (int k=0;k<100;k++)if (f[i][j][k]){f[i+1][j][(k+a[i+1][j])%100]=true;f[i+1][j+1][(k+a[i+1][j+1])%100]=true;}for (int j=1;j<=n;j++)for (int k=0;k<100;k++)if (f[n][j][k]) ans=max(ans,k);cout << ans << endl;return 0; }

?

?

最長上升子序列

狀態設置:f [ i ] 表示 i 這個數最為最后一個數時最長上升子序列的長度;

f [ i ] = max ( f [ j ] + 1 ),1 <= j <= i 且 aj < ai

枚舉 j 的時候我們可以用線段樹;

用數據結構來加速動態規劃求值是個常用的方法;

?

3.區間動態規劃

經典例題:合并石子

有 n 堆石子,每次只能合并相鄰兩堆石子,花費的代價是兩堆石子的重量和,求將 n 堆石子合并成 1 堆石子的最小代價;

狀態設置:f [ i ][ j ] 表示將第 i 堆石子合并到第 j 堆石子的最小代價;

初始化:f [ i ][ i ] = 0,把自己合并到自己的代價是0;

狀態轉移方程:

我們一定可以找到一個分界線,使得先使分界線左邊的所有石子合并成一堆,分界線右邊的所有石子合并成一堆,最后將兩堆石子再合并;

所以我們可以枚舉一個中界線 k,左邊的答案就是 f [ i ][ k ],右邊的答案就是 f [ k+1 ][ j ],那么 f [ i ][ j ] = min ( f [ i ][ k ] + f [ k+1 ][ j ] + i~j的區間和 ),區間和的話前綴和就可以維護;

最后的答案就是 f [ 1 ][ n ](把第一堆石子合并到第 n 堆石子);

詳細請看之前我整理的博客(霧 【傳送門】

我們第一個維度應該要枚舉長度:

如果我們是按照左端點從 1~n 枚舉作為第一維度的話,假如我們要求 f [ 1 ][ n ],我們應該是用 f [ 1 ][ i ] + f [ i+1 ][ n ] 來更新答案的,那么,f [ i+1 ][ n ] 算出來了嘛?顯然沒有!因為我們的左端點從小到大,現在才枚舉到1呢,i 肯定還沒有被更新,所以這是錯的!所以我們按照區間長度來枚舉作為第一維是對的:一個長度為 i 的區間一定是由兩個長度小于 i 的區間來更新的,這樣就可以了。

#include<iostream> #include<cstdio> #include<cmath> using namespace std; int read() {char ch=getchar();int a=0,x=1;while(ch<'0'||ch>'9'){if(ch=='-') x=-x;ch=getchar();}while(ch>='0'&&ch<='9'){a=(a<<3)+(a<<1)+(ch-'0');ch=getchar();}return a*x; } int n,a[201],fminx[201][201],fmaxn[201][201]; long long sum[201]; int main() {n=read();for(int i=1;i<=n;i++) {a[i]=read();a[n+i]=a[i];}for(int i=1;i<=n*2;i++) {sum[i]=sum[i-1]+a[i];fminx[i][i]=0;fmaxn[i][i]=0;}for(int i=2;i<=n;i++) //枚舉區間長度 {for(int j=1;i+j<=2*n+1;j++) //枚舉區間左端點 {int r=i+j-1;fmaxn[j][r]=0;fminx[j][r]=1e9;for(int k=j;k<r;k++){fmaxn[j][r]=max(fmaxn[j][k]+fmaxn[k+1][r],fmaxn[j][r]);fminx[j][r]=min(fminx[j][k]+fminx[k+1][r],fminx[j][r]);}fmaxn[j][r]+=sum[r]-sum[j-1];fminx[j][r]+=sum[r]-sum[j-1];} }int minx=1e9,maxn=-1e9;for(int i=1;i<=n;i++) {minx=min(minx,fminx[i][i-1+n]);maxn=max(maxn,fmaxn[i][i-1+n]);}printf("%d\n%d",minx,maxn);return 0; }

?

矩陣乘法

計算 n 個矩陣的矩陣乘法,自定義運算順序,問最少需要幾次運算?

兩個矩陣相乘后,就會產生一個新矩陣,所以就是矩陣合并。

狀態定義:f [ l ][ r ] 表示將第 l 個矩陣乘到第 r 個矩陣需要多少次;

狀態轉移方程: f [ l ][ r ] = min ( f [ l ][ k ] + f [ k+1 ][ r ] + al * ak+1 * ar+1 ), l <= k <= r;

代碼參考石子合并那個題。

?

4.狀態壓縮動態規劃

按照選取集合的狀態劃分轉移階段;

轉移方式:枚舉下一個要選取的物品。

?

看個例題:

平面設計有 n 個點,每個點的坐標是(xi , yi?),問從一號點走完所有點最后再回到一號點的最短路徑。

首先每個點沒有必要走兩次,走一次就夠了。

變化量:

1.當前在哪個點;

2.走過哪些點(我們需要從沒走過的點里面選一個走);

狀態設置:f [ s ][ i ] 我現在走到了第 i 個點,走過了哪些點(s);

但是走過哪些點怎么用一個整數表示?

我們就要用到了狀態壓縮:把一個數組壓縮成一個數。

假設我們有五個點:

情況是:我們已經走了1,2,4 這三個結點了,3,5結點還沒有走:

我們將走過的結點的位置寫上1,未走過的結點的位置寫上0:

我們可以將下面這個01串看做是一個二進制的數,然后我們再將其轉化成十進制的數:

這樣的話,我們就將這種情況轉化成了一個數字,這就是狀態壓縮。

邊界條件:

f [ 1 ][ 0 ] = 0,我只走了第 0 個點(1只有第0位有1),當前位置在0,時間是0;

狀態轉移方程:

我們找個沒走過的點走一下就好了。

枚舉一個 j,看看 s 的二進制的第 j 位是不是0,如果是0就走 j ,并把第 j 位改成 1;

注意要先枚舉狀態在枚舉每個點,因為我們走的點是越來越多的;

?

#include<iostream> #include<cmath> #include<cstring>using namespace std; const int inf=1e9; double f[233333][233]; double x[233],y[233],ans; int n;double dis(int a,int b) {return sqrt((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b])); } int main() {cin >> n;for (int a=0;a<n;a++)cin >> x[a] >> y[a];memset(f,0x3f,sizeof(f)); //初始化無窮大 f[1][0]=0; //邊界條件 for (int s=0;s<(1<<n);s++) //枚舉每種狀態 for (int i=0;i<n;i++) //枚舉當前結點是哪個數 if (f[s][i] < inf) {for (int j=0;j<n;j++) //枚舉哪個數沒去過 if ( ((s>>j) & 1) == 0) //如果s的第j位是0,說明沒去過 {int news = s | (1<<j);//新的狀態:將s的第j位變成1 f[news][j] = min(f[news][j],f[s][i] + dis(i,j)); //更新 }}for (int i=0;i<n;i++)ans=min(ans, f[(1<<n)-1][i] + dis(i,0));//枚舉每個終點,然后記得要返回0號結點 cout << ans; return 0; }

?

這類問題是旅行商問題(TSP問題),時間復雜度最優為O(2n * n2),能用狀壓DP的話數據要在 n <= 22 的范圍內;

?

在一個種草之后,與之相鄰的四個格子都不能種草了;

狀態定義:f [ i ][ s ] 表示前 i 行的草已經種完了,且第 i 行種的草的長相是 s;

狀態轉移方程:

前 i 行已經種完草了,我們考慮第 i+1 行怎么種草;

第 i+1 行不能連著種草。所以用二進制表示的時候不能有兩個連續的兩個1,由于相鄰的兩列也不能種草,所以第 i 行種草的地方第 i+1 行不能種草。

假設我們第二行的種植情況是這樣的:

由于相鄰的格子不能種植,所以我們可以確定第 i+1 行一定不能種在這些格子上:

其他的位置問你不能確定,但是我們可以發現一個規律:si & si+1 = 0

所以我們只要先找一個s',使得 s & s' = 0 就行了;

?

?

發現和上一個題沒有什么本質的區別,只是多了個條件;

題目多一個條件直接多加一個維度:

狀態定義:f [ i ][ s ][ j ] 第 i 行的國王已經放完了,已經放了 j 個國王的情況下,第 i 行國王放置的情況為 s;

相比于上個題來說只是再需要判斷一下對角線上也不能放國王就好了。

?

5.數位動態規劃

什么是數位DP?

數位DP 是我們在 DP 的時候是按照數的每一位來進行轉移的動態規劃;

給出兩個數 l , r,問從 l~r 有多少個數。

顯然答案就是:r - l + 1;

但是我們要用數位DP 做!

首先數位DP有個叫前綴和轉化的東西:算[ l , r ] 有多少個數,就是算 [ 0 , r ] 里有多少個數 -? [ 0 , l-1 ] 里有多少個數;

那么問題就轉化成求 [ 0 , x ] 有多少個數。

假設 x = 3245,

實際上就是在問有多少個 y ,使得 0 <= y <= x;

考慮到 x 只有四位,那么 y 最多也只有四位。

也就是說,我們要往四個格子里面填數,問有多少種方案使得填出來的數小于等于 x;

如果從低位往高位填的時候并不知道是否比 x 大還是小,但我們往高位往低位填的時候就能確定了。

狀態設置:f [ i ][ j ] 我們在第 i 位已經填好的情況下,如果 j = 0 代表我們填的數已經小于x,如果 j = 1 代表我們填的數無法確定是等于還是大于,考慮到我們不用算大于的情況,所以 j = 1 代表我們填的數剛好等于 x;

狀態轉移方程:

假設我們已經填好了第 i 位,我們接下來要填的是第 i-1 位(從高往低填),數位DP 的過程就是在求我們這一位是填1~9的哪一位;

初始化:f [ l+1 ][ 1 ] = 1;

我們的 x 只有 l 位,那么我們 l 位的更高位一定是0,所以與 x 一樣的方案數有1種:全部填0;

判定一下將 k 填進去之后會不會比 x 大:

1.如果前幾位都一樣,當時當前填的 k 比 x 的對應位大的話,那么我們不轉移;否則如果小于的話,那么第二維是0,如果正好又等于 x,那么第二維繼續維持 1:

2.如果之前的數就比 x 小了,那么之后不管怎么填始終是小于 x 的,也就是說我們的第二維仍然是0;

最后的答案就是: f [ 1 ][ 0 ] + f [ 1 ][ 1 ];

?

還是數位 DP 前綴和的思想:求 [ 0 , r ] 的數的數位之和 -??[ 0 , l-1 ] 的數的數位之和;

狀態設置:g [ i ][ j ] 我們填好第 i 位后,是等于還是小于的數字之和;

假設我們在一位填了一個 k,每種方案都接了一個 k,填 k 的總貢獻就是:f [ i ][ j ] * k;

所以我們不僅要求所有數的數位之和,還要求方案數,那么我們在上面代碼的基礎上改一改就好了;

#include<iostream>using namespace std;int solve(int x) {int l=0;while (x>0){l++;z[l] = x%10;x/=10;}memset(f,0,sizeof(f));memset(g,0,sizeof(g));f[l+1][1]=1; //邊界條件,l+1位往前都是0,是相等的 g[l+1][1]=0; //前L+1位都是0,和也是0 for (int i=l+1;i>=2;i--) //用自己去算別人 for (int j=0;j<=1;j++) //看看是等于還是小于的情況 for (int k=0;k<=9;k++) //枚舉這一位我們能填什么 {if (j==1 && k>z[i-1]) continue; //如果前面相同了這一位還大于x的對應位,說明不能填 int j_; if (j==0) j_=0; //如果前面填的數已經小于x了,后面再怎么填都小于x了 else if (k==z[i-1]) j_=1; //如果前面的數等于x,并且這一位還是等于x的對應位,那么新的數還是和x相同 else j_=0; //否則的話就小于x f[i-1][j_] += f[i][j];//加法技術原理求方案數 g[i-1][j_] += f[i][j] * k + g[i][j]; //這一位填上個k,對于每一種方案都可以填上k啊,那么總的貢獻就是方案數乘k,別忘了加上之前位數的位數之和 }return g[1][0] + g[1][1]; //答案 }int main() {cin >> l >> r;cout << solve(r) - solve(l-1) << endl;return 0; }

?

?

多一個條件多加一個維度。

狀態設置:f [ i ][ j ][ k ] 代表前 i 位已經填好了,j = 0 代表小于,j = 1 代表等于,第 i 位填的是 k;

這樣的話我們就避開差小于 2 的情況;

?

狀態設置:f [ i ][ j ][ r ] 從高向低填到第 i 為,j判斷是否相等,我們已經填的數的數位之積是r;

發現 r 的范圍很大,空間爆內存啊,怎么辦?

因為 r 是各位數相乘的結果,所以 r 的因子里不可能有超過10的質因子;

也就是說,r 里面的質因子只有2,3,5,7,再根據唯一分解定理,那么 r 一定可以表示為2a?* 3b?* 5c?* 7d?

多加幾個維度:f [ i ][ j ][ a ][ b ][ c ][ d ] 表示從高位往低位填,我們填的數的數位之積是2a * 3b * 5c * 7d

還可以優化:我們發現 a,b,c,d 不可能同時達到上界,所以我們可以預先處理出 long long 范圍內所有滿足2a?* 3b?* 5c?* 7d?的數,大約有3W多個,然后改一下狀態:f [ i ][ j ][ k ] 表示第 k 個這樣的數,這樣就不會有任何的空間浪費。

?

6.樹形動態規劃

就是在樹上做的DP,注意這棵樹一定是有根樹,否則不能DP;

例題:

給你個 n 個點的樹,問你樹上有多少個點?

n 個啊(大霧

不,我們要用樹形DP!

在每個點,我們維護以它為根的信息;

狀態設置:f [ i ] 表示以 i 為根的子樹有多少個點;

狀態轉移方程:f [ i ] = Σ( j ∈son [ i ] ) f [ j ] + 1;

樹形DP就是把它所有兒子對應的所有信息轉和得到自己的信息;

?

樹的直徑:在樹上找到兩個點,使得這兩個點的距離最遠;

樹的路徑大概長這樣:

我們發現這個路徑就是先向上走到 LCA,再從 LCA 往下走走到另外一個結點;那么我們可以換種角度來看,不就是從 LCA 往下走跳最長路和次長路之和嘛?

所以我們的問題就轉化成:我們求每個點往下走的最長路和次長路。

狀態設置:f [ i ][ 0 ] 代表從第 i 個點向下走最長能走多少,f [ i ][ 1 ] 代表從第 i 個點向下走次長能走多少。

答案:求出每個點的 f [ i ][ 0 ] + f [ i ][ 1 ] ,取最大值。

注意到在算第 i 個點的值得時候,下面的點已經被算過了。

f [ i ][ 0 ] = max (f [ Pj ][ 0 ] )+ 1,Pj?表示是 i 的第 j 個兒子;

選 f [ i ][ 1 ] 的時候,一定要避免與 f [ i ][ 0 ] 選到一個結點上去;

所以我們只需要從每個兒子中找到一條最長的,看看是否能更新就好了;

如果有一個兒子的最長路是大于父親結點的最長路的,那么父親結點現在的次長路更新為原先的最長路,最長路更新為兒子的最長路+1;否則如果兒子的最長路只大于父親的次長路,那就更新父親的次長路;

void dfs(int i) {for (int j=head[i];j;j=e[j].next){int p=e[j].to;dfs(p);}for (int j=head[i];j;j=e[j].next){int p=e[j].to;int v = f[p][0]+1; if (v>f[i][0]) //如果大于父親的最長路 {f[i][1]=f[i][0]; //現在的次長路是原先的最長路 f[i][0]=v; //最長路更新為兒子的最長路+1 }else if (v>f[i][1]) f[i][1]=v;//如果不能更新最長路,那看看能否更新次長路 } }

?

狀態設置: f [ i ] 表示以 i 為根的子樹有多少個點;

一條邊會被多少條路徑經過?

我們要統計紅色的這條邊對答案的貢獻,考慮到這條邊的兩側的結點都會經過這一條邊,里面(下面)的結點個數是 f [ i ],外面(右邊)的結點個數是 n - f [ i ],那么下面的一個點到外面的路徑有 n - f [ i ](每個點都要到一遍吧~),那么總共 f [ i ] 個點就有 f [ i ] * (n - f [ i ])跳路徑穿過這條邊,再考慮外面的點每個點還要到達里面的點一次,所以這條邊的貢獻就是:2 * f [ i ] * (n - f [ i ]),那么最后的答案就是 Σ(2 * f [ i ] * (n - f [ i ])),i 枚舉每條邊。

?

?

狀態設置:f [ i ][ 0/1 ] 從以 i 為根的子樹從中選出若干的點的最大值是多少,0 代表 i 這個點沒選,1 代表 i 選了;

最后答案:max (f [ 1 ][ 0 ] , f [ 1 ][ 1 ]);

既然 i 選了,那么 i 的所有兒子都不能選,f [ i ][ 1 ] = Σ f [ j ][ 0 ](j∈son [ i ])+ ai;

如果 i 選了,那么 i 的兒子可以選也可以不選,那么 f [ i ][ 0 ] = Σ max ( f [ j ][ 0 ] , f [ j ][ 1 ] ) (j ∈ son [ i ]);

?

?

狀態設置:f [ i ][ 0/1 ] 表示第 i 個士兵選還是不選;

如果第 i 個士兵不選,那么與兒子相連的邊必須要兒子來看著,那么每個兒子都要選:

f [ i ][ 0 ] = Σ f [ j ][ 1 ](j∈son [ i ]);

如果第 i 個士兵選上了,那么兒子們可選可不選,取最小值;

f [ i ][ 1 ] = Σ min(f [ j ][ 0 ] , f [ j ][ 1 ])(j ∈ son [ i ])+ 1;

?

拓展:?

如果每個士兵只能守護與其距離不超過二的邊呢?

狀態設置:f [ i ][ 0/1/2 ] 以 i 為根的這個子樹已經用士兵覆蓋住了,i 這個結點向下走到達的最近的士兵的距離是 0/1/2;

0:就是這個結點有士兵;

1:兒子結點有士兵;

2:孫子結點有士兵,兒子結點沒有士兵;

f [ i ][ 0 ] = Σ min ( f [ j ][ 0/1/2 ] ) (j ∈ son [ i ])+ 1;

f [ i ][ 1 ] = 由于太danteng,需要再來個DP求!!!

g [ j ][ 0/1 ] 我們已經確定了前 j 個兒子的取值,其中這個這 j 個兒子中有沒有一個兒子拿出一個 0 來作為答案(距離最近的士兵的距離是0)

f [ i ][ 2 ] 也要用類似的DP來求!!!

DP套DP可還行;

轉載于:https://www.cnblogs.com/xcg123/p/11200008.html

總結

以上是生活随笔為你收集整理的7月清北学堂培训 Day 5的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久精品视 | 色精品视频 | 美女网站免费福利视频 | 欧美日韩中文视频 | 日韩视频一区二区三区在线播放免费观看 | 久久亚洲综合色 | 99久热在线精品视频成人一区 | 国产精品2020 | 天天天插| 综合色综合| 成人一级片免费看 | 免费av影视 | 久久 亚洲视频 | 韩国三级在线一区 | 国产你懂的在线 | 国产精品男女视频 | 久久精品视频国产 | 人人看人人做人人澡 | 91久久久国产精品 | 国产精品一区在线观看 | 久久久久久久电影 | 欧美激情第十页 | 在线国产视频一区 | 97av超碰| 亚洲精品视频观看 | 亚洲精品综合在线 | 欧美一二三区在线播放 | 国产精品毛片久久 | 国产色区| 成人精品视频久久久久 | 色综合五月天 | 国产色视频网站2 | 国产在线观看国语版免费 | 日韩精品一区二区在线观看 | 婷婷www| 深爱婷婷久久综合 | 国产96精品 | 九九久久影视 | 久久久久久高潮国产精品视 | 97电院网手机版 | 欧美性网站 | 欧美黑人猛交 | 少妇bbb搡bbbb搡bbbb′ | 日韩电影精品一区 | 久草久视频 | 婷婷九月激情 | 免费观看www7722午夜电影 | 国产日韩精品在线观看 | 成人在线观看免费 | 在线 国产 亚洲 欧美 | 日日爽天天| 国产剧在线观看片 | 免费观看视频的网站 | 欧美日韩69 | 久久综合久久久 | 久久久久高清毛片一级 | 天天干天天干天天射 | 日韩久久精品一区二区 | 精品免费久久久久久 | 亚洲精品中文字幕在线 | 韩国av电影在线观看 | av在线看片 | 中文一区二区三区在线观看 | 日本高清xxxx | 久久高清免费视频 | 色播亚洲婷婷 | av黄色免费在线观看 | 国产视频 亚洲视频 | 国产一区二区久久久 | 最近2019中文免费高清视频观看www99 | 日韩丝袜视频 | 精品在线一区二区三区 | 91免费网站在线观看 | 三级黄色免费片 | 国产成人精品一区一区一区 | 亚洲欧美视频一区二区三区 | 在线成人中文字幕 | 精品国产精品久久一区免费式 | 日韩精品视频免费在线观看 | 国内外成人免费在线视频 | 麻豆视频免费播放 | 在线欧美a | 成人一级视频在线观看 | 99久免费精品视频在线观看 | 欧美色综合久久 | 在线观看 亚洲 | 在线观看视频一区二区 | wwwww.国产 | 黄色综合 | 国产黄在线 | 国产精品日韩久久久久 | 成人av手机在线 | 97福利视频 | 日韩大片免费观看 | 亚洲视频,欧洲视频 | 毛片无卡免费无播放器 | 婷婷精品国产一区二区三区日韩 | 国内揄拍国内精品 | 亚洲精品国精品久久99热 | 超碰官网| 亚洲午夜精品在线观看 | 日韩av电影免费观看 | 久久九九久久精品 | 免费视频xnxx com | 精品国产一二区 | 国产一区久久 | 国产一区二区午夜 | 日韩精品视频免费在线观看 | 一区二区三区四区五区在线视频 | 香蕉在线播放 | 免费色网| 丁香婷婷在线观看 | 亚洲码国产日韩欧美高潮在线播放 | 黄色成人影视 | 久久久久久久久久久网站 | 久久中文精品视频 | 久久久久久久久久网 | 欧美日韩不卡一区二区 | 久久伊人色综合 | 免费看黄在线网站 | 久久99九九99精品 | 国产不卡视频在线播放 | 国产精品区在线观看 | 久久永久免费视频 | 狠狠干婷婷色 | 国产四虎影院 | 人人干网 | 久久激情五月丁香伊人 | 深爱五月激情网 | 国产成免费视频 | 日韩深夜在线观看 | 久久久首页 | 久久视频在线观看免费 | 欧亚久久| 国产精品99久久免费黑人 | 久久天天躁狠狠躁亚洲综合公司 | 国产免费中文字幕 | 中文字幕在线免费97 | 成年人电影免费看 | 亚州天堂 | a爱爱视频| 精品美女久久久久 | 久久不卡日韩美女 | 日韩免费小视频 | 日韩中文字幕免费在线播放 | 日韩av视屏在线观看 | 超碰人人av | 日本精品视频在线播放 | 成人av在线网 | 亚洲色图激情文学 | 婷婷中文字幕 | 九九视频这里只有精品 | 碰超在线观看 | 91在线播放综合 | 久久96国产精品久久99软件 | 久久国产免费 | 欧美激情综合五月 | 亚洲不卡av一区二区三区 | 毛片一级免费一级 | 国产涩涩在线观看 | 免费国产在线视频 | 91视频在线自拍 | 成人av在线一区二区 | 不卡的av电影在线观看 | 丁香电影小说免费视频观看 | 欧美日韩精品在线视频 | 蜜臀久久99精品久久久酒店新书 | 日韩综合一区二区三区 | av资源在线观看 | 精品视频久久 | 麻豆传媒视频在线播放 | 国产三级国产精品国产专区50 | 天天射天天做 | 国产一区久久 | 久久精品免费观看 | 亚洲尺码电影av久久 | 国产尤物在线观看 | 午夜日b视频 | 激情五月五月婷婷 | 亚洲国产电影在线观看 | 国产成人免费在线观看 | 国产黄色观看 | 日韩a级免费视频 | 探花视频在线观看免费 | 91完整版在线观看 | 五月天,com | 美女视频是黄的免费观看 | 日韩欧美精品在线视频 | 国产成人在线观看 | 亚洲三级精品 | 国产护士hd高朝护士1 | 久久久久久久久久久久久9999 | 91精品国产自产在线观看永久 | 天天干天天操天天做 | 久久久久久久久久久久电影 | 亚洲日本欧美 | 欧美在线视频一区二区三区 | 九九在线精品视频 | 亚欧洲精品视频在线观看 | 日韩电影黄色 | 人人爱人人射 | 亚洲黄色网络 | 狠狠色狠狠色综合系列 | 欧美aa级| 日韩在线视频看看 | 国产在线视频资源 | 91国内产香蕉 | 91久色蝌蚪 | 久热电影 | 粉嫩高清一区二区三区 | 成年人免费看片网站 | av成人免费在线观看 | 国产精品无av码在线观看 | 久久综合中文色婷婷 | 久久三级视频 | 久久这里只有精品23 | 久久国产露脸精品国产 | 国产日韩欧美视频在线观看 | 国产亚洲精品久久久久久无几年桃 | 天天操天天操天天操 | 欧美视频在线观看免费网址 | 免费观看国产成人 | 在线观看一级视频 | 日韩高清不卡一区二区三区 | 综合在线亚洲 | 在线免费观看羞羞视频 | 一级黄色片在线免费看 | 在线观看播放av | 婷婷视频在线 | 久草久草视频 | 久久国产一区二区三区 | 国产韩国日本高清视频 | 亚洲精品免费在线视频 | 亚洲精品婷婷 | 久久中文字幕在线视频 | 国产精品mm | 日日干夜夜骑 | 国产亚洲高清视频 | 免费网站在线 | 国产精品免费久久久 | 天天天天综合 | 久久一区二区三区日韩 | 黄污视频网站大全 | 国产精品岛国久久久久久久久红粉 | 99爱精品在线 | 黄色成人影院 | 国产喷水在线 | 国产不卡一二三区 | 中文字幕在线播放第一页 | 免费观看的黄色 | 最近免费中文字幕 | 久久黄色美女 | 国产做爰视频 | 久久五月激情 | 69亚洲视频 | 久久久久久综合网天天 | 亚洲美女在线国产 | 97超碰在线久草超碰在线观看 | 人人澡澡人人 | 99九九视频| 日韩精品一区二区电影 | 精品免费视频. | 97色综合| 国产视频色 | 午夜一级免费电影 | 麻豆视频大全 | 国产一区二区三区高清播放 | 18性欧美xxxⅹ性满足 | 亚洲精品国产综合久久 | 免费看片网页 | 国产精品岛国久久久久久久久红粉 | 久久国产成人午夜av影院潦草 | avcom在线| 91探花视频 | 黄色大全视频 | 久久免费99 | 在线免费观看欧美日韩 | 久久国产高清 | 久久久国产一区 | 日产乱码一二三区别在线 | 麻豆系列在线观看 | 国产视频99 | 中文字幕久久久精品 | 久久精品国产一区二区三 | 天堂网av 在线 | 最近中文字幕免费视频 | 国产精品福利午夜在线观看 | 亚洲精品99久久久久久 | 日韩欧美专区 | 天天干天天干天天操 | 韩国av永久免费 | 91精品视频在线 | 综合精品久久久 | 蜜桃av观看 | 天天操夜夜操国产精品 | 91福利在线观看 | 国产精品99精品 | 92精品国产成人观看免费 | www.色就是色 | 亚洲欧美精品在线 | 日韩在线精品 | 一级黄色在线免费观看 | 香蕉视频色 | 91大神精品视频在线观看 | 成人app在线免费观看 | 国产精品久久久区三区天天噜 | 成人中文字幕av | 国产亚洲精品xxoo | 91成人网在线 | 精品国产乱码久久久久久天美 | 9热精品 | 国产精品一区二区在线免费观看 | www.夜夜操.com| 成人黄色在线 | 亚洲综合欧美激情 | 免费在线观看污 | 日韩久久久久久久久 | 六月婷婷网 | 天堂va在线观看 | 日韩精品一区二区免费 | 午夜性盈盈 | 日韩网站在线观看 | 97超碰在线久草超碰在线观看 | 亚洲午夜久久久久久久久电影网 | 亚洲天堂网在线播放 | 91久久精品一区二区二区 | 久久精品免费 | 亚洲久草在线视频 | 亚洲精品国产第一综合99久久 | 一区二区视频在线播放 | 91麻豆看国产在线紧急地址 | 久久夜夜夜 | 激情综合五月网 | 中国一级片在线观看 | 日韩精品高清视频 | 国产精品免费一区二区 | 久久久久久国产精品免费 | 99久久国产免费看 | 久久久视屏| 六月激情婷婷 | 亚洲乱码一区 | 欧美精彩视频在线观看 | 亚洲国产精品成人va在线观看 | 日韩欧美一区二区在线观看 | 久久不见久久见免费影院 | 国产精品一区二区在线观看 | 亚洲日本成人网 | 最近日本中文字幕a | 午夜在线国产 | 久久综合电影 | 精品国偷自产国产一区 | 午夜免费视频网站 | 日本最新一区二区三区 | 国产亚洲精品中文字幕 | 午夜私人影院久久久久 | 亚洲精品欧洲精品 | 免费网站观看www在线观看 | 欧美激情第一区 | 国产午夜三级一二三区 | 超碰99在线 | 一区 在线观看 | 中文有码在线视频 | 日韩乱色精品一区二区 | 99免费在线观看视频 | 久久人人爽爽人人爽人人片av | 久久久影片 | 97超碰资源网 | 国产精品999久久久 久产久精国产品 | 正在播放一区 | 亚洲精品99久久久久久 | 九九视频精品在线 | 激情五月婷婷综合网 | 午夜视频免费播放 | 免费在线黄网 | 特级毛片在线免费观看 | 狠狠操狠狠 | 亚洲专区在线播放 | 久久视频这里有精品 | 人人dvd| 中文字幕高清免费日韩视频在线 | 九九影视理伦片 | 亚洲精品中文字幕在线 | 国内精品久久久久久久久久清纯 | 91av免费看| 免费一级片视频 | 国产精品一区二区久久精品 | 99在线精品免费视频九九视 | 友田真希av| 婷婷在线五月 | 92中文资源在线 | av高清在线 | 人人爱夜夜操 | 亚洲va韩国va欧美va精四季 | 亚洲视频99| 69热国产视频 | 三级av免费观看 | 国产精品久久久久久久久蜜臀 | 狠狠色狠狠色综合系列 | 久久99精品国产99久久6尤 | 国内精品久久久久影院一蜜桃 | 午夜av免费观看 | 日本乱码在线 | 日日夜精品 | 99久久精品视频免费 | 中文字幕在线不卡国产视频 | 黄色免费网站大全 | 亚洲精品午夜久久久久久久 | www四虎影院| 玖玖玖国产精品 | 97人人模人人爽人人少妇 | 国产亚洲成av人片在线观看桃 | 国产午夜精品视频 | 国产麻豆视频 | 欧美少妇影院 | 日韩在线观看第一页 | 国产美女黄网站免费 | 五月婷婷久草 | 91久色蝌蚪| 久久a热6 | 天天色综合天天 | 人人狠| 97超碰香蕉 | 四虎成人网 | 国产美女视频免费观看的网站 | 综合中文字幕 | 久久国产剧场电影 | 国产亚州av | 久久九九精品久久 | 亚洲国产美女精品久久久久∴ | 国产精品亚洲a | 少妇bbb搡bbbb搡bbbb | 久久综合毛片 | 69精品在线观看 | 婷婷免费在线视频 | 国产亚洲视频在线免费观看 | 激情一区二区三区欧美 | 久久综合九色99 | 99亚洲视频 | 蜜臀久久99精品久久久无需会员 | 欧美日韩亚洲在线观看 | 中文字幕精品www乱入免费视频 | 五月婷网 | 国产尤物一区二区三区 | 人人爱人人爽 | 国产精品久久久久久久久久久久午夜 | 国产在线视频一区 | 天天射天天操天天色 | 天天操天天射天天添 | 青青河边草免费观看完整版高清 | 国产精品成人久久久久 | 精品久久99 | 国产黄色精品在线 | 久久久久久久国产精品视频 | 在线观看的av | 亚洲电影第一页av | 91视频a| 欧美专区国产专区 | 欧美一级专区免费大片 | 97精品国产91久久久久久 | 国产精品99久久久久人中文网介绍 | 天天操狠狠操夜夜操 | 麻豆视频观看 | 日韩精品91偷拍在线观看 | 91精品久久久久久久91蜜桃 | 美女精品国产 | aaa免费毛片 | 天天色欧美 | 夜夜躁日日躁 | 777视频在线观看 | 久久精品波多野结衣 | 黄色在线观看污 | 97电影院在线观看 | 不卡视频国产 | 日韩欧美一区二区三区黑寡妇 | 黄色精品在线看 | 中文在线字幕免费观 | 日韩视频免费播放 | 九九亚洲精品 | 国色天香在线观看 | 久久伊人精品天天 | 粉嫩高清一区二区三区 | 少妇bbr搡bbb搡bbb| 91免费高清在线观看 | 日韩精品一区二区免费 | 91视频久久久久 | 97高清视频 | 91亚洲在线| 免费观看全黄做爰大片国产 | 亚洲一级影院 | 黄a网站| 亚洲va欧美va人人爽春色影视 | 免费在线观看日韩 | 91精品视频免费 | 中文字幕在线播放视频 | 在线视频一二三 | 蜜臀久久99静品久久久久久 | 国产xxxx性hd极品 | www.91国产 | 在线观看中文 | 久草在线91 | 国产午夜一级毛片 | 东方av免费在线观看 | 国产一区免费视频 | 99热 精品在线 | 精品电影一区二区 | 最新日韩精品 | 一区二区精品视频 | 美女网站视频久久 | 国产免费观看视频 | 色噜噜在线观看 | 婷婷色在线 | 国产a级精品 | 久精品在线 | 精品中文字幕在线播放 | 午夜视频一区二区 | 五月综合网站 | 免费一级特黄毛大片 | 国产又黄又爽又猛视频日本 | 伊人在线视频 | 91视频在线免费下载 | 国产高清在线免费视频 | 美女视频黄是免费的 | 久久99热久久99精品 | 欧美午夜一区二区福利视频 | av在线激情 | 91av手机在线观看 | 五月婷婷在线观看视频 | 成人午夜电影网 | 亚洲国产网站 | 国产第一福利 | 国产xx视频 | 亚洲午夜小视频 | www.综合网.com| 日日干综合| 国产少妇在线观看 | 粉嫩av一区二区三区免费 | 免费国产在线精品 | 亚洲色影爱久久精品 | 97精品国产97久久久久久久久久久久 | 一级片免费在线 | 中午字幕在线 | 日韩城人在线 | 8x成人免费视频 | 国内精品久久久久久久久久久 | 久久在线免费观看 | 激情五月五月婷婷 | 国产免费一区二区三区最新 | 丁香婷婷综合网 | 国产精品第三页 | 国产精品美女视频网站 | 美女久久久久久久久久 | 国产精品一区二区62 | 狠狠色丁香婷婷综合欧美 | 色综合久久久久久久 | 人人射人人澡 | 日韩欧美精品在线 | 免费在线观看av的网站 | 日本91在线 | 亚洲永久精品视频 | 在线免费中文字幕 | a'aaa级片在线观看 | 三级av免费观看 | 亚洲国产一区在线观看 | 91超国产 | 亚洲成人网av| 午夜私人影院 | 婷婷在线观看视频 | 久色伊人| 久久日韩精品 | 天天曰天天干 | 天天操天天色天天射 | 久久精品在线免费观看 | 成人av片免费观看app下载 | 久久精品一区二区 | 精品久久久久久一区二区里番 | 国产精品av在线免费观看 | 天天操夜夜拍 | av免费成人| 国产亚洲aⅴaaaaaa毛片 | 久久午夜电影 | 有码视频在线观看 | 91视频免费网站 | 日韩午夜电影院 | 亚洲国产精品va在线看黑人 | 九色琪琪久久综合网天天 | 韩日av一区二区 | 在线日韩av | 色狠狠婷婷 | 亚洲理论在线观看 | 国产一二区视频 | 亚洲天堂自拍视频 | 欧美日韩久久不卡 | www.888av| 曰韩精品| 午夜精品一区二区三区可下载 | 激情开心色 | 久久电影中文字幕视频 | 国产精品入口66mio女同 | 久久久久免费 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日韩高清一区二区 | 一区二区三区电影在线播 | 欧洲黄色片 | 欧美在线视频一区二区 | 成人毛片一区 | 成人作爱视频 | 99久久久久成人国产免费 | 亚洲精品视频在线播放 | 日韩在线观看视频免费 | 日韩在线一二三区 | 国产伦理久久精品久久久久_ | 久久久国产精品视频 | 日韩欧美在线不卡 | 国产黄色在线 | 国产色视频 | 日韩久久久久久久久久久久 | 中文国产在线观看 | 日韩电影在线观看一区二区三区 | 欧美视频在线二区 | 精品国产免费人成在线观看 | av网址在线播放 | 国产正在播放 | 在线一区观看 | 国产精品久久久久久久久免费看 | 国产成人精品在线观看 | 国产福利午夜 | 亚洲免费在线播放视频 | 免费大片av | 久久精品4| 国产精品一区二区果冻传媒 | 免费能看的黄色片 | 久久精品爱视频 | 国产精品欧美久久 | 亚洲夜夜综合 | 99精品免费久久久久久久久日本 | 麻豆精品视频在线 | 国产中文视 | 国产91av视频在线观看 | 99久久久国产精品免费99 | 96香蕉视频 | 久久视频一区二区 | 久久精品久久精品 | 日日夜夜天天 | 999电影免费在线观看 | 99热99| 免费国产黄线在线观看视频 | 中文字幕日本特黄aa毛片 | 中日韩三级视频 | 天堂久久电影网 | 日韩一二区在线 | 日日爽夜夜操 | 四虎永久国产精品 | 亚洲精品欧美成人 | 99视频在线免费观看 | 久久夜色网 | 亚洲二区精品 | 在线观看一区视频 | 少妇bbbb| 天天干天天搞天天射 | 在线一区电影 | 亚洲精品中文字幕在线 | 中文在线a天堂 | 国产精品久久久久久久久软件 | av在线专区 | 99精品视频免费全部在线 | 波多在线视频 | 九九久久影院 | 国产精品午夜在线观看 | 最新久久免费视频 | 美女在线免费视频 | 蜜臀av一区二区 | 国产高清视频色在线www | 国产a高清 | 亚洲精品一区二区18漫画 | 久久久91精品国产一区二区三区 | 国产亚洲精品av | 玖玖视频网 | 久久久污| 国内久久 | 又黄又爽又色无遮挡免费 | 伊人久久国产精品 | www..com黄色片 | 亚洲第一伊人 | 天操夜夜操 | 日韩有码在线播放 | www色av| 久久久久久美女 | 久久久久人人 | 黄色一级大片在线观看 | 久久综合久久鬼 | 亚洲国产欧美一区二区三区丁香婷 | 综合精品在线 | 日韩欧美高清在线 | 婷婷网五月天 | 国产精品av免费 | 色亚洲网 | 黄色精品视频 | 999色视频 | 日本久久久久久 | 午夜国产在线 | 国产区高清在线 | www日韩精品 | 99热在线观看免费 | 中文字幕免费看 | 九色精品在线 | 天天天天爽 | 在线观看一级 | 免费在线观看av片 | 狠狠操.com | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 99精品久久精品一区二区 | 免费看v片 | 免费看的国产视频网站 | 亚洲黄色免费观看 | 91在线视频观看 | 日韩成人精品 | 黄色在线视频网址 | 日韩三级不卡 | 久久久久久久免费观看 | 国产日本高清 | 国产网红在线观看 | 丁香五月亚洲综合在线 | 亚洲黄色小说网 | 亚洲第一av在线播放 | 久久综合九色综合97_ 久久久 | 久久久成人精品 | 在线视频第一页 | 波多野结衣视频一区二区 | 久久只精品99品免费久23小说 | 亚洲视频免费 | av在线免费观看黄 | 国产精品久久久久久一区二区 | 国产黄色高清 | 成年在线观看 | 国产高清在线视频 | www免费看 | 96久久久 | 国产区av在线 | 开心激情五月婷婷 | 在线免费观看黄色 | 国产污视频在线观看 | 香蕉视频在线视频 | 五月天堂网 | 人人爱天天操 | 黄色av观看 | 蜜臀av在线一区二区三区 | 亚洲黄色精品 | 97超级碰碰碰碰久久久久 | 中文字幕在线网 | 欧美精品久久久久久久久老牛影院 | 国产一级在线观看视频 | 久久这里有精品 | 国产免费观看久久 | 国产夫妻av在线 | 久久久亚洲成人 | 国产精品一区二区你懂的 | 国产美女精品久久久 | 日韩一二区在线观看 | 探花视频在线观看+在线播放 | 色综合天天 | 麻豆视频免费观看 | 精品日韩视频 | 九九99 | 天天草天天干天天 | 人人爱人人做人人爽 | 激情综合五月婷婷 | 欧美色黄 | 国产视频 亚洲视频 | 五月婷婷中文 | 色婷婷综合成人av | 一级a性色生活片久久毛片波多野 | 亚洲精品久久久久久久不卡四虎 | 69av免费视频| 亚洲精欧美一区二区精品 | 中文字幕资源在线观看 | 91精品综合在线观看 | 999久久国产精品免费观看网站 | 久久精品99国产精品 | 亚洲精品黄 | 亚洲一级免费电影 | 国产h片在线观看 | 成人资源在线播放 | 91精品视频观看 | 7777精品伊人久久久大香线蕉 | 亚洲国产精品激情在线观看 | 中文字幕久久久精品 | 日本精品视频一区二区 | 96视频在线 | 日韩欧美一区二区不卡 | 97精品免费视频 | 欧美日韩亚洲在线观看 | 国产精品色婷婷 | 不卡电影免费在线播放一区 | 成人一级在线 | 欧美一级日韩免费不卡 | 日韩啪啪小视频 | 性色av一区二区三区在线观看 | 色婷婷综合久久久中文字幕 | 婷婷久久一区二区三区 | 国产精品久久久久久久久免费 | 日本资源中文字幕在线 | av在线在线 | 97高清视频 | 伊人干综合 | 中文在线免费看视频 | 在线观看免费高清视频大全追剧 | 99久久精品国产免费看不卡 | 丁香六月婷婷开心 | 国产精品激情偷乱一区二区∴ | 国产美女免费 | 国产精品入口a级 | 亚洲国产精品久久 | 国产色视频一区二区三区qq号 | av免费观看高清 | 亚洲影院一区 | 黄色不卡av | 91香蕉国产在线观看软件 | 国产精品久久嫩一区二区免费 | 激情综合色综合久久综合 | 精壮的侍卫呻吟h | 日本中文字幕观看 | 蜜臀久久99精品久久久无需会员 | 日韩精品久久久久久久电影99爱 | 色操插| 久草在线看片 | 插久久 | 久久久黄色免费网站 | 亚洲六月丁香色婷婷综合久久 | 久久亚洲精品国产亚洲老地址 | 91探花国产综合在线精品 | 亚洲精品美女在线观看播放 | 99激情网| av电影中文字幕在线观看 | 国产伦理精品一区二区 | wwxxxx日本| 午夜免费电影院 | 最近免费在线观看 | 操一草| 亚洲成av人片在线观看无 | 午夜久久精品 | 97av免费视频 | 久久精品美女视频 | 99久久99久国产黄毛片 | 欧美日韩三级在线观看 | 美女网站在线免费观看 | 日本黄色免费在线 | 欧美在线一级片 | 国产精品国产自产拍高清av | 日日夜日日干 | 日韩性片 | 天天久久夜夜 | 日韩性xxx | 在线观看免费一区 | 国产一级黄色av | 日韩一区二区三区高清在线观看 | 亚洲精品乱码久久久久 | 摸bbb搡bbb搡bbbb | 日韩av图片 | 欧美人人 | www一起操 | 国产午夜在线观看视频 | 99爱这里只有精品 | 亚洲人人av | 久草国产精品 | 国产精品国产三级国产专区53 | 91精品亚洲影视在线观看 | 国产精品视频免费在线观看 | 亚洲精品在线免费播放 | 久久久精品国产一区二区电影四季 | 日韩在线视频线视频免费网站 | 天天干夜夜夜操天 | www日韩欧美 | 欧美国产日韩一区 | 啪一啪在线 | 久久免费中文视频 | 欧美天堂视频在线 | 日韩高清在线观看 | 欧美精品在线观看一区 | 欧美少妇xxx | 国产精品理论片在线播放 | 激情视频国产 | 天天射天天射 | 免费的国产精品 | 99久久精品免费看国产四区 | 亚洲国产精品成人精品 | 精品国产aⅴ麻豆 | 国产美女精品人人做人人爽 | 欧美日韩国产成人 | 色综合天天视频在线观看 | 在线免费国产视频 | 亚洲日b视频 | 射射射综合网 | 在线欧美日韩 | 午夜丰满寂寞少妇精品 | 99久久精品国产一区二区成人 | 九九久久国产精品 | 日女人电影 | 中文字幕在线观看第二页 | 视频成人免费 | 91精品天码美女少妇 | 狠狠干免费 | 亚洲国产欧美一区二区三区丁香婷 | 亚洲精品国产视频 | a级国产乱理论片在线观看 特级毛片在线观看 | 国产精品九九久久99视频 | 91人人人 | 免费在线观看不卡av | 欧美成人基地 | 亚洲精色 | 日韩激情精品 | 怡红院久久 | 日本黄色免费大片 | 五月天色网站 | 一区二区三区四区五区六区 | 一级欧美一级日韩 | 天堂av高清 | 天天综合天天做天天综合 | 亚洲午夜精品久久久久久久久久久久 | 国产精品午夜久久 | 99热在线观看免费 | 伊人天天狠天天添日日拍 | 在线免费观看视频a | 国产黄色精品视频 | 91成人精品国产刺激国语对白 | 久久久久久久久久伊人 | 一区二区激情 | www国产精品com | 天天爽夜夜爽人人爽一区二区 | 久久精品中文字幕 | 亚洲精选在线观看 | 特及黄色片| 国产精品国产自产拍高清av | 国产免费又爽又刺激在线观看 | 在线免费观看黄网站 | 国产麻豆精品在线观看 | 国产精品成人久久久久 | 中文字幕日韩电影 | 中文字幕一区二 | 五月婷婷六月丁香 | 免费午夜视频在线观看 | 91中文字幕在线视频 | 五月婷影院 | av一二三区| 日韩欧美一区二区三区黑寡妇 | 国产精品嫩草影视久久久 | 中文字幕第一 | 91亚洲在线观看 | 国产最新视频在线 | 六月丁香社区 | 久久午夜鲁丝片 | 日韩在线无 | 女人18毛片90分钟 | 正在播放 国产精品 | 精品久久久久久久久久久院品网 | 午夜男人影院 | 日日爱夜夜爱 | 综合久久久久久久 | 午夜视频在线网站 | 九九热精 | 日韩| 国产美女久久久 | 99久久精品免费看国产麻豆 | 国产午夜精品久久 | 91女子私密保健养生少妇 | 香蕉视频在线观看免费 | 欧美视频99 | 国产精品免费一区二区三区在线观看 | 狠狠色丁香婷婷综合欧美 | 国产免费亚洲高清 | 亚洲美女免费精品视频在线观看 | 伊人伊成久久人综合网小说 | 欧美成年人在线观看 | 成人免费观看大片 | 免费三级在线 | 欧美91片| 99精品在线 | 婷婷色综 | 超碰97网站 | 免费亚洲电影 | 天天伊人网 | 亚洲黄色在线播放 | 日韩在线视频网站 | 狠狠色狠狠色综合日日92 | 草久久精品 | 国产一区二区在线免费视频 | 日日夜夜精品视频天天综合网 | 2021国产精品视频 | 国产精品成人自产拍在线观看 | 四虎免费在线观看视频 | 国产麻豆精品一区 | 国产精品毛片久久久久久 | 午夜在线看片 | 欧美激情综合色综合啪啪五月 | 日韩在线播放欧美字幕 | 免费三级影片 | 最新日本中文字幕 | 狠狠色丁香婷婷综合久小说久 | 午夜电影 电影 |