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

posts - 183,  comments - 10,  trackbacks - 0
 

逆序數(shù)的計算

常規(guī)的做法
時間:O(N^2)

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 
 5 int foo(const vector<int>& array)
 6 {
 7     int ret = 0;
 8     for (vector<int>::size_type i = 0; i != array.size() - 1++i)
 9     {
10         for (vector<int>::size_type j = i + 1; j != array.size(); ++j)
11         {
12             if (array[i] > array[j])
13             {
14                 ++ret;
15             }
16         }
17     }
18     return ret;
19 }
20 
21 int main()
22 {
23     vector<int> array;
24     
25     for (int i = 10; i > 0--i)
26     {
27         array.push_back(i);
28     }
29     cout << foo(array) << endl;
30     return 0;
31 }

 


改進的做法
利用分治法,借助歸并排序求解逆序數(shù)。
時間復雜度:O(NlogN)
在歸并排序的基礎做一個修改即可:
不是算右邊的相對左邊的逆序數(shù),這樣太過于繁雜
而是算左邊相當于右邊的逆序數(shù),這樣可以就在這一個地方做統(tǒng)一處理
即當檢測到左邊大于右邊的時候,則所有剩下的左邊的數(shù)都相對于當前右邊的數(shù)大,所以逆序數(shù)都要加 1 。
count += (end1 - begin1 + 1);
 1 #include <iostream>
 2 #include <cstdlib>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 int count = 0;
 7 
 8 void merge(int array[], int low, int mid, int high)
 9 {
10         int i, k;
11         int *temp = (int *) malloc((high-low+1* sizeof(int)); //申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合并后的序列
12         int begin1 = low;
13         int end1 = mid;
14         int begin2 = mid + 1;
15         int end2 = high;
16  
17         for (k = 0; begin1 <= end1 && begin2 <= end2; ++k)  //比較兩個指針所指向的元素,選擇相對小的元素放入到合并空間,并移動指針到下一位置
18                 if(array[begin1]<=array[begin2])
19                 {
20                         temp[k] = array[begin1++];
21                         
22                 }
23                 else
24                 {   
25                         //++count;
26                         
27                         // 不是算右邊的相對左邊的逆序數(shù),這樣太過于繁雜
28                         // 而是算左邊相當于右邊的逆序數(shù),這樣可以就在這一個地方做統(tǒng)一處理
29                         count += (end1 - begin1 + 1);
30                         temp[k] = array[begin2++];    
31                 }
32         if(begin1 <= end1) //若第一個序列有剩余,直接拷貝出來粘到合并序列尾
33         {
34                 memcpy(temp+k, array+begin1, (end1-begin1+1)*sizeof(int));
35                 //count += (end1 - begin1 + 1) * (high - mid);
36         }
37         if(begin2 <= end2) //若第二個序列有剩余,直接拷貝出來粘到合并序列尾
38                 memcpy(temp+k, array+begin2, (end2-begin2+1)*sizeof(int));
39         memcpy(array+low, temp, (high-low+1)*sizeof(int));//將排序好的序列拷貝回數(shù)組中
40         free(temp);
41 }
42 
43 int merge_sort(int array[], unsigned int first, unsigned int last)
44 {
45         int mid = 0;
46         if(first<last)
47         {
48                 mid = (first+last)/2;
49                 merge_sort(array, first, mid);
50                 merge_sort(array, mid+1,last);
51                 merge(array,first,mid,last);
52         }
53         return count;
54 }
55 
56 
57 int foo(int array[], int n)
58 {
59     return merge_sort(array, 0, n - 1);
60 }
61 
62 int main()
63 {
64     int array[] = {910876543210};
65     // int array[] = {1, 3, 2, 4, 3};
66     // int array[] = {1, 3, 2};
67     cout << foo(array, sizeof (array) / sizeof (*array)) << endl;
68     return 0;
69 }

http://www.cnblogs.com/dskit/archive/2009/12/16/1625942.html

http://hi.baidu.com/xiaohanhoho/blog/item/277a09392a0e4722b8998fdc.html

http://m.shnenglu.com/asp/articles/14261.html

http://www.cublog.cn/u2/62093/showart_484338.html

http://blog.csdn.net/guzhilei1986/archive/2008/04/10/2276782.aspx

 


posted @ 2011-06-22 01:11 unixfy 閱讀(559) | 評論 (0)編輯 收藏

歸并排序是穩(wěn)定的

時間復雜度:O(NlogN)

空間復雜度:O(N)

合并 + 遞歸

http://zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F

http://baike.baidu.com/view/90797.htm

http://sjjg.js.zwu.edu.cn/SFXX/paixu/paixu6.5.1.html

http://www.zjhyzx.net/Article/ShowArticle.asp?ArticleID=924

http://learn.akae.cn/media/ch11s04.html

http://student.zjzk.cn/course_ware/data_structure/web/paixu/paixu8.5.1.1.htm

 1 #include <iostream>
 2 #include <cstdlib>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 void merge(int array[], int low, int mid, int high)
 7 {
 8         int i, k;
 9         int *temp = (int *) malloc((high-low+1* sizeof(int)); //申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合并后的序列
10         int begin1 = low;
11         int end1 = mid;
12         int begin2 = mid + 1;
13         int end2 = high;
14  
15         for (k = 0; begin1 <= end1 && begin2 <= end2; ++k)  //比較兩個指針所指向的元素,選擇相對小的元素放入到合并空間,并移動指針到下一位置
16                 if(array[begin1]<=array[begin2])
17                         temp[k] = array[begin1++];
18                 else
19                         temp[k] = array[begin2++];       
20         if(begin1 <= end1) //若第一個序列有剩余,直接拷貝出來粘到合并序列尾
21                 memcpy(temp+k, array+begin1, (end1-begin1+1)*sizeof(int));
22         if(begin2 <= end2) //若第二個序列有剩余,直接拷貝出來粘到合并序列尾
23                 memcpy(temp+k, array+begin2, (end2-begin2+1)*sizeof(int));
24         memcpy(array+low, temp, (high-low+1)*sizeof(int));//將排序好的序列拷貝回數(shù)組中
25         free(temp);
26 }
27 
28 void merge_sort(int array[], unsigned int first, unsigned int last)
29 {
30         int mid = 0;
31         if(first<last)
32         {
33                 mid = (first+last)/2;
34                 merge_sort(array, first, mid);
35                 merge_sort(array, mid+1,last);
36                 merge(array,first,mid,last);
37         }
38 }
39 
40 int main()
41 {
42     int a[8= {47532861};
43     for (int i = 0; i != 8++i)
44     {
45         cout << a[i] << ' ';
46     }
47     cout << endl;
48     merge_sort(a, 07);
49     for (int i = 0; i != 8++i)
50     {
51         cout << a[i] << ' ';
52     }
53     cout << endl;
54 }



posted @ 2011-06-22 00:13 unixfy 閱讀(119) | 評論 (0)編輯 收藏

基數(shù)排序、桶排序

這里介紹一下非比較排序
頭緒比較亂

編程珠璣 I 第一節(jié)中就講到一種排序方法:大批量的數(shù)排序,內存有限,利用 bitmap 可以很好的解決。時間為 O(N) 。

對于不重復出現(xiàn)的數(shù)的集合,也就是說對于某個數(shù)最多只出現(xiàn)一次。可以利用 bitmap 來解決。因為一個 bit 只有兩個狀態(tài): 0 和 1 。

1.
對于重復出現(xiàn)的數(shù),可以利用一般類型數(shù)組來解決。對于每個數(shù),以每個數(shù)為索引,記錄以該索引的元素自加 1 。處理完后,掃描這個輔助數(shù)組,將記錄的信息,也就是索引的次數(shù),把索引以次數(shù)存入原來數(shù)組中。

2.
這種直接以待排序的數(shù)為索引,需要很大的輔助數(shù)組。所以可以利用針對待排序的數(shù)的每位來處理,每個位的范圍也就是 0 - 9 十的大小。對于多維的待排序數(shù)處理方式有兩種。即從左到右和從右到左。
從左到右:左面的排完序后,整體次序不變了,只是調整的次位的相對順序。
從右到左:右面的排完序后,整體的次序還會有變化的,只不過是隨著從右到左,依次調整的次數(shù)越來越少了。

3.
桶排序,對于一系列待排序數(shù),可以先按照各個數(shù)的屬性將所有數(shù)分配到各個桶里。這樣后,對于每個桶里的數(shù)可以使用插入排序進行各個桶的排序。

 1 #include <iostream>
 2 #include <vector>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 void sort(vector<int>& array)
 7 {
 8     int temp[1000];
 9     memset(temp, 0sizeof (int* 1000);
10     for (vector<int>::size_type i = 0; i != array.size(); ++i)
11     {
12         ++temp[array[i]];
13     }
14     array.clear();
15     for (int i = 0; i < 1000++i)
16     {
17         while (temp[i]-- != 0)
18         {
19             array.push_back(i);
20         }
21     }
22 }
23 
24 int main()
25 {
26     vector<int> array;
27     for (int i = 0; i < 10++i)
28     {
29         array.push_back(i);
30     }
31     for (int i = 10; i >= 0--i)
32     {
33         array.push_back(i);
34     }
35     sort(array);
36     for (vector<int>::size_type i = 0; i < array.size(); ++i)
37     {
38         cout << array[i] << ' ';
39     }
40     cout << endl;
41     return 0;
42 }


posted @ 2011-06-21 22:45 unixfy 閱讀(381) | 評論 (0)編輯 收藏

排序的作用

幾個問題

·刪除數(shù)組中大于一定數(shù)的所有數(shù)
·查找少量數(shù)中重復出現(xiàn)的數(shù)
·在數(shù)組中找到兩個等于一給定數(shù)的二元組

如何解決這些問題?

·排序,二分查找,刪除
·排序,遍歷
·排序,左右遍歷檢測,如果小向右走,如果大向左走

排序是基本的算法,到處都會用到。
解決問題的關鍵在于對處理對象進行調整。也就是做預處理工作。

posted @ 2011-06-21 21:19 unixfy 閱讀(225) | 評論 (0)編輯 收藏
之前讀過間斷讀過兩遍。
迫于找工作壓力,現(xiàn)再次翻閱。

1. 讓 CPU 占用率聽你指揮

刷新周期

int main()
{
 for (; ; )
 {
  for (int i = 0; i < 960000; ++i)
  {
   sleep(10);
  }
 }
}

while ((GetTickCount() - startTime) <= busyTime);

2. 中國象棋將帥問題
struct
{
 unsigned char a : 4;
 unsigned char b : 4;
} i;
i.a, i.b;

3. 一摞烙餅的排序
排序問題
每次找到最大的

4. 買書問題
貪心算法的反例

5. 快速找到出故障機器
ID
哈希表
<異或>
·0 保持
·1 取反
·A ^ A = 0
兩個出問題,如果是不同的兩個,可以解決,即是根據(jù)異或原理,把所有 ID 分成兩部分,以某一位是 0 還是 1 分開。在分開的兩部分中每個部分,采用異或的方法進行解決。

利用不變量進行解決
·加法不變量
·乘法不變量
·平方和不變量

6. 飲料供貨

7. 光影切割問題
問題轉換
逆序的分治計算方法

8. 小飛的電梯調度算法
直觀暴力解法
N1, N2, N3
逐層遍歷

9. 高效率地安排見面會

10. 雙線程高效下載
·下載
·寫入磁盤

11. NIM(1) 一排石頭的排序

posted @ 2011-06-20 16:23 unixfy 閱讀(110) | 評論 (0)編輯 收藏

字符串旋轉問題

需要 O(N) 的時間,O(1) 的空間

借助字符串翻轉
ABCEFG

((ABC)'(EFG)')'
=(CBAGFE)'
=EFGABC

對一個字符串,進行給定位置的逆轉。

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void swap(char& a, char& b)
 5 {
 6     a ^= b;
 7     b ^= a;
 8     a ^= b;
 9 }
10 
11 void reverse(char* s, int l, int h)
12 {
13     while (l < h)
14     {
15         swap(s[l++], s[h--]);
16     }
17 }
18 
19 int getLen(char* s)
20 {
21     int ret = 0;
22     while (*s++ != '\0')
23     {
24         ++ret;
25     }
26     return ret;
27 }
28 
29 char* rotate(char* s, int pos)
30 {
31     int t = getLen(s) - 1;
32     reverse(s, 0, pos - 1);
33     reverse(s, pos, t);
34     reverse(s, 0, t);
35     return s;
36 }
37 
38 int main()
39 {
40     char s[100];
41     int pos;
42     while (cin >> s >> pos)
43     {
44         cout << rotate(s, pos) << endl;
45     }
46     return 0;
47 }

http://m.shnenglu.com/jake1036/archive/2011/03/05/141163.html


posted @ 2011-06-17 22:58 unixfy 閱讀(126) | 評論 (0)編輯 收藏
連續(xù)內存,溢出
  1 #include <iostream>
  2 using namespace std;
  3 
  4 template <typename T>
  5 class DoulStack
  6 {
  7 private:
  8     T* data_;
  9     int top1_;
 10     int top2_;
 11     unsigned size_;
 12 public:
 13     DoulStack(unsigned size = 1000) : data_(new T[size]), top1_(0), top2_(size - 1), size_(size)
 14     {
 15         if (data_ == 0)
 16         {
 17             exit(1);
 18         }
 19     }
 20     DoulStack(const DoulStack& ds) : data_(new T[ds.size_]), top1_(ds.top1_), top2_(ds.top2_), size_(ds.size_)
 21     {
 22         if (data_ == 0)
 23         {
 24             exit(1);
 25         }
 26         memcpy(data_, ds.data_, sizeof (T) * ds.size_);
 27     }
 28     DoulStack& operator = (const DoulStack& ds)
 29     {
 30         if (this != &ds)
 31         {
 32             delete [] data_;
 33             data_ = new T[ds.size_];
 34             if (data_ == 0)
 35             {
 36                 exit(1);
 37             }
 38             top1_ = ds.top1_;
 39             top2_ = ds.top2_;
 40             size_ = ds.size_;
 41             memcpy(data_, ds.data_, sizeof (T) * ds.size_);
 42         }
 43         return *this;
 44     }
 45     ~DoulStack()
 46     {
 47         delete [] data_;
 48     }
 49     bool empty()
 50     {
 51         return empty1() && empty2();
 52     }
 53     bool full()
 54     {
 55         return top1_ - 1 == top2_;
 56     }
 57     bool resize(unsigned size)
 58     {
 59         T* temp = new T[size];
 60         if (temp == 0)
 61         {
 62             exit(1);
 63         }
 64         for (int i = 0; i != top1_; ++i)
 65         {
 66             temp[i] = data_[i];
 67         }
 68         for (int i = size - 1, j = size_ - 1; j != top2_; --i, --j)
 69         {
 70             temp[i] = data_[j];
 71         }
 72         size_ = size;
 73         delete [] data_;
 74         data_ = temp;
 75     }
 76     void push1(const T& t)
 77     {
 78         if (full())
 79         {
 80             resize(size_ * 2);
 81         }
 82         data_[top1_++= t;
 83     }
 84     void push2(const T& t)
 85     {
 86         if (full())
 87         {
 88             resize(size_ * 2);
 89         }
 90         data_[top2_--= t;
 91     }
 92     void pop1()
 93     {
 94         --top1_;
 95     }
 96     void pop2()
 97     {
 98         ++top2_;
 99     }
100     T top1()
101     {
102         return data_[top1_ - 1];
103     }
104     T top2()
105     {
106         return data_[top2_ + 1];
107     }
108     bool empty1()
109     {
110         return top1_ == 0;
111     }
112     bool empty2()
113     {
114         return top2_ == size_ - 1;
115     }
116 };
117 
118 int main()
119 {
120     DoulStack<int> ds;
121     for (int i = 0; i < 10++i)
122     {
123         ds.push1(i);
124         ds.push2(9 - i);
125     }
126     while (!ds.empty1())
127     {
128         cout << ds.top1() << endl;
129         ds.pop1();
130     }
131     while (!ds.empty2())
132     {
133         cout << ds.top2() << endl;
134         ds.pop2();
135     }
136     cout << ds.empty() << endl;
137 }

posted @ 2011-06-17 15:30 unixfy 閱讀(153) | 評論 (0)編輯 收藏
     摘要: 前綴匹配 網(wǎng)絡層的數(shù)據(jù)報網(wǎng)絡,在路由器轉發(fā)功能實現(xiàn)中會用到前綴匹配,即是對 IP 地址與路由表中的目的地址范圍的公共部分進行前綴匹配。由于有的前綴存在包含的問題,對有些 IP 地址會造成多重匹配,短的匹配會造成 IP 的轉發(fā)錯誤。所以可以遵循 最長前綴匹配原則 進行匹配。 首先做一個 ip 轉換的實現(xiàn)從 unsigned int 32 位整型數(shù)到 ip 字符串的轉換從 ip 字符串到 unsi...  閱讀全文
posted @ 2011-06-17 14:36 unixfy 閱讀(810) | 評論 (0)編輯 收藏
來自于《高質量程序設計指南——C++/C 語言》
實現(xiàn)類似 copy 的功能
 1 #include <cstdio>
 2 using namespace std;
 3 
 4 int main(int argCount, char* argValue[])
 5 {
 6     FILE* srcFile = 0*destFile = 0;
 7     int ch = 0;
 8     if (argCount != 3)
 9     {
10         printf("Usage: %s src-file-name dest-file-name\n", argValue[0]);
11     }
12     else
13     {
14         if ((srcFile = fopen(argValue[1], "r")) == 0)
15         {
16             printf("Can not open source file \"%s\"!", argValue[1]);
17         }
18         else
19         {
20             if ((destFile = fopen(argValue[2], "w")) == 0)
21             {
22                 printf("Can not open destination file \"%s\"!", argValue[2]);
23                 fclose(srcFile);
24             }
25             else
26             {
27                 while ((ch = fgetc(srcFile)) != EOF)
28                 {
29                     fputc(ch, destFile);
30                 }
31                 printf("Successful to copy a file!\n");
32                 fclose(srcFile);
33                 fclose(destFile);
34                 return 0;
35             }
36         }
37     }
38     return 1;
39 }

posted @ 2011-06-16 21:48 unixfy 閱讀(121) | 評論 (0)編輯 收藏
找到 50 億個 32 位整型數(shù)中出現(xiàn)重復的數(shù)。
可行的方法是利用位圖。32 位數(shù)的范圍是 0~2^32 - 1
開辟一個 2^32 個 bit 的空間,大小約為 512 MB。
一次掃描每一個數(shù),檢測以該數(shù)為索引的那個 bit 是否為 0 ,若為 0 ,則說明過去不存在,將其置為 1,如果為 1 則說明以前出現(xiàn)過,則說明該數(shù)是重復出現(xiàn)的。
這個問題解決的關鍵在于用待檢測數(shù)去做索引,利用隨即存取的特點,可以做到 O(1) 的效率。用數(shù)本身做索引是一種高效的方法。
 1 #include <iostream>
 2 #include <bitset>
 3 #include <vector>
 4 #include <cmath>
 5 using namespace std;
 6 
 7 void foo(const vector<int>& arr)
 8 {
 9     bitset<1024> bs;
10 
11     for (vector<int>::size_type i = 0; i != arr.size(); ++i)
12     {
13         if (bs[arr[i]] == 0)
14         {
15             bs[arr[i]].flip();
16         }
17         else
18         {
19             cout << arr[i] << endl;
20         }
21     }
22 }
23 
24 int main()
25 {
26     vector<int> arr;
27     for (int i = 0; i < 100++i)
28     {
29         arr.push_back(i);
30     }
31     arr.push_back(5);
32     arr.push_back(25);
33 
34     foo(arr);
35     return 0;
36 }

關鍵在于這個位圖如何實現(xiàn)。STL 中有個 bitset 就好可以做這個工作。
但是如果需要仔細實現(xiàn)一個該如何辦?也就是說自己實現(xiàn)一個 bitset

實現(xiàn)一個類似的 bitset
http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/bitset-source.html
http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/bitset.html
http://blog.sina.com.cn/s/blog_4d3a41f40100kxnw.html
http://blog.sina.com.cn/s/articlelist_1295663604_0_1.html

更進一步學習 bitset ,《STL 源碼剖析》中應該有所介紹
關鍵是對 bit 的讀寫如何操作。

 1 #include <iostream>
 2 #include <bitset>
 3 #include <vector>
 4 #include <cmath>
 5 using namespace std;
 6 
 7 template <unsigned NUM>
 8 class MyBitset
 9 {
10 private:
11     char* data_;
12     unsigned numbits;
13     unsigned numchars;
14 public:
15     MyBitset() : numbits(NUM), numchars(NUM / 8 + 1)
16     {
17         data_ = new char[numchars];
18         if (data_ == 0)
19         {
20             exit(1);
21         }
22         memset(data_, 0, numchars);
23     }
24     unsigned operator [] (unsigned pos)
25     {
26         char c = data_[pos / 8];
27         unsigned t = pos - pos / 8 * 8;
28         while (t > 0)
29         {
30             c <<= 1;
31             --t;
32         }
33         if (c & 128)
34         {
35             return 1;
36         }
37         else
38         {
39             return 0;
40         }
41     }
42     void set(unsigned pos)
43     {
44         char* p = data_ + pos / 8;
45         unsigned t = pos - pos / 8 * 8;
46         char temp = pow(2.08.0 - t);
47         *|= temp;
48     }
49 };
50 
51 void foo(const vector<int>& arr)
52 {
53     // bitset<1024> bs;
54     MyBitset<1024> bs;
55 
56     for (vector<int>::size_type i = 0; i != arr.size(); ++i)
57     {
58         if (bs[arr[i]] == 0)
59         {
60             // bs[arr[i]].flip();
61             bs.set(arr[i]);
62         }
63         else
64         {
65             cout << arr[i] << endl;
66         }
67     }
68 }
69 
70 int main()
71 {
72     vector<int> arr;
73     for (int i = 0; i < 100++i)
74     {
75         arr.push_back(i);
76     }
77     arr.push_back(5);
78     arr.push_back(25);
79 
80     foo(arr);
81     return 0;
82 }



 

posted @ 2011-06-16 17:17 unixfy 閱讀(517) | 評論 (2)編輯 收藏
僅列出標題
共19頁: First 6 7 8 9 10 11 12 13 14 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品国产免费看久久精品| 在线亚洲免费视频| 亚洲国产精品一区二区第一页 | 欧美刺激午夜性久久久久久久| 欧美一区午夜视频在线观看| 欧美一区午夜精品| 久久精品国产精品亚洲综合 | 国产精品国产三级国产专播品爱网| 欧美护士18xxxxhd| 欧美天堂在线观看| 国产日韩欧美高清| 亚洲国产一区在线| 9色国产精品| 午夜亚洲福利| 欧美电影免费观看网站| 亚洲免费成人av| 亚洲一区二区成人在线观看| 久久久久亚洲综合| 欧美日韩国产首页| 黄色免费成人| 亚洲无毛电影| 欧美三日本三级少妇三2023| 国产日韩精品一区二区三区在线| 国产亚洲精品7777| 亚洲狼人综合| 欧美在线视频全部完| 欧美国产日韩一区二区三区| 日韩一区二区久久| 久久久久**毛片大全| 欧美日韩色综合| 亚洲成人影音| 欧美在线观看www| 亚洲人成在线影院| 99视频一区二区三区| 欧美一区二区视频免费观看| 免费久久99精品国产自| 国产毛片一区二区| 亚洲视频每日更新| 亚洲电影免费在线| 久久久xxx| 国产日韩欧美高清免费| 亚洲无亚洲人成网站77777| 欧美成人蜜桃| 久久精品国语| 国产欧美日韩另类视频免费观看| 一区二区三区www| 亚洲国产另类久久久精品极度| 欧美一区二区三区啪啪 | 一区二区在线观看视频在线观看| 亚洲一区免费网站| 亚洲精品久久在线| 欧美精品导航| av72成人在线| 亚洲免费高清视频| 欧美日韩美女一区二区| 日韩一级精品视频在线观看| 亚洲福利视频免费观看| 欧美a级大片| 日韩一级在线| 一区二区毛片| 国产美女高潮久久白浆| 欧美在线观看网站| 欧美影院成人| 在线免费观看一区二区三区| 另类图片综合电影| 免费一级欧美片在线播放| 亚洲国产日韩一级| 亚洲国产精品女人久久久| 欧美国产亚洲视频| 一区二区高清视频| 9色精品在线| 国产精品免费看片| 久久se精品一区精品二区| 香蕉成人久久| 激情久久久久| 亚洲国产欧美在线人成| 欧美精品乱码久久久久久按摩| 99视频精品在线| 亚洲一区二区成人在线观看| 国产一区二区三区四区在线观看| 亚洲激情另类| 亚洲日韩中文字幕在线播放| 欧美剧在线免费观看网站| 一本久久青青| 亚洲网站视频福利| 狠狠入ady亚洲精品| 91久久精品国产91久久| 国产精品久久久久aaaa九色| 欧美在线一区二区三区| 快she精品国产999| 亚洲一区二区在线免费观看视频 | 亚洲无限乱码一二三四麻| 国内精品久久久久久久果冻传媒 | 亚洲人成毛片在线播放| 国产精品扒开腿做爽爽爽视频| 欧美在线观看www| 欧美福利电影网| 欧美一区二区三区精品| 欧美成熟视频| 久久久久久久综合日本| 欧美日韩国产bt| 久久婷婷综合激情| 国产精品激情偷乱一区二区∴| 美腿丝袜亚洲色图| 国产精品久久久久久久久久久久久久 | 欧美在线黄色| 在线中文字幕日韩| 久久婷婷成人综合色| 亚洲欧美日韩成人| 欧美承认网站| 老色鬼精品视频在线观看播放| 欧美日韩在线视频观看| 欧美福利视频在线| 狠狠色丁香婷综合久久| 亚洲女人天堂av| 亚洲综合三区| 欧美天堂亚洲电影院在线播放 | 久久精品视频网| 午夜在线电影亚洲一区| 欧美麻豆久久久久久中文| 欧美高清在线一区| 在线观看国产日韩| 欧美在线播放| 午夜天堂精品久久久久| 国产精品福利在线观看| 亚洲作爱视频| 亚洲视频在线播放| 欧美色123| 中国成人在线视频| 亚洲视频一区二区在线观看| 欧美精品系列| 亚洲精品护士| av成人免费| 老司机精品福利视频| 久久精品理论片| 欧美自拍丝袜亚洲| 国产日韩欧美在线看| 亚洲欧美日本视频在线观看| 亚洲影院污污.| 国产精品久久久久久超碰 | 黑人巨大精品欧美一区二区 | 久久一区欧美| 欧美成人精品激情在线观看| 在线不卡视频| 免费久久精品视频| 欧美高清成人| 亚洲狠狠婷婷| 亚洲视频在线视频| 国产精品免费看| 久久精品国内一区二区三区| 欧美黄色aa电影| 99视频一区二区| 欧美日韩一区三区四区| 日韩一级不卡| 亚洲在线视频| 韩国精品一区二区三区| 裸体歌舞表演一区二区| 亚洲欧洲在线播放| 午夜精品一区二区在线观看| 国产欧美日韩| 老司机成人网| 亚洲视频一区二区免费在线观看| 性色一区二区| 亚洲国产精品视频| 国产精品久久久亚洲一区| 亚洲欧美制服中文字幕| 欧美aⅴ一区二区三区视频| 99精品国产高清一区二区| 国产伦理一区| 玖玖玖国产精品| 亚洲精品国偷自产在线99热| 欧美伊人久久久久久午夜久久久久| 亚洲高清成人| 欧美日韩专区在线| 久久久久久久久久久久久女国产乱| 亚洲电影在线播放| 亚洲欧美久久久久一区二区三区| 在线播放不卡| 国产精品成人免费| 噜噜噜91成人网| 欧美一级淫片aaaaaaa视频| 日韩网站在线看片你懂的| 久久在线播放| 欧美一区三区三区高中清蜜桃| 亚洲国产精品免费| 国产亚洲成人一区| 欧美视频在线视频| 欧美国产日本高清在线| 久久久国产亚洲精品| 亚洲欧美日韩爽爽影院| 亚洲久久在线| 亚洲国产精品久久精品怡红院| 久久久久久网址| 午夜精品影院在线观看| 日韩天堂av| 亚洲国产影院| 亚洲高清视频在线观看| 一区在线免费观看| 国外成人在线视频网站| 国产日韩av一区二区|