青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 195,  comments - 30,  trackbacks - 0

轉帖
在一個圓形操場的四周擺放著n堆石子。現要將石子有次序地合并成一堆。規定每次只能選相鄰的2堆石子合并成新的一堆,并將新的一堆石子數記為該次合并的得分。試設計一個算法,計算出將n堆石子合并成一堆的最小得分和最大得分。 
 
 
假設有n堆石子需要合并,可以設計一個2*n-1個元素的數組來存儲每堆石子的個數。
分析最優解的結構:假設有石頭AiAi+1……Aj需要合并,簡記為A[i,j].如果設最后一次合并發生在Ak與Ak+1之間(i<=k<j),則最后一個合并的得分為Ai……Aj堆石頭的個數的總和記為totalValue(i,j).(不管你最后一次合并發生在哪個位置,totalValue(i,j)的值都是一樣的)因此總的得分等于A[i,k]的得分加上A[k+1,j]的得分再加上totalValue(i,j).
可以假設計算A[0,n-1]的一個最優次序所包含的計算子鏈A[0,k]和A[K+1,n-1]的次序也是最優的.
 證明:
 假設存在一個比計算A[0,k]的次序得分更少的次序,則用此次序來替換原來計算A[0,k]的次序,那么此時計算A[0,n-1]次序的得分就會比最優次序所得到的分數更少,這與假設相矛盾;同理可證明:計算A[0,n-1]的一個最優次序所包含的另一個計算子鏈A[k+1,n-1]的次序也是最優的!

綜上所述,此題滿足最優子結構性質,因此可以用動態規劃算法來求解.
建立遞歸關系
設m[i][j]表示A[i,j]的計算結果.
當i=j時,表示只有一堆石頭,不能合并,因此得分為零,所以m[i,j]=0;
當i<j時,可利用最優子結構性質來計算m[i][j],
m[i,j]=m[i,k]+m[k+1,j]+totalValue(i,j)(i<=k<j)

可用矩陣連乘的最優計算次序問題來求解這題.可選用自頂向下的備忘錄算法或是自底向上的動態規劃算法.

以下代碼使用動態規劃算法:

void MatrixChain(int *p,int n,int **m,int flag) //矩陣連乘算法
{
for(int i=0;i<n;i++)
m[i][i]=0;
for(int r=2;r<n;r++)
for(int i=0;i<n-r+1;i++)
{
int j=i+r-1;
int temp=totalValue(i,j,p);
m[i][j]=m[i+1][j]+temp;
for(int k=i+1;k<j;k++)
{
int t=m[i][k]+m[k+1][j]+temp;
if(!flag) //求最小得分
{
 if(t<m[i][j])
 m[i][j]=t;
}
else //求最大得分
if(t>m[i][j])
m[i][j]=t;
}
}
}
MatrixChain(inputNum,2*n-1,m,0); //計算最小得分
int resultMin=m[0][n-1];
for(i=1;i<=n-1;i++)
if(resultMin>m[i][n-1+i])
resultMin=m[i][n-1+i];

MatrixChain(inputNum,2*n-1,m,1); //計算最大得分
int resultMax=m[0][n-1];
for(i=1;i<=n-1;i++)
if(resultMax<m[i][n-1+i])
resultMax=m[i][n-1+i]; 
 
 
 


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/lyflower/archive/2008/03/05/2150239.aspx

