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

ACM___________________________

______________白白の屋
posts - 182, comments - 102, trackbacks - 0, articles - 0
<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

常用鏈接

留言簿(24)

隨筆分類(332)

隨筆檔案(182)

FRIENDS

搜索

積分與排名

最新隨筆

最新評論

閱讀排行榜

評論排行榜

MiYu原創(chuàng), 轉(zhuǎn)帖請注明 : 轉(zhuǎn)載自 ______________白白の屋

題目地址:

     http://acm.hdu.edu.cn/showproblem.php?pid=1010 

題目描述:

 代碼

Tempter of the Bone

Time Limit: 
2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 
16817    Accepted Submission(s): 4693


Problem Description
The doggie found a bone 
in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began to shake, and the doggie could feel the ground sinking. He realized that the bone was a trap, and he tried desperately to get out of this maze.

The maze was a rectangle with sizes N by M. There was a door 
in the maze. At the beginning, the door was closed and it would open at the T-th second for a short period of time (less than 1 second). Therefore the doggie had to arrive at the door on exactly the T-th second. In every second, he could move one block to one of the upper, lower, left and right neighboring blocks. Once he entered a block, the ground of this block would start to sink and disappear in the next second. He could not stay at one block for more than one second, nor could he move into a visited block. Can the poor doggie survive? Please help him.
 

Input
The input consists of multiple test cases. The first line of each test 
case contains three integers N, M, and T (1 < N, M < 70 < T < 50), which denote the sizes of the maze and the time at which the door will open, respectively. The next N lines give the maze layout, with each line containing M characters. A character is one of the following:

'X': a block of wall, which the doggie cannot enter; 
'S': the start point of the doggie; 
'D': the Door; or
'.': an empty block.

The input 
is terminated with three 0's. This test case is not to be processed.
 

Output
For each test 
case, print in one line "YES" if the doggie can survive, or "NO" otherwise.
 

Sample Input
4 4 5
S.X.
..X.
..XD
....
3 4 5
S.X.
..X.
...D
0 0 0
 

Sample Output
NO
YES 

 

 

題目分析 :

   傳說中的 搜索題中具有里程碑意義的題目........

很好,很強(qiáng)大. 做過過這題大概也就明白了 搜索中的 奇偶剪枝以及路徑. 加了剪枝的直接結(jié)果就是 TLE 和 46MS AC.......

剛開始做的時(shí)候,也沒明白剪枝到底有什么作用, 所以直接敲了個(gè)DFS代碼就交了, 答案很明顯....TLE.  然后就去學(xué)習(xí)PPT去了.

所謂奇偶剪枝 : 

  1. 把矩陣標(biāo)記成如下形式:
  2. 0,1,0,1,0
  3. 1,0,1,0,1
  4. 0,1,0,1,0
  5. 1,0,1,0,1
  6. 很明顯,如果起點(diǎn)在0 而終點(diǎn)在1 那顯然 要經(jīng)過奇數(shù)步才能從起點(diǎn)走到終點(diǎn),依次類推,奇偶相同的偶數(shù)步,奇偶不同的奇數(shù)步
  7. 在讀入數(shù)據(jù)的時(shí)候就可以判斷,并且做剪枝,當(dāng)然做的時(shí)候并不要求把整個(gè)矩陣0,1刷一遍,讀入的時(shí)候起點(diǎn)記為(Si,Sj) 終點(diǎn)記為(Di,Dj) 判斷(Si+Sj) 和 (Di+Dj) 的奇偶性就可以了
 

所謂路徑剪枝:  

    矩陣的大小是N*M 墻的數(shù)量記為wall 如果能走的路的數(shù)量 N*M - wall 小于時(shí)間T,就是說走完也不能到總的時(shí)間的,這顯然是錯(cuò)誤的,可以直接跳出了.

   另外還有就是, 當(dāng)DFS深度 > T 時(shí),顯然也不用繼續(xù)找下去了. 那狗已經(jīng)掛了. 

所以在經(jīng)過這3次剪枝后, 時(shí)間就大大縮短了. 

 

值得一提的是!!! 這題我WA了很久, 一直找不原因,  因?yàn)閿?shù)據(jù)不一定是按嚴(yán)格矩陣排列的!! 也可能都在一行!!!! 所以 無論是 gets 還是 getchar 都錯(cuò)的很冤枉.

使用 cin  和 scanf ("%s") 后 AC 了, 在此感謝 AMB神牛的幫忙....... 

 

代碼如下:

 /*

MiYu原創(chuàng), 轉(zhuǎn)帖請注明 : 轉(zhuǎn)載自 ______________白白の屋

Author By : MiYu

Test      : 1

Program   : HDU1010

*/


#include <iostream>

#include <ctime>

using namespace std;

typedef struct pos{

       int x,y;

       void setPos( int a = 0,int b = 0 ){ x = a; y = b; }

}POS; 

POS start,end;

const int START = 10;  //看了就知道啥意思 

const int DOOR = 20;

const int WALL = 0;

const int ROAR = 1;

int N = 0,M = 0,T = 0; //輸入的 

int maze[11][11];      //很明顯是迷宮地圖 

int d[4][2] = { { 0,1 },{ 1,0 },{ 0,-1 },{ -1,0 } };

int f = 1,roarCount = 0;  //標(biāo)記是否找到路 , 記錄可以走的路的個(gè)數(shù) 

int DFS ( int x,int y,int n )

{

    if ( n == T )     //時(shí)間用完了, 走到出口沒 ? 

    {

         if ( x == end.x && y == end.y )

              f = 0;

         return 0;  

    }

    if ( f == 0 )     //已經(jīng)找到路了, 不用找了  

         return 0;

    int t = T - n - abs( x-end.x ) - abs( y-end.y );   

    if ( t < 0 || t % 2 == 1 )     //不夠時(shí)間了 或 不可能走到(奇偶剪枝)

         return 0;  

    for ( int i = 0; i != 4; ++ i )

    {

          if ( maze[ x+d[i][0] ][ y+d[i][1] ] != WALL )    //先看看下一步能不能走 

          {

                     maze[x+d[i][0]][y+d[i][1]] = WALL;    //走過后就不能走了 

                     DFS ( x+d[i][0], y+d[i][1], n + 1 );  //走到下一個(gè)位置 

                     if ( f == 0 )     //已經(jīng)找到路了, 不用找了  

                          return 0; 

                     maze[x+d[i][0]][y+d[i][1]] = ROAR;    //沒找到路,回溯下 

          }

    } 

    return 0;

}

void init()  //在主函數(shù)一堆, 難看, 放外面了, 不解釋 

{

     memset ( maze, 0, sizeof ( maze ) );

     f = 1, roarCount = 0;

     for ( int i = 1; i <= N; ++ i )

     {

           char ch;

           for ( int j = 1; j <= M ; ++ j )

           {           

                 cin >> ch;

                 switch ( ch )

                 {

                         case 'S':  maze[i][j] = START; start.setPos ( i,j ); break;

                         case '.':  maze[i][j] = ROAR;  roarCount ++; break;

                         case 'X':  maze[i][j] = WALL;  break;              

                         case 'D':  maze[i][j] = DOOR;  end.setPos ( i,j ); roarCount ++; break;

                 }

           } 

     }      

}

int main ()

{

    while ( cin >> N >> M >> T, N + M + T )

    {

           init ();

           if ( roarCount >= T )      //當(dāng)然要保證能走的路比開門的時(shí)間要多 

           {

                maze[start.x][start.y] = WALL;

                DFS( start.x, start.y, 0 );

           }  

           puts ( f == 1 ? "NO" : "YES" );

    }

    return 0;

}