一.試題
      在一個園形操場的四周擺放N堆石子(N≤100),現要將石子有次序地合并成一堆。規定
      每次只能選相鄰的兩堆合并成新的一堆,并將新的一堆的石子數,記為該次合并的得分。
      編一程序,由文件讀入堆數N及每堆的石子數(≤20),
      ①選擇一種合并石子的方案,使得做N-1次合并,得分的總和最小;
      ②選擇一種合并石子的方案,使得做N-1次合并,得分的總和最大。
      例如,所示的4堆石子,每堆石子數(從最上面的一堆數起,順時針數)依
      次為4594。則3次合并得分總和最小的方案:8+13+22=43
      得分最大的方案為:14+18+22=54
      輸入數據:
      文件名由鍵盤輸入,該文件內容為:
      第一行為石子堆數N;
      第二行為每堆的石子數,每兩個數之間用一個空格符分隔。
      輸出數據:
      輸出文件名為output.txt
      從第1至第N行為得分最小的合并方案。第N+1行是空行。從第N+2行到第2N+1行是得
      分最大合并方案。
      每種合并方案用N行表示,其中第i行(1≤i≤N)表示第i 次合并前各堆的石子數(依
      順時針次序輸出,哪一堆先輸出均可)。 要求將待合并的兩堆石子數以相應的負數表示,以便標識。

      輸入輸出范例:
      輸入文件內容:
      4
      4 59 4
      輸出文件內容:
      -4 5 9 -4
      -8-5 9
      -13 -9
      22
      
      4 -5 -9 4
      4 -14 -4
      -4-18
      22

      二.算法分析
      競賽中多數選手都不約而同地采用了盡可能逼近目標的貪心法來逐次合并:從最上面
      的一堆開始,沿順時針方向排成一個序列。 第一次選得分最小(最大)的相鄰兩堆合并,
      形成新的一堆;接下來,在N-1堆中選得分最小(最大)的相鄰兩堆合并……,依次類推,
      直至所有石子經N-1次合并后形成一堆。

      例如有6堆石子,每堆石子數(從最上面一堆數起,順時針數)依次為3 46 5 4 2
      要求選擇一種合并石子的方案,使得做5次合并,得分的總和最小。
      按照貪心法,合并的過程如下:
      每次合并得分
      第一次合并 3 4 6 5 4 2 ->5
      第二次合并 5 4 6 5 4    ->9
      第三次合并 9 6 5 4       ->9
      第四次合并 9 6 9          ->15
      第五次合并 15 9           ->24
      24
      總得分=5+9+9+15+24=62

      但是當我們仔細琢磨后,可得出另一個合并石子的方案:
      每次合并得分
      第一次合并 3 4 6 5 4 2  ->7
      第二次合并 7 6 5 4 2     ->13
      第三次合并 13 5 4 2      ->6
      第四次合并 13 5 6         ->11
      第五次合并 13 11          ->24
      24
      總得分=7+6+11+13+24=61
      顯然,后者比貪心法得出的合并方案更優。 題目中的示例故意造成一個貪心法解題的
      假像,誘使讀者進入“陷阱”。為了幫助讀者從這個“陷阱”里走出來, 我們先來明確一個問題:

      1.最佳合并過程符合最佳原理
      使用貪心法至所以可能出錯,
      是因為每一次選擇得分最小(最大)的相鄰兩堆合并,不一定保證余下的合并過程能導致最優解。聰明的讀者馬上會想到一種理想的假設:如果N-1次合并的全局最優解包含了每一次合并的子問題的最優解,那么經這樣的N-1次合并后的得分總和必然是最優的。
      例如上例中第五次合并石子數分別為13和11的相鄰兩堆。
      這兩堆石頭分別由最初的第1,2,3堆(石頭數分別為3,4,6)和第4,5,6堆(石頭數分別為5,4,2)經4次合并后形成的。于是問題又歸結為如何使得這兩個子序列的N-2
      次合并的得分總和最優。為了實現這一目標,我們將第1個序列又一分為二:第1、2堆構成子序列1,
      第3堆為子序列2。第一次合并子序列1中的兩堆,得分7;
      第二次再將之與子序列2的一堆合并,得分13。顯然對于第1個子序列來說,這樣的合并方案是最優的。同樣,我們將第2個子序列也一分為二;第4堆為子序列1,第5,6堆構成子序列2。第三次合并子序列2中的2堆,得分6;第四次再將之與子序列1中的一堆合并,得分13。顯然對于第二個子序列來說,這樣的合并方案也是最優的。
      由此得出一個結論──6堆石子經
      過這樣的5次合并后,得分的總和最小。我們把每一次合并劃分為階段,當前階段中計算出的得分和作為狀態,
      如何在前一次合并的基礎上定義一個能使目前得分總和最大的合并方案作為一次決策。很顯然,某階段的狀態給定后,則以后各階段的決策不受這階段以前各段狀態的影響。
      這種無后效性的性質符最佳原理,因此可以用動態規劃的算法求解。

      2.動態規劃的方向和初值的設定
      采用動態規劃求解的關鍵是確定所有石子堆子序列的最佳合并方案。 這些石子堆子序列包括:
      {第1堆、第2堆}、{第2堆、第3堆}、……、{第N堆、第1堆};
      {第1堆、第2堆、第3堆}、{第2堆、第3堆、第4堆}、……、{第N堆、第1堆、第2堆};……
      {第1堆、……、第N堆}{第1堆、……、第N堆、第1堆}……{第N堆、第1堆、……、第N-1堆}

      為了便于運算,我們用〔i,j〕表示一個從第i堆數起,順時針數j堆時的子序列{第i堆、第i+1堆、……、第(i+j-1)mod n堆}
      它的最佳合并方案包括兩個信息:
      ①在該子序列的各堆石子合并成一堆的過程中,各次合并得分的總和;
      ②形成最佳得分和的子序列1和子序列2。由于兩個子序列是相鄰的, 因此只需記住子序列1的堆數;
      設
      f〔i,j〕──將子序列〔i,j〕中的j堆石子合并成一堆的最佳得分和;
      c〔i,j〕──將〔i,j〕一分為二,其中子序列1的堆數;
      (1≤i≤N,1≤j≤N)
      顯然,對每一堆石子來說,它的
      f〔i,1〕=0
      c〔i,1〕=0 (1≤i≤N)
      對于子序列〔i,j〕來說,若求最小得分總和,f〔i,j〕的初始值為∞; 若求最大得分總和,f〔i,j〕的初始值為0。(1≤i≤N,2≤j≤N)。
      動態規劃的方向是順推(即從上而下)。先考慮含二堆石子的N個子序列(各子序列分別從第1堆、第2堆、……、第N堆數起,順時針數2堆)的合并方案
      f〔1,2〕,f〔2,2〕,……,f〔N,2〕
      c〔1,2〕,c〔2,2〕,……,c〔N,2〕
      然后考慮含三堆石子的N個子序列(各子序列分別從第1堆、第2堆、……、第N堆數起,順時針數3堆)的合并方案
      f〔1,3〕,f〔2,3〕,……,f〔N,3〕
      c〔1,3〕,c〔2,3〕,……,c〔N,3〕
      ……
      依次類推,直至考慮了含N堆石子的N個子序列(各子序列分別從第1堆、第2堆、 ……、第N堆數起,順時針數N堆)的合并方案
      f〔1,N〕,f〔2,N〕,……,f〔N,N〕
      c〔1,N〕,c〔2,N〕,……,c〔N,N〕
      最后,在子序列〔1,N〕,〔2,N〕,……,〔N,N〕中,選擇得分總和(f值)最小(或最大)的一個子序列〔i,N〕(1≤i≤N),由此出發倒推合并過程。

      3.動態規劃方程和倒推合并過程
      對子序列〔i,j〕最后一次合并,其得分為第i堆數起,順時針數j堆的石子總數t。被合并的兩堆石子是由子序列〔i,k〕和〔(i+k-1)mod
      n+1,j-k〕(1≤k≤j-1)經有限次合并形成的。為了求出最佳合并方案中的k值,我們定義一個動態規劃方程:
      當求最大得分總和時
      f〔i,j〕=max{f〔i,k〕+f〔x,j-k〕+t}
      1≤k≤j-1
      c〔i,j〕=k│ f〔i,j〕=f〔i,k〕+f〔x,j-k〕+t
      (2≤j≤n,1≤i≤n)

      當求最小得分總和時
      f〔i,j〕=min{f〔i,k〕+f〔x,j-k〕+t}
      1≤k≤j-1
      c〔i,j〕=k│ f〔i,j〕=f〔i,k〕+f〔x,j-k〕+t
      (2≤j≤n,1≤i≤n)
      其中x=(i+k-1)modn+1,即第i堆數起,順時針數k+1堆的堆序號。

      例如對上面例子中的6(3 4 6 5 4 2 )堆石子,按動態規劃方程順推最小得分和。 依次得出含二堆石子的6個子序列的合并方案
      f〔1,2〕=7 f〔2,2〕=10 f〔3 ,2〕=11
      c〔1,2〕=1 c〔2,2〕=1 c〔3,2〕=1
      f〔4,2〕=9 f〔5,2〕=6 f〔6,2〕=5
      c〔4,2〕=1 c〔5, 2〕=1 c〔6,2〕=1

      含三堆石子的6(3 4 6 5 4 2 )個子序列的合并方案
      f〔1,3〕=20 f〔2,3〕=25 f〔3,3〕=24
      c〔1,3〕=2 c〔2,3〕=2 c〔3,3〕=1
      f〔4,3〕=17 f〔5,3〕=14 f〔6,3〕=14
      c〔4,3〕=1 c〔5,3〕=1 c〔6,3〕=2

      含四堆石子的6(3 4 6 5 4 2 )個子序列的合并方案
      f〔1,4〕=36 f〔2,4〕=38 f〔3,4〕=34
      c〔1,4〕=2 c〔2,4〕=2 c〔3,4〕=1
      f〔4,4〕=28 f〔5,4〕=26 f〔6,4〕=29
      c〔4,4〕=1 c〔5,4〕=2 c〔6,4〕=3

      含五堆石子的6(3 4 6 5 4 2 )個子序列的合并方案
      f〔1,5〕=51 f〔2,5〕=48 f〔3,5〕=45
      c〔1,5〕=3 c〔2,5〕=2 c〔3,5〕=2
      f〔4,5〕=41 f〔5,5〕=43 f〔6,5〕=45
      c〔4,5〕=2 c〔5,5〕=3 c〔6,5〕=3

      含六堆石子的6(3 4 6 5 4 2 )個子序列的合并方案
      f〔1,6〕=61 f〔2,6〕=62 f〔3,6〕=61
      c〔1,6〕=3 c〔2,6〕=2 c〔3,6〕=2
      f〔4,6〕=61 f〔5,6〕=61 f〔6,6〕=62
      c〔4,6〕=3 c〔5,6〕=4 c〔6,6〕=3

      f〔1,6〕是f〔1,6〕,f〔2,6〕,……f〔6,6〕中的最小值,表明最小得分和是由序列〔1,6〕經5次合并得出的。我們從這個序列出發,
      按下述方法倒推合并過程:
      由c〔1,6〕=3可知,第5次合并的兩堆石子分別由子序列〔1,3〕和子序列〔4,3〕經4次合并后得出。其中c〔1,3〕=2可知由子序列〔1,3〕合并成的一堆石子是由子序列〔1,2〕和第三堆合并而來的。而c〔1,2〕=1,以表明了子序列〔1,2〕的合并方案是第1堆合并第2堆。
      由此倒推回去,得出第1,第2次合并的方案,每次合并得分
      第一次合并 3 4 6……    ->7
      第二次合并 7 6……          ->13
      13……
      子序列〔1,3〕經2次合并后合并成1堆, 2次合并的得分和=7+13=20。
      c〔4,3〕=1,可知由子序列〔4,3〕合并成的一堆石子是由第4堆和子序列〔5,
      2〕合并而來的。而c〔5,2〕=1,又表明了子序列〔5,2〕的合并方案是第5堆合并第6堆。由此倒推回去,得出第3、第4次合并的方案
      每次合并得分:
       第三次合并 ……54 2     ->6
      第四次合并 ……5 6        ->11
      ……11
      子序列〔4,3〕經2次合并后合并成1堆,2次合并的得分和=6+11=17。
      第五次合并是將最后兩堆合并成1堆,該次合并的得分為24。
      顯然,上述5次合并的得分總和為最小
      20+17+24=61

      上述倒推過程,可由一個print(〔子序列〕)的遞歸算法描述
      procedure print (〔i,j〕)
      begin
      if j〈〉1 then {繼續倒推合并過程
      begin
      print(〔i,c〔i,j〕〕;{倒推子序列1的合并過程}
      print(〔i+c〔i,j〕-1〕mod n+1,j-c〔i,j〕)
      {倒推子序列2的合并過程}
      for K:=1 to N do{輸出當前被合并的兩堆石子}
      if (第K堆石子未從圈內去除)
      then begin
      if(K=i)or(K=X)then置第K堆石子待合并標志
      else第K堆石子未被合并;
      end;{then}
      第i堆石子數←第i堆石子數+第X堆石子數;
      將第X堆石子從圈內去除;
      end;{then}
      end;{print}
      例如,調用print(〔1,6〕)后的結果如下:
                           print(〔1,6〕)⑤
                                ┌──────┴──────┐
                     print(〔1,3〕)②               print(〔4,3〕)④
                ┌─────┴─────┐               ┌─────┴─────┐
          print(〔1,2〕)① print(〔3,1〕)     print(〔4,1〕) print(〔5,2〕)③
       ┌──────┴──────┐                         ┌──────┴──────┐             
      print(〔1,1〕)        print(〔2,1〕)               print(〔5,1〕)        
      print(〔6,1〕)
      (圖6.2-5)
      其中回溯至
      ① 顯示 3 46 5 4
      ② 顯示 7 65 4 2
      ③ 顯示 13 54 2
      ④ 顯示 135 6
      ⑤ 顯示 13 11
      注:調用print過程后,應顯示6堆石子的總數作為第5次合并的得分。

      Program Stones;
      Type
      Node = Record{當前序列的合并方案}
      c : Longint;{得分和}
      d : Byte{子序列1的堆數}
      End;
      SumType = Array [1..100,1..100] of Longint;
      {sumtype[i,j]-子序列[i,j]的石子總數}
      Var
      List : Array [1..100,1..100] of Node;
      {list[i,j]-子序列[i,j]的合并方案}
      Date, Dt : Array [1..100] of Integer;
      {Date[i]-第i堆石子數,Dt-暫存Date}
      Sum : ^SumType;{sum^[i,j]-指向子序列[i,j]的石子總數的指針}
      F : Text;{文件變量}
      Fn : String;{文件名串}
      N, i, j : Integer;{N-石子堆數,i,j-循環變量}

      Procedure Print(i, j : Byte);{遞歸打印子序列[i,j]的合并過程}
      Var
      k, x : Shortint;{k-循環變量;x-子序列2中首堆石子的序號}
      Begin
      If j <> 1 Then Begin{繼續倒推合并過程}
        Print(i, List[i,j].d);{倒推子序列1的合并過程}
        x := (i + List[i, j].d - 1) Mod N + 1;{求子序列2中首堆石子的序號}
        Print(x, j - List[i, j].d);{倒推子序列2的合并過程}
        For k := 1 to N Do{輸出當前合并第i堆,第x堆石子的方案}
          If Date[k] > 0 Then Begin
             If (i= k)or(x=k)Then Write(F, - Date[k], ' ')
             Else Write(F, Date[k], ' ')
          End; { Then }
        Writeln(F);{輸出換行符}
        Date[i] := Date[i] + Date[x];{原第i堆和第x堆合并成第i堆}
        Date[x] := - Date[x]{將原第x堆從圈內去除}
        End { Then }
      End; { Print }

      Procedure Main(s : Shortint);
      Var
        i, j, k : Integer;
        t, x : Longint;
      Begin
        For i := 1 to N Do Begin{僅含一堆石子的序列不存在合并}
          List[i, 1].c := 0;
          List[i, 1].d := 0
        End; {For}
        For j := 2 to N Do{順推含2堆,含3堆……含N堆石子的各子序列的合并方案}
          For i := 1 to N Do Begin{當前考慮從第i堆數起,順時針數j堆的子序列}
            If s = 1 Then List[i, j].c := Maxlongint{合并[i,j]子序列的得分和初始化}
             Else List[i, j].c := 0;
            t := Sum^[i, j];{最后一次合并的得分為[i,j]子序列的石子總數}
            For k := 1 to j - 1 Do Begin{子序列1的石子堆數依次考慮1堆……j-1堆}
              x := (i + k - 1) Mod N + 1;{求子序列2首堆序號}
              If (s=1) And (List[i,k].c + List[x,j-k].c+t < List[i, j].c)
      Or (s=2) And (List[i,k].c + List[x,j-k].c+t > List[i, j].c)
      { 若該合并方案為目前最佳,則記下}
              Then Begin
                List[i, j].c := List[i, k].c + List[x, j - k].c + t;
                List[i, j].d := k
              End { Then }
            End { For }
        End; { For }
      {在子序列[1,N],[2,N],……,[N, N]中選擇得分總和最小(或最大)的一個子序列}
        k := 1; x := List[1, N].c;
        For i := 2 to N Do
          If (s = 1) And (List[i, N].c < x) Or (s = 2) And
      (List[i, N].c > x) Then Begin
             k := i; x := List[i, N].c
          End; { Then }
        Print(k, N);{由此出發,倒推合并過程}
        Writeln(F, Sum^[1, N]);{輸出最后一次將石子合并成一堆的石子總數}
        Writeln(F);
        Writeln(list[k, N].c)
      End; { Main }

      Begin
        Write('File name = ');{輸入文件名串}
        Readln(Fn);
        Assign(F, Fn);{該文件名串與文件變量連接}
        Reset(F);{文件讀準備}
        Readln(F, N);{讀入石子堆數}
        For i := 1 to N Do Read(F, Date[i]);{讀入每堆石子數}
        New(Sum);{求每一個子序列的石子數sum}
        For i := 1 to N Do Sum^[i, 1] := Date[i];
        For j := 2 to N Do
          For i := 1 to N Do
            Sum^[i, j] := Date[i] + Sum^[i Mod N + 1, j - 1];
        Dt := Date;{暫存合并前的各堆石子,結構相同的變量可相互賦值}
        Close(F);{關閉輸入文件}
        Assign(F, 'OUTPUT.TXT');{文件變量與輸出文件名串連接}
        Rewrite(F);{文件寫準備}
        Main(1);{求得分和最小的合并方案}
        Date := Dt;{恢復合并前的各堆石子}
        Main(2);{求得分和最大的合并方案}
        Close(F){關閉輸出文件}

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/lyflower/archive/2008/03/05/2150251.aspx

posted on 2009-06-30 20:12 luis 閱讀(2456) 評論(0)  編輯 收藏 引用 所屬分類: 轉載
<2010年12月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

文章分類

文章檔案

友情鏈接

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            永久免费视频成人| 久久久精品久久久久| 久久成人国产精品| 午夜久久久久| 亚洲黄色影片| 欧美电影免费观看网站| 久热精品视频在线| 国产麻豆日韩欧美久久| 亚洲最新中文字幕| 亚洲午夜视频在线观看| 欧美日韩成人综合在线一区二区| 亚洲成人资源网| 亚洲电影激情视频网站| 老司机aⅴ在线精品导航| 免费美女久久99| 亚洲国产精品毛片| 欧美电影免费| 欧美日韩日本国产亚洲在线| 亚洲福利视频免费观看| 亚洲精品乱码久久久久久按摩观 | 亚洲国产精品久久久久婷婷884| 久久黄色影院| 欧美成人有码| 日韩视频在线观看国产| 欧美激情亚洲国产| 日韩视频不卡中文| 亚洲综合不卡| 国产亚洲一本大道中文在线| 欧美主播一区二区三区美女 久久精品人| 久久国产日韩欧美| 一区二区视频在线观看| 欧美国产精品久久| 在线综合亚洲| 亚洲国产专区校园欧美| 亚洲国产成人不卡| 99精品欧美一区二区蜜桃免费| 欧美日韩ab| 亚洲一区二区三区欧美| 久久久www成人免费无遮挡大片| 精品1区2区| 欧美人成网站| 午夜欧美电影在线观看| 欧美超级免费视 在线| 99re6热在线精品视频播放速度| 欧美特黄一区| 久久爱www久久做| 亚洲国产美女久久久久| 亚洲免费在线视频一区 二区| 国产一区二区三区久久悠悠色av| 蜜桃av一区二区三区| 99这里只有精品| 久久躁日日躁aaaaxxxx| 亚洲视频一区二区在线观看 | 欧美在线观看视频在线| 亚洲电影在线观看| 午夜欧美理论片| 亚洲国产婷婷香蕉久久久久久99| 欧美日韩亚洲一区二区三区在线| 欧美一区激情| 日韩视频三区| 免费视频最近日韩| 亚洲一区二区三区视频| 好看的日韩视频| 免费亚洲电影在线| 韩国自拍一区| 亚洲淫性视频| 亚洲日韩欧美一区二区在线| 欧美一区二区日韩一区二区| 欧美日本三级| 亚洲精品视频免费观看| 久久综合久久综合九色| 欧美亚洲午夜视频在线观看| 欧美日韩天天操| 亚洲自啪免费| 午夜精品成人在线视频| 国产日本亚洲高清| 老司机凹凸av亚洲导航| 国产精品色一区二区三区| 中国成人黄色视屏| 欧美一级在线视频| 亚洲乱码国产乱码精品精| 在线视频你懂得一区二区三区| 午夜在线一区| 国产私拍一区| 中文亚洲视频在线| 亚洲欧美bt| 老司机午夜免费精品视频| 亚洲视频www| 亚洲精品国产精品久久清纯直播| 免费的成人av| 亚洲精选视频在线| 欧美黄色日本| 蜜臀久久久99精品久久久久久| 亚洲色在线视频| 欧美性一区二区| 玖玖玖国产精品| 欧美aⅴ99久久黑人专区| 韩国欧美一区| 亚洲精品国产精品国自产观看浪潮| 欧美三级电影一区| 欧美在线黄色| 欧美电影免费观看高清| 老司机一区二区三区| 日韩视频永久免费观看| 久久亚洲色图| 久久久精彩视频| 久久国产一区二区三区| 欧美专区日韩专区| 久久国产一区| 久久精品视频免费| 玖玖精品视频| 国产精品成人一区二区三区吃奶 | 欧美与黑人午夜性猛交久久久| 亚洲女人小视频在线观看| 亚洲午夜在线观看视频在线| 国产精品99久久不卡二区| 一区二区三区精品视频| 这里是久久伊人| 午夜精品成人在线视频| 久久国产成人| 蜜桃精品久久久久久久免费影院| 免费一区二区三区| 欧美日韩伦理在线| 国产精品视频在线观看| 国产亚洲成av人在线观看导航| 国产综合精品一区| 亚洲国产一区二区在线| 一区二区国产精品| 亚洲欧美在线磁力| 久久综合九色| 久久久之久亚州精品露出| 欧美日韩免费高清| 亚洲美洲欧洲综合国产一区| 99国产一区| 亚洲福利国产精品| 久久久91精品国产一区二区三区| 午夜免费日韩视频| 国产欧美一区二区精品忘忧草| 亚洲欧美激情精品一区二区| 欧美专区在线观看一区| 在线播放一区| 欧美视频一区二区在线观看| 亚洲视频www| 欧美成人dvd在线视频| 亚洲另类在线视频| 国产嫩草影院久久久久 | 欧美性猛交一区二区三区精品| 久久国产精品一区二区三区| 国产精品人成在线观看免费| 午夜精品福利在线| 欧美中文字幕精品| 欧美日韩一区二区精品| 亚洲黄网站在线观看| 亚洲福利在线看| 在线中文字幕一区| 久久人人精品| 一本色道久久综合亚洲精品按摩| 欧美呦呦网站| 欧美日韩亚洲一区三区| 伊人精品视频| 欧美亚洲在线| 亚洲日本在线观看| 久久av一区二区三区| 欧美日韩三级| 亚洲国产精品黑人久久久| 国产精品扒开腿做爽爽爽软件| 亚洲福利视频在线| 亚洲女人天堂成人av在线| 久久伊人一区二区| 久久久久国产精品人| 午夜免费在线观看精品视频| 一本久久综合亚洲鲁鲁五月天| 美女国内精品自产拍在线播放| 欧美一区成人| 亚洲欧美日韩国产中文| 国产精品乱人伦一区二区| 国产美女高潮久久白浆| 一区二区三区久久| 免费一级欧美片在线观看| 亚洲第一区在线| 国产一区二区久久久| 亚洲欧美日韩国产另类专区| 日韩午夜三级在线| 欧美日韩一区在线观看视频| 亚洲视频在线看| 欧美人与禽猛交乱配| 亚洲永久在线| 国产精品视频免费观看| 一区二区三区成人| 欧美日韩在线三区| 亚洲毛片一区| 欧美丝袜一区二区| 亚洲欧美激情一区| 午夜精品影院在线观看| 尤物yw午夜国产精品视频明星| 久色成人在线| 亚洲日本电影| 国产视频一区免费看| 久久婷婷国产综合精品青草| 亚洲黄网站黄|