另外附上一網(wǎng)友詳細(xì)解釋:

 


  1. 1010 temp of the bone
  2. sample input:
  3. 4 4 5
  4. S.X.
  5. ..X.
  6. ..XD
  7. ....
  8. 問題:
  9. (1):
  10. 在發(fā)現(xiàn)當(dāng)前節(jié)點(diǎn)無法到達(dá)時(shí),這點(diǎn)彈出棧,并且把這點(diǎn)的標(biāo)記重新刷為'.'
  11. (2):
  12. 如何在dfs中既要保證到達(dá)又要使時(shí)間正好呢?? 在函數(shù)中通過這種形式實(shí)現(xiàn):
  13. dfs(int si,int sj,int cnt) 就是用cnt來記錄當(dāng)時(shí)的時(shí)間,并且在
  14. if( si==di && sj==dj && cnt==t )
  15.     {
  16.         escape = 1;
  17.         return;
  18.     }
  19. 的時(shí)候 即當(dāng)前點(diǎn)到達(dá)了終點(diǎn)并且時(shí)間恰好等于題目所給限制時(shí)間時(shí),跳出
  20. 并且escape標(biāo)記為真
  21. (3):
  22. 如何讓一個(gè)點(diǎn)有順序地遍歷它四周地能到達(dá)的點(diǎn)呢??
  23. 聰明并且簡短的方法是設(shè)施一個(gè)dir[4][2] 數(shù)組 控制方向
  24. 并且設(shè)置它的值為dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};
  25. 遍歷的時(shí)候用for(i:0->4)就非常方便了
  26. (4):
  27. 千萬要注意的是節(jié)點(diǎn)越界的情況, dfs(int si,int sj,int cnt)的時(shí)候一定要把 si, sj 控制在給你的矩陣內(nèi) 在后面會提到一個(gè)我的列子 就是因?yàn)樵L問了[0, -1]的位置導(dǎo)致了其
  28. 他數(shù)據(jù)被更改
  29. (5):
  30. 讀入矩陣的時(shí)候,可以采用for(i = 1; i <= N; i++)
  31.                for(j = 1; j <= M; j++)
  32.                 scanf("%c", &map[i][j]);       
  33. 的方法,好處在于可以控制和計(jì)算每一個(gè)讀入的數(shù)據(jù),壞處是調(diào)試的時(shí)候?qū)仃嚨挠^察不太方便,而且好像還會有錯(cuò)誤,在2102"A計(jì)劃"用這種方法讀入數(shù)據(jù)時(shí)好像就會wa,
  34. 另一種方法是for(i = 0; i < N; i++) gets(map[i]);
  35. 這樣讀入的數(shù)據(jù)在調(diào)試觀察的時(shí)候十分方便 gets()讀入的默認(rèn)為字符串,在vc調(diào)試的時(shí)候是顯式的 可以直接觀察矩陣 缺點(diǎn)是對矩陣中各個(gè)數(shù)據(jù)的計(jì)算和控制無法實(shí)現(xiàn),需要讀完后再遍歷一遍
  36. (6)
  37. 能用bfs還是盡量用bfs 我不會bfs.... dfs的遞歸在調(diào)試的時(shí)候不是很方便,而且bfs要比dfs快,調(diào)試也要方便,因?yàn)樗鼪]有遞歸
  38. (7)
  39. 關(guān)于剪枝,沒有剪枝的搜索不太可能,這題老劉上課的時(shí)候講過兩個(gè)剪枝,一個(gè)是奇偶剪枝,一個(gè)是路徑剪枝
  40. 奇偶剪枝:
  41. 把矩陣標(biāo)記成如下形式:
  42. 0,1,0,1,0
  43. 1,0,1,0,1
  44. 0,1,0,1,0
  45. 1,0,1,0,1
  46. 很明顯,如果起點(diǎn)在0 而終點(diǎn)在1 那顯然 要經(jīng)過奇數(shù)步才能從起點(diǎn)走到終點(diǎn),依次類推,奇偶相同的偶數(shù)步,奇偶不同的奇數(shù)步
  47. 在讀入數(shù)據(jù)的時(shí)候就可以判斷,并且做剪枝,當(dāng)然做的時(shí)候并不要求把整個(gè)矩陣0,1刷一遍,讀入的時(shí)候起點(diǎn)記為(Si,Sj) 終點(diǎn)記為(Di,Dj) 判斷(Si+Sj) 和 (Di+Dj) 的奇偶性就可以了
  48. 路徑剪枝:
  49. 矩陣的大小是N*M 墻的數(shù)量記為wall 如果能走的路的數(shù)量 N*M - wall 小于時(shí)間T,就是說走完也不能到總的時(shí)間的,這顯然是錯(cuò)誤的,可以直接跳出了
  50. 課件里面給過這題的標(biāo)程,在dfs的過程中有個(gè)沒提到的剪枝,就是記錄當(dāng)前點(diǎn)到終點(diǎn)的最短路,如果小于剩余的時(shí)間的話,就跳出
  51. 這個(gè)剪枝我覺得更科學(xué),它畢竟是動(dòng)態(tài)的么,標(biāo)程里面是這么寫的:
  52. temp = (t-cnt) - abs(si-di) - abs(sj-dj);
  53. if( temp<0 || temp&1 ) return;
  54. 其中求當(dāng)前點(diǎn)到終點(diǎn)的最短路是這樣 abs(si-di) - abs(sj-dj) 這個(gè)就比較粗糙了 明顯沒有考慮到碰到墻要拐彎的情況
  55. 那求最短路有沒有什么好辦法呢?
  56. 我曾經(jīng)想到過用 Dijkstraq求最短路的 ,明顯大才小用,在論壇里看到一個(gè)方法覺得可以用在這里
  57. 給定下例:
  58. S.X.
  59. ..X.
  60. ..XD
  61. ....
  62. 每個(gè)點(diǎn)到終點(diǎn)的最短路是不是這樣呢:
  63. S6X2
  64. 65X1
  65. 54XD
  66. 4321
  67. 這怎么求呢??從終點(diǎn)開始遍歷整個(gè)數(shù)組,終點(diǎn)是0,它周圍的點(diǎn)都+1,墻就不計(jì)數(shù),依次類推,就能求得這個(gè)矩陣的一個(gè)最短時(shí)間矩陣,在dfs的時(shí)候比較當(dāng)前點(diǎn)到終點(diǎn)的最短路,如果大于剩余時(shí)間的話就跳出
  68. 這個(gè)方法的預(yù)處理還是非常快的,我沒有用過,但是感覺會非常有用處.
  69. (8)
  70. 在做這題的時(shí)候,我碰到過一個(gè)神奇的事情,在程序運(yùn)行至下面代碼時(shí)
  71. if( map[ si+dir[i][0] ][ sj+dir[i][1] ] != 'X')           
  72.     map[ si+dir[i][0] ][ sj+dir[i][1] ] = 'X';
  73. T被改變了!! 這絲毫和T沒有關(guān)系啊,怎么改變T的值呢??
  74. 原來在起點(diǎn)map[0][0]進(jìn)入時(shí),我沒有注意到map[ si+dir[i][0] ][ sj+dir[i][1] ] 實(shí)際做的是map[0][-1] = 'X'; 很危險(xiǎn)的一個(gè)賦值,書本上千萬次強(qiáng)調(diào)的東西讓我碰上了,這個(gè)地方我找了很久,因此我覺得有必要單獨(dú)列出來提醒自己
  75. //////////////////////////////////////////////////////////////////////////////////////////////////////////////
  76. 下面我把一個(gè)帶注釋的標(biāo)程貼一下,不是我寫的注釋
  77. //zju 2110 Tempter of the Bone
  78. #include <stdio.h>
  79. #include <iostream>
  80. #include <string.h>
  81. #include <stdlib.h>
  82. using namespace std;
  83. //迷宮地圖
  84. //X: 墻壁,小狗不能進(jìn)入
  85. //S: 小狗所處的位置
  86. //D: 迷宮的門
  87. //. : 空的方格
  88. char map[9][9];
  89. int n,m,t,di,dj; //(di,dj):門的位置
  90. bool escape;
  91. int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}}; //分別表示下、上、左、右四個(gè)方向
  92. void dfs(int si,int sj,int cnt)  //表示起始位置為(si,sj),要求在第cnt秒達(dá)到門的位置
  93. {
  94.     int i,temp;
  95.     if( si>n || sj>m || si<=0 || sj<=0 ) return;
  96.    
  97.     if( si==di && sj==dj && cnt==t )
  98.     {
  99.         escape = 1;
  100.         return;
  101.     }
  102.    
  103.     //abs(x-ex) + abs(y - ey)表示現(xiàn)在所在的格子到目標(biāo)格子的距離(不能走對角線)
  104.     //t-cnt是實(shí)際還需要的步數(shù),將他們做差
  105.     //如果temp < 0或者temp為奇數(shù),那就不可能到達(dá)!
  106.     temp = (t-cnt) - abs(si-di) - abs(sj-dj);
  107.    
  108.     if( temp<0 || temp&1 ) return;
  109.    
  110.     for( i=0; i<4; i++ )
  111.     {
  112.         if( map[ si+dir[i][0] ][ sj+dir[i][1] ] != 'X')
  113.         {
  114.             map[ si+dir[i][0] ][ sj+dir[i][1] ] = 'X';
  115.                
  116.                 dfs(si+dir[i][0], sj+dir[i][1], cnt+1);
  117.            
  118.             if(escape) return;
  119.            
  120.             map[ si+dir[i][0] ][ sj+dir[i][1] ] = '.';
  121.         }
  122.     }
  123.    
  124.     return;
  125. }
  126. int main()
  127. {
  128.     int i,j,si,sj;
  129.    
  130.     while( cin >> n >> m >> t)
  131.     {
  132.         if( n==0 && m==0 && t==0 )
  133.             break;
  134.    
  135.         int wall = 0;
  136.         for( i=1; i<=n; i++ )
  137.             for( j=1; j<=m; j++ )
  138.             {
  139.                 cin >> map[i][j];
  140.                 if(map[i][j]=='S') { si=i; sj=j; }
  141.                 else if( map[i][j]=='D' ) { di=i; dj=j; }
  142.                 else if( map[i][j]=='X' ) wall++;
  143.             }
  144.            
  145.             if( n*m-wall <= t )
  146.             {
  147.                 cout << "NO" << endl;
  148.                 continue;
  149.             }
  150.            
  151.             escape = 0;
  152.             map[si][sj] = 'X';
  153.            
  154.             dfs( si, sj, 0 );
  155.            
  156.             if( escape ) cout << "YES" << endl;
  157.             else cout << "NO" << endl;
  158.     }
  159.    
  160.     return 0;
  161. }
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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精品国产一区二区青青牛奶| 亚洲青色在线| 蜜臀久久99精品久久久久久9| 亚洲国产精品精华液2区45 | 欧美视频在线观看| 亚洲图片欧美一区| 亚洲欧美电影院| 激情久久久久久久久久久久久久久久| 久久天堂精品| 欧美大片免费观看| 亚洲一区网站| 欧美在线一二三| 亚洲欧洲一区二区三区在线观看| 91久久香蕉国产日韩欧美9色| 欧美日韩一区二区在线| 久久国产精品电影| 欧美成人免费全部| 亚洲欧美日韩精品一区二区| 久久精品99久久香蕉国产色戒| 亚洲高清视频在线| 一本色道88久久加勒比精品| 国产一区二区三区在线观看精品| 欧美激情四色 | 久久久久久69| 亚洲天堂网在线观看| 亚洲欧美精品suv| 亚洲国产成人在线| 亚洲综合成人婷婷小说| 亚洲国产成人高清精品| 亚洲天堂男人| 亚洲日韩欧美视频一区| 欧美亚洲专区| 9国产精品视频| 欧美专区日韩视频| 亚洲一区二区在线免费观看视频 | 在线亚洲一区| 亚洲国产欧美日韩精品| 亚洲综合国产激情另类一区| 亚洲国产精品久久久久婷婷884 | 久久国产精品久久国产精品 | 国产精品毛片va一区二区三区 | 午夜久久99| 欧美经典一区二区| 久久亚洲综合| 国产日韩欧美黄色| 一区二区三区欧美日韩| 日韩视频久久| 久久综合九色欧美综合狠狠| 久久国产精品第一页| 国产精品成人v| 91久久夜色精品国产九色| 在线视频国产日韩| 久久超碰97中文字幕| 午夜精品一区二区三区在线视 | 久久综合给合| 久久亚洲春色中文字幕| 国产欧美日韩综合一区在线播放 | 久久精品最新地址| 国产欧美日韩综合| 亚洲欧美国产精品va在线观看| 在线视频一区观看| 欧美精品精品一区| 91久久在线播放| 99视频国产精品免费观看| 欧美成人在线免费视频| 亚洲国产精品久久久久秋霞影院| 伊人激情综合| 久久久亚洲综合| 免费观看日韩| 91久久在线观看| 欧美国产精品专区| 欧美激情视频一区二区三区不卡| 亚洲精品久久久久| 欧美精品亚洲精品| 亚洲乱亚洲高清| 亚洲少妇在线| 国产精品一区=区| 欧美一区二区视频在线| 久久一二三国产| 91久久国产综合久久蜜月精品| 欧美99在线视频观看| 最新国产成人在线观看| 亚洲一区二区少妇| 国产精品视频999| 欧美中文字幕在线视频| 欧美国产国产综合| 一本色道久久综合亚洲精品按摩 | 日韩网站在线观看| 欧美调教视频| 欧美在线免费| 亚洲国产精品一区二区久 | 国产夜色精品一区二区av| 午夜影视日本亚洲欧洲精品| 欧美88av| 亚洲在线免费视频| 伊人男人综合视频网| 欧美日韩国产片| 亚洲男人的天堂在线| 欧美电影免费观看高清完整版| 99伊人成综合| 好看的日韩视频| 欧美日韩另类综合| 久久天天综合| 99精品国产在热久久婷婷| 久久精品视频免费观看| 日韩亚洲欧美成人| 国产一区二区三区的电影| 欧美大片免费观看在线观看网站推荐| 夜夜嗨一区二区三区| 欧美www视频在线观看| 午夜精品视频在线| 99日韩精品| 亚洲国产日韩欧美在线99| 国产精品入口| 欧美日韩一区二区免费视频| 欧美一区二区三区男人的天堂| 亚洲人成网站777色婷婷| 老司机成人网| 欧美一区二区三区精品| 一区二区三区四区五区在线| 亚洲国产精品久久人人爱蜜臀| 国产精品你懂得| 欧美日韩国产免费| 欧美~级网站不卡| 久久精品毛片| 午夜亚洲影视| 亚洲影院色无极综合| 亚洲久色影视| 亚洲国产毛片完整版| 欧美99久久| 美女国内精品自产拍在线播放| 亚洲欧美日本另类| 亚洲午夜极品| 日韩午夜视频在线观看| 亚洲狠狠婷婷| 亚洲日本在线视频观看| 亚洲高清久久| 一色屋精品视频在线观看网站| 国产欧美一区二区三区另类精品| 国产精品夫妻自拍| 欧美r片在线| 久久精品欧美日韩| 久久久久久久一区二区| 午夜欧美不卡精品aaaaa| 亚洲一区精品电影| 这里只有精品在线播放| 亚洲婷婷国产精品电影人久久 | 欧美在线高清视频| 亚洲在线一区二区| 西西人体一区二区| 欧美一区网站| 久久米奇亚洲| 免费看精品久久片| 欧美寡妇偷汉性猛交| 亚洲国产一区视频| 日韩写真在线| 亚洲欧美国产高清| 香蕉尹人综合在线观看| 久久精品国产一区二区三区| 久久久精品久久久久| 免费亚洲电影| 欧美色图五月天| 国产精品综合av一区二区国产馆| 国产视频精品xxxx| 影音先锋中文字幕一区| 亚洲国产免费| 亚洲一区二区免费视频| 久久精品99国产精品酒店日本| 久久亚洲视频| 亚洲黄色一区| 亚洲午夜精品网| 久久精品一本久久99精品| 老牛国产精品一区的观看方式| 鲁大师影院一区二区三区| 欧美四级电影网站| 黑人巨大精品欧美一区二区 | 亚洲精品国精品久久99热| 亚洲网站视频| 久久久久久亚洲精品中文字幕 | 美女日韩欧美| 亚洲精品一二区| 欧美一区二区久久久| 欧美激情第8页| 国产亚洲综合精品| 日韩一级大片在线| 性欧美超级视频| 欧美成人免费在线| 亚洲欧美韩国| 欧美日韩裸体免费视频| 久久夜色精品国产| 国产精品亚洲аv天堂网| 性欧美精品高清| 香蕉av777xxx色综合一区| 国产日韩欧美在线看| 久久久99久久精品女同性| 欧美一区二区久久久|