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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

kuangbin带我飞QAQ DLX之一脸懵逼

發布時間:2024/4/17 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kuangbin带我飞QAQ DLX之一脸懵逼 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  1. hust 1017 DLX精確覆蓋 模板題

勉強寫了注釋,但還是一臉懵逼,感覺插入方式明顯有問題但又不知道哪里不對而且好像能得出正確結果真是奇了怪了

1 #include <iostream> 2 #include <string.h> 3 #include <cstdio> 4 #include <queue> 5 #include <map> 6 #include <vector> 7 #include <string> 8 #include <cstring> 9 #include <algorithm> 10 #include <math.h> 11 12 #define SIGMA_SIZE 26 13 #define lson rt<<1 14 #define rson rt<<1|1 15 #pragma warning ( disable : 4996 ) 16 17 using namespace std; 18 typedef long long LL; 19 inline LL LMax(LL a,LL b) { return a>b?a:b; } 20 inline LL LMin(LL a,LL b) { return a>b?b:a; } 21 inline int Max(int a,int b) { return a>b?a:b; } 22 inline int Min(int a,int b) { return a>b?b:a; } 23 inline int gcd( int a, int b ) { return b==0?a:gcd(b,a%b); } 24 inline int lcm( int a, int b ) { return a/gcd(a,b)*b; } //a*b = gcd*lcm 25 const LL INF = 0x3f3f3f3f3f3f3f3f; 26 const LL mod = 1000000007; 27 const int inf = 0x3f3f3f3f; 28 const int maxk = 1e5+5; 29 const int maxn = 1e4+5; 30 31 32 //第一行為虛擬行,是人為加上的,一共有m+1個點(第一個點獨立于整個矩陣) 33 //而后加入的值為1的點標號用size表示 34 //即第一行一共m+1個點,所以size先從0~m,之后每加入一個為1的點,size++ 35 //大部分數組X都用X[size]來標識標號為size的點的信息 36 struct DLX { 37 int n, m, size, fin; 38 int U[maxn], D[maxn], L[maxn], R[maxn];//上下左右 39 int head[maxn], S[maxn]; //分別存每一行第一個1的點的標號和每一列1的個數 40 int row[maxn], col[maxn], ans[maxn]; //row,col表示第size個點在哪一行/列 41 42 43 void init( int _n, int _m ) 44 { 45 n = _n; m = _m; 46 for ( int i = 0; i <= m; i++ ) //初始化第一行(人為增加的虛擬行) 47 { 48 S[i] = 0; 49 U[i] = D[i] = i; 50 L[i] = i-1; 51 R[i] = i+1; 52 } 53 R[m] = 0; L[0] = m; //第一行的最后一個元素指向第一個 54 size = m; //從m開始以后都是普通節點 55 memset( head, -1, sizeof(head) ); 56 head[0] = 0; 57 } 58 59 void link( int r, int c ) 60 { 61 size++; //得到新的點標號 62 col[size] = c; //第size個點在第c列 63 row[size] = r; //第size個點在第r行 64 S[c]++; //第c列1的個數+1 65 66 //組成一個環,和下面左右一樣的插法 67 D[size] = D[c]; 68 U[size] = c; 69 U[D[c]] = size; 70 D[c] = size; 71 72 //如果該行沒有為1的節點 73 if ( head[r] < 0 ) head[r] = L[size] = R[size] = size; 74 else 75 { 76 //組成一個環,插在head[r]和head[r]右邊那個元素中間 77 R[size] = R[head[r]]; 78 L[R[size]] = size; 79 L[size] = head[r]; 80 R[head[r]] = size; 81 } 82 } 83 84 void remove( int c ) //刪除列c及其所在行 85 { 86 L[R[c]] = L[c]; R[L[c]] = R[c]; //c的左右兩個節點互相連接 87 for ( int i = D[c]; i != c; i = D[i] ) //屏蔽c列 88 for ( int j = R[i]; j != i; j = R[j] ) 89 { 90 U[D[j]] = U[j]; 91 D[U[j]] = D[j]; 92 --S[col[j]]; //j所在的列的1的數目數減少 93 } 94 } 95 96 void resume( int c ) 97 { 98 for ( int i = U[c]; i != c; i = U[i] ) 99 for ( int j = L[i]; j != i; j = L[j] ) 100 { 101 U[D[j]] = D[U[j]] = j; 102 ++S[col[j]]; 103 } 104 L[R[c]] = R[L[c]] = c; 105 } 106 107 bool dance( int d ) 108 { 109 if ( R[0] == 0 ) //第0行沒有節點 110 { 111 fin = d; 112 return true; 113 } 114 115 //找出含1數目最小的一列 116 int mark = R[0]; 117 for ( int i = R[0]; i != 0; i = R[i] ) 118 if ( S[i] < S[mark] ) 119 mark = i; 120 121 remove(mark); //移除列mark的1的對應行 122 for ( int i = D[mark]; i != mark; i = D[i] ) 123 { 124 ans[d] = row[i]; 125 //移除該行的1的對應列 126 for ( int j = R[i]; j != i; j = R[j] ) 127 remove(col[j]); 128 129 if ( dance(d+1) ) 130 return true; 131 132 //倒著恢復 133 for ( int j = L[i]; j != i; j = L[j] ) 134 resume(col[j]); 135 } 136 resume(mark); 137 return false; 138 } 139 }dlx; 140 141 142 int main() 143 { 144 //freopen("F:\\cpp\\test.txt","r",stdin); 145 146 int n, m; 147 while ( ~scanf("%d %d", &n, &m) ) 148 { 149 dlx.init(n,m); 150 for ( int i = 1; i <= n; i++ ) 151 { 152 int num, j; 153 scanf("%d",&num); 154 while (num--) 155 { 156 scanf("%d",&j); 157 dlx.link(i,j); 158 } 159 } 160 161 if ( dlx.dance(0) ) 162 { 163 printf( "%d", dlx.fin ); 164 for ( int i = 0; i < dlx.fin; i++ ) 165 printf( " %d", dlx.ans[i] ); 166 printf( "\n" ); 167 //continue; 168 } 169 else 170 printf("NO\n"); 171 } 172 173 return 0; 174 } View Code

  2. ZOJ 3209 矩陣映射DLX精確覆蓋

  給一個大矩陣和p個小矩陣,問在p個小矩陣中能否取若干個使它們覆蓋整個大矩陣,并且小矩陣間兩兩互不覆蓋。

把大矩陣分為1-n*m個小塊(就是橫豎切割n和m次),則題目的要求就變成了每個小塊都要被一個且僅能有一個小矩陣覆蓋,然后就是映射了,因為每個小矩陣能覆蓋1~n*m這么多編號小塊中的某些塊,那么我們讓每個小矩陣為1行,并設n*m列,則題目就變成p行n*m列的矩陣對其求精確覆蓋了

1 #include <iostream> 2 #include <string.h> 3 #include <cstdio> 4 #include <queue> 5 #include <map> 6 #include <vector> 7 #include <string> 8 #include <cstring> 9 #include <algorithm> 10 #include <math.h> 11 12 #define SIGMA_SIZE 26 13 #define lson rt<<1 14 #define rson rt<<1|1 15 #pragma warning ( disable : 4996 ) 16 17 using namespace std; 18 typedef long long LL; 19 inline LL LMax(LL a,LL b) { return a>b?a:b; } 20 inline LL LMin(LL a,LL b) { return a>b?b:a; } 21 inline int Max(int a,int b) { return a>b?a:b; } 22 inline int Min(int a,int b) { return a>b?b:a; } 23 inline int gcd( int a, int b ) { return b==0?a:gcd(b,a%b); } 24 inline int lcm( int a, int b ) { return a/gcd(a,b)*b; } //a*b = gcd*lcm 25 const LL INF = 0x3f3f3f3f3f3f3f3f; 26 const LL mod = 1000000007; 27 const int inf = 0x3f3f3f3f; 28 const int maxk = 1e5+5; 29 const int maxn = 1e5; 30 31 struct DLX { 32 int n, m, size, fin; 33 int U[maxn], D[maxn], L[maxn], R[maxn]; //上下左右 34 int head[maxn], S[maxn]; //分別存每一行第一個1的點的標號和每一列1的個數 35 int row[maxn], col[maxn], ans[maxn]; //row,col表示第size個點在哪一行/列 36 37 38 void init( int _n, int _m ) 39 { 40 n = _n; m = _m; 41 for ( int i = 0; i <= m; i++ ) //初始化第一行(人為增加的虛擬行) 42 { 43 S[i] = 0; 44 U[i] = D[i] = i; 45 L[i] = i-1; 46 R[i] = i+1; 47 } 48 R[m] = 0; L[0] = m; //第一行的最后一個元素指向第一個 49 fin = -1; size = m; //從m開始以后都是普通節點 50 memset( head, -1, sizeof(head) ); 51 } 52 53 void link( int r, int c ) 54 { 55 size++; //得到新的點標號 56 col[size] = c; //第size個點在第c列 57 row[size] = r; //第size個點在第r行 58 S[c]++; //第c列1的個數+1 59 60 //組成一個環,和下面左右一樣的插法 61 D[size] = D[c]; 62 U[size] = c; 63 U[D[c]] = size; 64 D[c] = size; 65 66 //如果該行沒有為1的節點 67 if ( head[r] < 0 ) head[r] = L[size] = R[size] = size; 68 else 69 { 70 //組成一個環,插在head[r]和head[r]右邊那個元素中間 71 R[size] = R[head[r]]; 72 L[R[size]] = size; 73 L[size] = head[r]; 74 R[head[r]] = size; 75 } 76 } 77 78 void remove( int c ) //刪除列c及其所在行 79 { 80 L[R[c]] = L[c]; R[L[c]] = R[c]; //c的左右兩個節點互相連接 81 for ( int i = D[c]; i != c; i = D[i] ) //屏蔽c列 82 for ( int j = R[i]; j != i; j = R[j] ) 83 { 84 U[D[j]] = U[j]; 85 D[U[j]] = D[j]; 86 --S[col[j]]; //j所在的列的1的數目數減少 87 } 88 } 89 90 void resume( int c ) 91 { 92 for ( int i = U[c]; i != c; i = U[i] ) 93 for ( int j = L[i]; j != i; j = L[j] ) 94 { 95 U[D[j]] = D[U[j]] = j; 96 ++S[col[j]]; 97 } 98 L[R[c]] = R[L[c]] = c; 99 } 100 101 void dance( int d ) 102 { 103 if ( fin != -1 && fin <= d ) 104 return; 105 if ( R[0] == 0 ) //第0行沒有節點 106 { 107 fin = d; 108 return; 109 } 110 111 //找出含1數目最小的一列 112 int mark = R[0]; 113 for ( int i = R[0]; i != 0; i = R[i] ) 114 if ( S[i] < S[mark] ) 115 mark = i; 116 117 remove(mark); //移除列mark的1的對應行 118 for ( int i = D[mark]; i != mark; i = D[i] ) 119 { 120 ans[d] = row[i]; 121 //移除該行的1的對應列 122 for ( int j = R[i]; j != i; j = R[j] ) 123 remove(col[j]); 124 125 dance(d+1); 126 127 //倒著恢復 128 for ( int j = L[i]; j != i; j = L[j] ) 129 resume(col[j]); 130 } 131 resume(mark); 132 133 return; 134 } 135 }dlx; 136 137 138 int pos[32][32]; 139 140 int main() 141 { 142 freopen("F:\\cpp\\test.txt","r",stdin); 143 144 int n, m, p; 145 int x1, x2, y1, y2; 146 int T; cin >> T; 147 while (T--) 148 { 149 scanf("%d %d %d", &n, &m, &p); 150 dlx.init(p, n*m); 151 152 int id = 1; 153 for ( int i = 1; i <= n; i++ ) 154 for ( int j = 1; j <= m; j++ ) 155 pos[i][j] = id++; 156 157 for ( int r = 1; r <= p; r++ ) 158 { 159 scanf("%d %d %d %d", &x1, &y1, &x2, &y2); 160 //注意對應的規則 161 for ( int i = x1+1; i <= x2; i++ ) 162 for ( int j = y1+1; j <= y2; j++ ) 163 dlx.link( r, pos[i][j] ); 164 } 165 166 dlx.dance(0); 167 printf("%d\n", dlx.fin); 168 } 169 170 return 0; 171 } View Code

?懶得修改了...直接貼另一種返回

1 #include <iostream> 2 #include <string.h> 3 #include <cstdio> 4 #include <queue> 5 #include <map> 6 #include <vector> 7 #include <string> 8 #include <cstring> 9 #include <algorithm> 10 #include <math.h> 11 12 #define SIGMA_SIZE 26 13 #define lson rt<<1 14 #define rson rt<<1|1 15 #pragma warning ( disable : 4996 ) 16 17 using namespace std; 18 typedef long long LL; 19 inline LL LMax(LL a,LL b) { return a>b?a:b; } 20 inline LL LMin(LL a,LL b) { return a>b?b:a; } 21 inline int Max(int a,int b) { return a>b?a:b; } 22 inline int Min(int a,int b) { return a>b?b:a; } 23 inline int gcd( int a, int b ) { return b==0?a:gcd(b,a%b); } 24 inline int lcm( int a, int b ) { return a/gcd(a,b)*b; } //a*b = gcd*lcm 25 const LL INF = 0x3f3f3f3f3f3f3f3f; 26 const LL mod = 1000000007; 27 const int inf = 0x3f3f3f3f; 28 const int maxk = 1e5+5; 29 const int maxn = 1e5; 30 31 struct DLX { 32 int n, m, size, fin; 33 int U[maxn], D[maxn], L[maxn], R[maxn]; //上下左右 34 int head[maxn], S[maxn]; //分別存每一行第一個1的點的標號和每一列1的個數 35 int row[maxn], col[maxn], ans[maxn]; //row,col表示第size個點在哪一行/列 36 37 38 void init( int _n, int _m ) 39 { 40 n = _n; m = _m; 41 for ( int i = 0; i <= m; i++ ) //初始化第一行(人為增加的虛擬行) 42 { 43 S[i] = 0; 44 U[i] = D[i] = i; 45 L[i] = i-1; 46 R[i] = i+1; 47 } 48 R[m] = 0; L[0] = m; //第一行的最后一個元素指向第一個 49 fin = -1; size = m; //從m開始以后都是普通節點 50 memset( head, -1, sizeof(head) ); 51 } 52 53 void link( int r, int c ) 54 { 55 size++; //得到新的點標號 56 col[size] = c; //第size個點在第c列 57 row[size] = r; //第size個點在第r行 58 S[c]++; //第c列1的個數+1 59 60 //組成一個環,和下面左右一樣的插法 61 D[size] = D[c]; 62 U[size] = c; 63 U[D[c]] = size; 64 D[c] = size; 65 66 //如果該行沒有為1的節點 67 if ( head[r] < 0 ) head[r] = L[size] = R[size] = size; 68 else 69 { 70 //組成一個環,插在head[r]和head[r]右邊那個元素中間 71 R[size] = R[head[r]]; 72 L[R[size]] = size; 73 L[size] = head[r]; 74 R[head[r]] = size; 75 } 76 } 77 78 void remove( int c ) //刪除列c及其所在行 79 { 80 L[R[c]] = L[c]; R[L[c]] = R[c]; //c的左右兩個節點互相連接 81 for ( int i = D[c]; i != c; i = D[i] ) //屏蔽c列 82 for ( int j = R[i]; j != i; j = R[j] ) 83 { 84 U[D[j]] = U[j]; 85 D[U[j]] = D[j]; 86 --S[col[j]]; //j所在的列的1的數目數減少 87 } 88 } 89 90 void resume( int c ) 91 { 92 for ( int i = U[c]; i != c; i = U[i] ) 93 for ( int j = L[i]; j != i; j = L[j] ) 94 { 95 U[D[j]] = D[U[j]] = j; 96 ++S[col[j]]; 97 } 98 L[R[c]] = R[L[c]] = c; 99 } 100 101 bool dance( int d ) 102 { 103 if ( fin != -1 && fin <= d ) 104 return false; 105 if ( R[0] == 0 ) //第0行沒有節點 106 { 107 fin = d; 108 return true; 109 } 110 111 //找出含1數目最小的一列 112 int mark = R[0]; 113 for ( int i = R[0]; i != 0; i = R[i] ) 114 if ( S[i] < S[mark] ) 115 mark = i; 116 117 remove(mark); //移除列mark的1的對應行 118 for ( int i = D[mark]; i != mark; i = D[i] ) 119 { 120 ans[d] = row[i]; 121 //移除該行的1的對應列 122 for ( int j = R[i]; j != i; j = R[j] ) 123 remove(col[j]); 124 125 dance(d+1); 126 127 //倒著恢復 128 for ( int j = L[i]; j != i; j = L[j] ) 129 resume(col[j]); 130 } 131 resume(mark); 132 133 return false; 134 } 135 }dlx; 136 137 138 int pos[32][32]; 139 140 int main() 141 { 142 freopen("F:\\cpp\\test.txt","r",stdin); 143 144 int n, m, p; 145 int x1, x2, y1, y2; 146 int T; cin >> T; 147 while (T--) 148 { 149 scanf("%d %d %d", &n, &m, &p); 150 dlx.init(p, n*m); 151 152 int id = 1; 153 for ( int i = 1; i <= n; i++ ) 154 for ( int j = 1; j <= m; j++ ) 155 pos[i][j] = id++; 156 157 for ( int r = 1; r <= p; r++ ) 158 { 159 scanf("%d %d %d %d", &x1, &y1, &x2, &y2); 160 //注意對應的規則 161 for ( int i = x1+1; i <= x2; i++ ) 162 for ( int j = y1+1; j <= y2; j++ ) 163 dlx.link( r, pos[i][j] ); 164 } 165 166 dlx.dance(0); 167 printf("%d\n", dlx.fin); 168 } 169 170 return 0; 171 } View Code

?  3.HDU 2295 圓形重復覆蓋+二分

  一臉懵逼逼逼....如果說之前那個模板還勉強看的懂...這個就完全懵逼了(還非常容易寫錯)。題目比較簡單就不說了

1 #include <iostream> 2 #include <string.h> 3 #include <cstdio> 4 #include <queue> 5 #include <map> 6 #include <vector> 7 #include <string> 8 #include <cstring> 9 #include <algorithm> 10 #include <math.h> 11 12 #define SIGMA_SIZE 26 13 #define lson rt<<1 14 #define rson rt<<1|1 15 #pragma warning ( disable : 4996 ) 16 17 using namespace std; 18 typedef long long LL; 19 inline LL LMax(LL a,LL b) { return a>b?a:b; } 20 inline LL LMin(LL a,LL b) { return a>b?b:a; } 21 inline int Max(int a,int b) { return a>b?a:b; } 22 inline int Min(int a,int b) { return a>b?b:a; } 23 inline int gcd( int a, int b ) { return b==0?a:gcd(b,a%b); } 24 inline int lcm( int a, int b ) { return a/gcd(a,b)*b; } //a*b = gcd*lcm 25 const LL INF = 0x3f3f3f3f3f3f3f3f; 26 const LL mod = 1000000007; 27 const double eps = 1e-8; 28 const int inf = 0x3f3f3f3f; 29 const int maxk = 1e4; 30 const int maxn = 105; 31 32 struct DLX { 33 int n, m, size, fin; 34 int U[maxk], D[maxk], L[maxk], R[maxk]; 35 int C[maxk]; 36 37 int head[maxk]; 38 int S[maxk]; 39 bool vis[maxk]; 40 41 void init( int _n, int _m ) 42 { 43 n = _n; m = _m; 44 for ( int i = 0; i <= m; i++ ) 45 { 46 U[i] = D[i] = i; 47 L[i] = i-1; 48 R[i] = i+1; 49 S[i] = 0; 50 } 51 L[0] = m; R[m] = 0; 52 size = m; 53 memset( head, -1, sizeof(head) ); 54 } 55 56 void link( int r, int c ) 57 { 58 size++; 59 C[size] = c; 60 S[c]++; 61 62 D[size] = D[c]; 63 U[size] = c; 64 U[D[c]] = size; 65 D[c] = size; 66 67 if ( head[r] < 0 ) 68 head[r] = L[size] = R[size] = size; 69 else 70 { 71 R[size] = R[head[r]]; 72 L[R[size]] = size; 73 L[size] = head[r]; 74 R[head[r]] = size; 75 } 76 } 77 78 void remove( int id ) 79 { 80 for ( int i = D[id]; i != id; i = D[i] ) 81 { 82 L[R[i]] = L[i]; 83 R[L[i]] = R[i]; 84 } 85 } 86 87 void resume( int id ) 88 { 89 for ( int i = D[id]; i != id; i = D[i] ) 90 L[R[i]] = R[L[i]] = i; 91 } 92 93 int h() 94 { 95 int sum = 0; 96 memset( vis, 0, sizeof(vis) ); 97 for ( int i = R[0]; i != 0; i = R[i] ) 98 if (!vis[i]) 99 { 100 sum++; 101 for ( int j = D[i]; j != i; j = D[j] ) 102 for ( int k = R[j]; k != j; k = R[k] ) 103 vis[C[k]] = 1; 104 } 105 return sum; 106 } 107 108 void dance( int k ) 109 { 110 int mark, mmin = inf; 111 if ( k + h() >= fin ) 112 return; 113 if ( R[0] == 0 ) 114 { 115 if ( k < fin ) 116 fin = k; 117 return; 118 } 119 120 for ( int i = R[0]; i != 0; i = R[i] ) 121 if ( mmin > S[i] ) 122 { 123 mmin = S[i]; 124 mark = i; 125 } 126 127 for ( int i = D[mark]; i != mark; i = D[i] ) 128 { 129 remove(i); 130 for ( int j = R[i]; j != i; j = R[j] ) remove(j); 131 dance(k+1); 132 for ( int j = R[i]; j != i; j = R[j] ) resume(j); 133 resume(i); 134 } 135 } 136 }dlx; 137 138 double mmap[maxn][2]; 139 double cir[maxn][2]; 140 141 void init( int n, int m ) 142 { 143 for ( int i = 1; i <= n; i++ ) 144 scanf("%lf %lf", &mmap[i][0], &mmap[i][1]); 145 for ( int i = 1; i <= m; i++ ) 146 scanf("%lf %lf", &cir[i][0], &cir[i][1]); 147 } 148 149 double getdis( int i, int j ) 150 { 151 double a = mmap[i][0] - cir[j][0]; 152 double b = mmap[i][1] - cir[j][1]; 153 a *= a; b *= b; 154 return sqrt(a+b); 155 } 156 157 bool judge( int n, int m, int k, double r ) 158 { 159 dlx.init(m, n); dlx.fin = inf; 160 161 for ( int i = 1; i <= n; i++ ) 162 for ( int j = 1; j <= m; j++ ) 163 { 164 if ( r >= getdis(i,j) ) 165 dlx.link(j,i); 166 } 167 dlx.dance(0); 168 if ( dlx.fin <= k ) return 1; 169 else return 0; 170 } 171 172 int main() 173 { 174 #ifdef local 175 freopen("F:\\cpp\\test.txt","r",stdin); 176 #endif 177 178 int n, m, k; 179 int T; cin >> T; 180 while (T--) 181 { 182 scanf("%d %d %d", &n, &m, &k); 183 init(n,m); 184 185 double mid, lhs = 0.0, rhs = 1000.0; 186 while ( rhs - lhs > eps ) 187 { 188 mid = (lhs+rhs) / 2; 189 if ( judge(n,m,k,mid) ) 190 rhs = mid; 191 else 192 lhs = mid; 193 } 194 printf("%.6lf\n", (lhs+rhs)/2); 195 } 196 return 0; 197 } View Code

?  4.FZU 1686 矩形重復覆蓋

  原來DLX主要是考察建模啊,模板實在不想每次都打一遍了...直接ctrl+c

1 #include <iostream> 2 #include <string.h> 3 #include <cstdio> 4 #include <queue> 5 #include <map> 6 #include <vector> 7 #include <string> 8 #include <cstring> 9 #include <algorithm> 10 #include <math.h> 11 12 #define SIGMA_SIZE 26 13 #define lson rt<<1 14 #define rson rt<<1|1 15 #pragma warning ( disable : 4996 ) 16 17 using namespace std; 18 typedef long long LL; 19 inline LL LMax(LL a,LL b) { return a>b?a:b; } 20 inline LL LMin(LL a,LL b) { return a>b?b:a; } 21 inline int Max(int a,int b) { return a>b?a:b; } 22 inline int Min(int a,int b) { return a>b?b:a; } 23 inline int gcd( int a, int b ) { return b==0?a:gcd(b,a%b); } 24 inline int lcm( int a, int b ) { return a/gcd(a,b)*b; } //a*b = gcd*lcm 25 const LL INF = 0x3f3f3f3f3f3f3f3f; 26 const LL mod = 1000000007; 27 const double eps = 1e-8; 28 const int inf = 0x3f3f3f3f; 29 const int maxk = 1000; 30 const int maxn = 105; 31 32 struct DLX { 33 int n, m, size, fin; 34 int U[maxk], D[maxk], L[maxk], R[maxk]; 35 int C[maxk]; 36 37 int head[maxk]; 38 int S[maxk]; 39 bool vis[maxk]; 40 41 void init( int _n, int _m ) 42 { 43 n = _n; m = _m; 44 for ( int i = 0; i <= m; i++ ) 45 { 46 U[i] = D[i] = i; 47 L[i] = i-1; 48 R[i] = i+1; 49 S[i] = 0; 50 } 51 L[0] = m; R[m] = 0; 52 fin = inf; size = m; 53 memset( head, -1, sizeof(head) ); 54 } 55 56 void link( int r, int c ) 57 { 58 size++; 59 C[size] = c; 60 S[c]++; 61 62 D[size] = D[c]; 63 U[size] = c; 64 U[D[c]] = size; 65 D[c] = size; 66 67 if ( head[r] < 0 ) 68 head[r] = L[size] = R[size] = size; 69 else 70 { 71 R[size] = R[head[r]]; 72 L[R[size]] = size; 73 L[size] = head[r]; 74 R[head[r]] = size; 75 } 76 } 77 78 void remove( int id ) 79 { 80 for ( int i = D[id]; i != id; i = D[i] ) 81 { 82 L[R[i]] = L[i]; 83 R[L[i]] = R[i]; 84 } 85 } 86 87 void resume( int id ) 88 { 89 for ( int i = D[id]; i != id; i = D[i] ) 90 L[R[i]] = R[L[i]] = i; 91 } 92 93 int h() 94 { 95 int sum = 0; 96 memset( vis, 0, sizeof(vis) ); 97 for ( int i = R[0]; i != 0; i = R[i] ) 98 if (!vis[i]) 99 { 100 sum++; 101 for ( int j = D[i]; j != i; j = D[j] ) 102 for ( int k = R[j]; k != j; k = R[k] ) 103 vis[C[k]] = 1; 104 } 105 return sum; 106 } 107 108 void dance( int k ) 109 { 110 int mark, mmin = inf; 111 if ( k + h() >= fin ) 112 return; 113 if ( R[0] == 0 ) 114 { 115 if ( k < fin ) 116 fin = k; 117 return; 118 } 119 120 for ( int i = R[0]; i != 0; i = R[i] ) 121 if ( mmin > S[i] ) 122 { 123 mmin = S[i]; 124 mark = i; 125 } 126 127 for ( int i = D[mark]; i != mark; i = D[i] ) 128 { 129 remove(i); 130 for ( int j = R[i]; j != i; j = R[j] ) remove(j); 131 dance(k+1); 132 for ( int j = R[i]; j != i; j = R[j] ) resume(j); 133 resume(i); 134 } 135 } 136 }dlx; 137 138 int mmap[20][20], g[20][20]; 139 140 void init() 141 { 142 memset( mmap, 0, sizeof(mmap) ); 143 memset( g, 0, sizeof(g) ); 144 } 145 146 int main() 147 { 148 #ifdef local 149 freopen("F:\\cpp\\test.txt","r",stdin); 150 #endif 151 152 int R, C, r, c; 153 while ( ~scanf("%d %d", &R, &C) ) 154 { 155 init(); 156 int cnt = 0; 157 for ( int i = 1; i <= R; i++ ) 158 for (int j = 1; j <= C; j++) 159 { 160 scanf("%d", &mmap[i][j]); 161 if ( mmap[i][j] ) 162 g[i][j] = ++cnt; 163 } 164 scanf("%d %d", &r, &c); 165 dlx.init( (R-r+1)*(C-c+1), cnt ); 166 167 cnt = 1; 168 for ( int i = 1; i+r-1 <= R; i++ ) 169 for ( int j = 1; j+c-1 <= C; j++ ) 170 { 171 for ( int a = i; a <= i+r-1; a++ ) 172 for ( int b = j; b <= j + c - 1; b++ ) 173 if (g[a][b]) 174 dlx.link(cnt, g[a][b]); 175 cnt++; 176 } 177 dlx.dance(0); 178 printf("%d\n", dlx.fin); 179 } 180 181 return 0; 182 } View Code

?  5.POJ 3074

  求解數獨....emmmm我得好好理解下才行

1 #include <iostream> 2 #include <string.h> 3 #include <cstdio> 4 #include <queue> 5 #include <map> 6 #include <vector> 7 #include <string> 8 #include <cstring> 9 #include <algorithm> 10 #include <math.h> 11 #include <time.h> 12 13 #define SIGMA_SIZE 26 14 #define lson rt<<1 15 #define rson rt<<1|1 16 #pragma warning ( disable : 4996 ) 17 18 using namespace std; 19 typedef long long LL; 20 inline LL LMax(LL a,LL b) { return a>b?a:b; } 21 inline LL LMin(LL a,LL b) { return a>b?b:a; } 22 inline int Max(int a,int b) { return a>b?a:b; } 23 inline int Min(int a,int b) { return a>b?b:a; } 24 inline int gcd( int a, int b ) { return b==0?a:gcd(b,a%b); } 25 inline int lcm( int a, int b ) { return a/gcd(a,b)*b; } //a*b = gcd*lcm 26 const LL INF = 0x3f3f3f3f3f3f3f3f; 27 const LL mod = 1000000007; 28 const double eps = 1e-8; 29 const int inf = 0x3f3f3f3f; 30 const int maxk = 1e8; 31 const int maxn = 5000; 32 33 struct node { 34 int x, y, k; 35 }e[800]; 36 37 struct DLX { 38 int n, m, size, fin; 39 int U[maxn], D[maxn], L[maxn], R[maxn];//上下左右 40 int head[maxn], S[maxn]; //分別存每一行第一個1的點的標號和每一列1的個數 41 int row[maxn], col[maxn], ans[maxn]; //row,col表示第size個點在哪一行/列 42 43 44 void init( int _n, int _m ) 45 { 46 n = _n; m = _m; 47 for ( int i = 0; i <= m; i++ ) //初始化第一行(人為增加的虛擬行) 48 { 49 S[i] = 0; 50 U[i] = D[i] = i; 51 L[i] = i-1; 52 R[i] = i+1; 53 } 54 R[m] = 0; L[0] = m; //第一行的最后一個元素指向第一個 55 size = m; //從m開始以后都是普通節點 56 memset( head, -1, sizeof(head) ); 57 head[0] = 0; 58 } 59 60 void link( int r, int c ) 61 { 62 size++; //得到新的點標號 63 col[size] = c; //第size個點在第c列 64 row[size] = r; //第size個點在第r行 65 S[c]++; //第c列1的個數+1 66 67 //組成一個環,和下面左右一樣的插法 68 D[size] = D[c]; 69 U[size] = c; 70 U[D[c]] = size; 71 D[c] = size; 72 73 //如果該行沒有為1的節點 74 if ( head[r] < 0 ) head[r] = L[size] = R[size] = size; 75 else 76 { 77 //組成一個環,插在head[r]和head[r]右邊那個元素中間 78 R[size] = R[head[r]]; 79 L[R[size]] = size; 80 L[size] = head[r]; 81 R[head[r]] = size; 82 } 83 } 84 85 void remove( int c ) //刪除列c及其所在行 86 { 87 L[R[c]] = L[c]; R[L[c]] = R[c]; //c的左右兩個節點互相連接 88 for ( int i = D[c]; i != c; i = D[i] ) //屏蔽c列 89 for ( int j = R[i]; j != i; j = R[j] ) 90 { 91 U[D[j]] = U[j]; 92 D[U[j]] = D[j]; 93 --S[col[j]]; //j所在的列的1的數目數減少 94 } 95 } 96 97 void resume( int c ) 98 { 99 for ( int i = U[c]; i != c; i = U[i] ) 100 for ( int j = L[i]; j != i; j = L[j] ) 101 { 102 U[D[j]] = D[U[j]] = j; 103 ++S[col[j]]; 104 } 105 L[R[c]] = R[L[c]] = c; 106 } 107 108 bool dance( int d ) 109 { 110 if ( R[0] == 0 ) //第0行沒有節點 111 { 112 fin = d; 113 return true; 114 } 115 116 //找出含1數目最小的一列 117 int mark = R[0]; 118 for ( int i = R[0]; i != 0; i = R[i] ) 119 if ( S[i] < S[mark] ) 120 mark = i; 121 122 remove(mark); //移除列mark的1的對應行 123 for ( int i = D[mark]; i != mark; i = D[i] ) 124 { 125 ans[d] = row[i]; 126 //移除該行的1的對應列 127 for ( int j = R[i]; j != i; j = R[j] ) 128 remove(col[j]); 129 130 if ( dance(d+1) ) 131 return true; 132 133 //倒著恢復 134 for ( int j = L[i]; j != i; j = L[j] ) 135 resume(col[j]); 136 } 137 resume(mark); 138 return false; 139 } 140 }dlx; 141 142 143 int mmap[10][10]; 144 char sudoku[90]; 145 146 void read() 147 { 148 dlx.init(750,324); 149 int row = 0; 150 151 for ( int i = 1; i <= 9; i++ ) 152 for ( int j = 1; j <= 9; j++ ) 153 { 154 if ( !mmap[i][j] ) 155 { 156 for ( int k = 1; k <= 9; k++ ) 157 { 158 ++row; 159 dlx.link(row, (i-1)*9+j); 160 dlx.link(row, 81+(i-1)*9+k); 161 dlx.link(row, 162+(j-1)*9+k); 162 dlx.link(row,243+(((i-1)/3)*3+(j+2)/3-1)*9+k); 163 e[row].x = i; e[row].y = j; e[row].k = k; 164 } 165 } 166 else 167 { 168 ++row; 169 int k = mmap[i][j]; 170 dlx.link(row, (i-1)*9+j); 171 dlx.link(row, 81+(i-1)*9+k); 172 dlx.link(row, 162+(j-1)*9+k); 173 dlx.link(row, 243+(((i-1)/3)*3+(j+2)/3-1)*9+k); 174 e[row].x = i; e[row].y = j; e[row].k = k; 175 } 176 } 177 178 } 179 180 void init() 181 { 182 int t = 0; 183 184 for ( int i = 1; i <= 9; i++ ) 185 for ( int j = 1; j <= 9; j++ ) 186 { 187 if ( sudoku[++t] != '.' ) 188 mmap[i][j] = sudoku[t] - '0'; 189 else 190 mmap[i][j] = 0; 191 } 192 193 read(); 194 } 195 196 int main() 197 { 198 //freopen("F:\\cpp\\test.txt", "r", stdin ); 199 200 while ( ~scanf("%s", sudoku+1) ) 201 { 202 if (sudoku[1] == 'e') break; 203 init(); 204 205 dlx.dance(0); 206 for ( int i = 0; i < dlx.fin; i++ ) 207 { 208 int tmp = dlx.ans[i]; 209 sudoku[(e[tmp].x-1)*9 + e[tmp].y-1] = '0'+e[tmp].k; 210 } 211 sudoku[dlx.fin] = '\0'; 212 printf("%s\n", sudoku); 213 } 214 215 return 0; 216 } View Code

?  6. HDU 5046

  和hdu2295基本一樣,有個可以優化的方法是將可行的距離排序后二分下標,如果不這樣做直接二分,左右區間要到1~4e9才行,而且大概率TLE(交了一發1300ms)

1 #include <iostream> 2 #include <string.h> 3 #include <cstdio> 4 #include <queue> 5 #include <map> 6 #include <vector> 7 #include <string> 8 #include <cstring> 9 #include <algorithm> 10 #include <math.h> 11 #include <time.h> 12 13 #define SIGMA_SIZE 26 14 #define lson rt<<1 15 #define rson rt<<1|1 16 #pragma warning ( disable : 4996 ) 17 18 using namespace std; 19 typedef long long LL; 20 inline LL LMax(LL a,LL b) { return a>b?a:b; } 21 inline LL LMin(LL a,LL b) { return a>b?b:a; } 22 inline int Max(int a,int b) { return a>b?a:b; } 23 inline int Min(int a,int b) { return a>b?b:a; } 24 inline int gcd( int a, int b ) { return b==0?a:gcd(b,a%b); } 25 inline int lcm( int a, int b ) { return a/gcd(a,b)*b; } //a*b = gcd*lcm 26 const LL INF = 0x3f3f3f3f3f3f3f3f; 27 const LL mod = 1000000007; 28 const double eps = 1e-8; 29 const int inf = 0x3f3f3f3f; 30 const int maxk = 5000; 31 const int maxn = 5000; 32 33 int N, K; 34 35 struct DLX { 36 int n, m, size, fin; 37 int U[maxk], D[maxk], L[maxk], R[maxk]; 38 int C[maxk]; 39 40 int head[65]; 41 int S[65]; 42 bool vis[maxk]; 43 44 void init( int _n, int _m ) 45 { 46 n = _n; m = _m; 47 for ( int i = 0; i <= m; i++ ) 48 { 49 U[i] = D[i] = i; 50 L[i] = i-1; 51 R[i] = i+1; 52 S[i] = 0; 53 } 54 L[0] = m; R[m] = 0; 55 size = m; 56 memset( head, -1, sizeof(head) ); 57 } 58 59 void link( int r, int c ) 60 { 61 size++; 62 C[size] = c; 63 S[c]++; 64 65 D[size] = D[c]; 66 U[size] = c; 67 U[D[c]] = size; 68 D[c] = size; 69 70 if ( head[r] < 0 ) 71 head[r] = L[size] = R[size] = size; 72 else 73 { 74 R[size] = R[head[r]]; 75 L[R[size]] = size; 76 L[size] = head[r]; 77 R[head[r]] = size; 78 } 79 } 80 81 void remove( int id ) 82 { 83 for ( int i = D[id]; i != id; i = D[i] ) 84 { 85 L[R[i]] = L[i]; 86 R[L[i]] = R[i]; 87 } 88 } 89 90 void resume( int id ) 91 { 92 for ( int i = D[id]; i != id; i = D[i] ) 93 L[R[i]] = R[L[i]] = i; 94 } 95 96 int h() 97 { 98 int sum = 0; 99 memset( vis, 0, sizeof(vis) ); 100 for ( int i = R[0]; i != 0; i = R[i] ) 101 if (!vis[i]) 102 { 103 sum++; 104 for ( int j = D[i]; j != i; j = D[j] ) 105 for ( int k = R[j]; k != j; k = R[k] ) 106 vis[C[k]] = 1; 107 } 108 return sum; 109 } 110 111 void dance( int k ) 112 { 113 int mark, mmin = inf; 114 int tmp = k + h(); 115 if ( tmp >= fin || tmp > K ) 116 return; 117 if ( R[0] == 0 ) 118 { 119 if ( k < fin ) 120 fin = k; 121 return; 122 } 123 124 for ( int i = R[0]; i != 0; i = R[i] ) 125 if ( mmin > S[i] ) 126 { 127 mmin = S[i]; 128 mark = i; 129 } 130 131 for ( int i = D[mark]; i != mark; i = D[i] ) 132 { 133 remove(i); 134 for ( int j = R[i]; j != i; j = R[j] ) remove(j); 135 dance(k+1); 136 for ( int j = R[i]; j != i; j = R[j] ) resume(j); 137 resume(i); 138 } 139 } 140 }dlx; 141 142 int cnt; 143 int g[62][2]; 144 145 struct mmap { 146 int x, y; 147 LL dist; 148 bool operator < ( const mmap &a ) const 149 { return dist < a.dist; } 150 }node[62*62]; 151 152 LL getdist( int i, int j ) 153 { 154 LL x = abs(g[i][0]-g[j][0]); 155 LL y = abs(g[i][1]-g[j][1]); 156 return x+y; 157 } 158 159 void init( int n ) 160 { 161 cnt = 0; 162 for( int i = 1; i <= n; i++ ) 163 scanf("%d %d", &g[i][0], &g[i][1] ); 164 for ( int i = 1; i <= n; i++ ) 165 for ( int j = i; j <= n; j++ ) 166 { 167 node[cnt].x = i; node[cnt].y = j; 168 node[cnt++].dist = getdist(i,j); 169 } 170 sort(node, node+cnt); 171 } 172 173 bool judge( int n, int k, LL mid ) 174 { 175 dlx.init(n, n); dlx.fin = k+1; 176 177 for ( int i = 0; i < cnt; i++ ) 178 { 179 if ( node[i].dist > mid ) break; 180 181 dlx.link( node[i].x, node[i].y ); 182 if ( node[i].x != node[i].y ) 183 dlx.link( node[i].y, node[i].x ); 184 } 185 186 dlx.dance(0); 187 if ( dlx.fin <= k ) 188 return true; 189 else 190 return false; 191 } 192 193 LL solve( int n, int k ) 194 { 195 LL mid, lhs = 0, rhs = cnt; 196 while ( lhs <= rhs ) 197 { 198 mid = (lhs+rhs)>>1; 199 if ( judge(n,k,node[mid].dist) ) 200 rhs = mid-1; 201 else 202 lhs = mid+1; 203 } 204 205 if ( judge(n,k,node[lhs].dist) ) 206 return node[lhs].dist; 207 else 208 return node[rhs].dist; 209 } 210 211 int main() 212 { 213 //freopen("F:\\cpp\\test.txt", "r", stdin ); 214 215 int T; cin >> T; 216 int n, k, cnt = 1; 217 while (T--) 218 { 219 scanf("%d %d", &n, &k); 220 N = n; K = k; 221 init(n); 222 printf("Case #%d: %lld\n", cnt++, solve(n,k)); 223 } 224 225 return 0; 226 } View Code

?  7.ZOJ 3122

  16個數字的數獨,和9個數字的數獨其實一樣,這次加了注釋,終于理解了...然后dlx范圍老是調不好

1 #include <iostream> 2 #include <string.h> 3 #include <cstdio> 4 #include <vector> 5 #include <string> 6 #include <algorithm> 7 #include <math.h> 8 #include <time.h> 9 10 #define SIGMA_SIZE 26 11 #define lson rt<<1 12 #define rson rt<<1|1 13 #pragma warning ( disable : 4996 ) 14 15 using namespace std; 16 typedef long long LL; 17 inline LL LMax(LL a,LL b) { return a>b?a:b; } 18 inline LL LMin(LL a,LL b) { return a>b?b:a; } 19 inline int Max(int a,int b) { return a>b?a:b; } 20 inline int Min(int a,int b) { return a>b?b:a; } 21 inline int gcd( int a, int b ) { return b==0?a:gcd(b,a%b); } 22 inline int lcm( int a, int b ) { return a/gcd(a,b)*b; } //a*b = gcd*lcm 23 const LL INF = 0x3f3f3f3f3f3f3f3f; 24 const LL mod = 1000000007; 25 const double eps = 1e-8; 26 const int inf = 0x3f3f3f3f; 27 const int maxk = 1e5; 28 const int maxn = 1030; 29 30 //行:16x16x16=4096表示每個格子有16種選擇 31 //列:(16x16)x3=768,表示16行16列16小塊每個各有16種數字單獨存在 32 //列:還要加上768+16x16=1024,表示每個格子只能有一個數字 33 34 struct DLX { 35 int n, m, size, fin; 36 int U[maxk], D[maxk], L[maxk], R[maxk];//上下左右 37 int head[maxk], S[maxk]; //分別存每一行第一個1的點的標號和每一列1的個數 38 int row[maxk], col[maxk], ans[maxk]; //row,col表示第size個點在哪一行/列 39 40 41 void init( int _n, int _m ) 42 { 43 n = _n; m = _m; 44 for ( int i = 0; i <= m; i++ ) //初始化第一行(人為增加的虛擬行) 45 { 46 S[i] = 0; 47 U[i] = D[i] = i; 48 L[i] = i-1; 49 R[i] = i+1; 50 } 51 R[m] = 0; L[0] = m; //第一行的最后一個元素指向第一個 52 size = m; //從m開始以后都是普通節點 53 memset( head, -1, sizeof(head) ); 54 head[0] = 0; 55 } 56 57 void link( int r, int c ) 58 { 59 size++; //得到新的點標號 60 col[size] = c; //第size個點在第c列 61 row[size] = r; //第size個點在第r行 62 S[c]++; //第c列1的個數+1 63 64 //組成一個環,和下面左右一樣的插法 65 D[size] = D[c]; 66 U[size] = c; 67 U[D[c]] = size; 68 D[c] = size; 69 70 //如果該行沒有為1的節點 71 if ( head[r] < 0 ) head[r] = L[size] = R[size] = size; 72 else 73 { 74 //組成一個環,插在head[r]和head[r]右邊那個元素中間 75 R[size] = R[head[r]]; 76 L[R[size]] = size; 77 L[size] = head[r]; 78 R[head[r]] = size; 79 } 80 } 81 82 void remove( int c ) //刪除列c及其所在行 83 { 84 L[R[c]] = L[c]; R[L[c]] = R[c]; //c的左右兩個節點互相連接 85 for ( int i = D[c]; i != c; i = D[i] ) //屏蔽c列 86 for ( int j = R[i]; j != i; j = R[j] ) 87 { 88 U[D[j]] = U[j]; 89 D[U[j]] = D[j]; 90 --S[col[j]]; //j所在的列的1的數目數減少 91 } 92 } 93 94 void resume( int c ) 95 { 96 for ( int i = U[c]; i != c; i = U[i] ) 97 for ( int j = L[i]; j != i; j = L[j] ) 98 { 99 U[D[j]] = D[U[j]] = j; 100 ++S[col[j]]; 101 } 102 L[R[c]] = R[L[c]] = c; 103 } 104 105 bool dance( int d ) 106 { 107 if ( R[0] == 0 ) //第0行沒有節點 108 { 109 fin = d; 110 return true; 111 } 112 113 //找出含1數目最小的一列 114 int mark = R[0]; 115 for ( int i = R[0]; i != 0; i = R[i] ) 116 if ( S[i] < S[mark] ) 117 mark = i; 118 119 remove(mark); //移除列mark的1的對應行 120 for ( int i = D[mark]; i != mark; i = D[i] ) 121 { 122 ans[d] = row[i]; 123 //移除該行的1的對應列 124 for ( int j = R[i]; j != i; j = R[j] ) 125 remove(col[j]); 126 127 if ( dance(d+1) ) 128 return true; 129 130 //倒著恢復 131 for ( int j = L[i]; j != i; j = L[j] ) 132 resume(col[j]); 133 } 134 resume(mark); 135 return false; 136 } 137 }dlx; 138 139 char mmap[20][20]; 140 char sudoku[20][20]; 141 struct node { 142 int x, y, k; 143 }e[maxk]; 144 145 146 void init() 147 { 148 //4096行,1024列 149 dlx.init(4096,1024); 150 int row = 0; 151 152 for ( int i = 1; i <= 16; i++ ) 153 for ( int j = 1; j <= 16; j++ ) 154 { 155 if ( mmap[i][j] == '-' ) 156 for (int k = 1; k <= 16; k++ ) 157 { 158 row++; 159 dlx.link(row, (i-1)*16+j ); //第i行第j個格子已經填了數字 160 dlx.link(row, 256+(i-1)*16+k); //第i行已經填了數字k 161 dlx.link(row, 512+(j-1)*16+k); //第j列已經填了數字k 162 dlx.link(row, 768+(((i-1)/4)*4 + (j-1)/4)*16+k); //第xxx個格子已經填了數字k 163 e[row].x = i; e[row].y = j; e[row].k = k; 164 } 165 else 166 { 167 row++; 168 int k = mmap[i][j] - 'A' + 1; 169 dlx.link(row, (i-1)*16+j); 170 dlx.link(row, 256+(i-1)*16+k); 171 dlx.link(row, 512+(j-1)*16+k); 172 dlx.link(row, 768+(((i-1)/4)*4 + (j-1)/4)*16+k); 173 e[row].x = i; e[row].y = j; e[row].k = k; 174 } 175 } 176 } 177 178 int main() 179 { 180 //freopen("F:\\cpp\\test.txt", "r", stdin ); 181 182 int cnt = 0; 183 while (1) 184 { 185 if ( ~scanf("%s", mmap[1]+1) ) 186 { 187 for ( int i = 2; i <= 16; i++ ) 188 scanf("%s", mmap[i]+1); 189 190 if (cnt++) 191 printf("\n"); 192 193 init(); 194 dlx.dance(0); 195 196 int tmp; 197 for ( int i = 0; i < dlx.fin; i++ ) 198 { 199 tmp = dlx.ans[i]; 200 sudoku[e[tmp].x-1][e[tmp].y-1] = e[tmp].k + 'A' - 1; 201 sudoku[e[tmp].x-1][16] = '\0'; 202 } 203 for ( int i = 0; i < 16; i++ ) 204 printf("%s\n", sudoku[i]); 205 } 206 else 207 break; 208 } 209 } View Code

?

轉載于:https://www.cnblogs.com/chaoswr/p/9016739.html

總結

以上是生活随笔為你收集整理的kuangbin带我飞QAQ DLX之一脸懵逼的全部內容,希望文章能夠幫你解決所遇到的問題。

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

最新成人在线 | 夜夜视频欧洲 | 99综合影院在线 | 99在线观看免费视频精品观看 | 免费观看www视频 | 国产精品久久久久一区二区三区 | 国产视频亚洲 | 国产一级二级三级在线观看 | 毛片网在线 | 国产精品女人久久久久久 | 欧美一二三区播放 | 欧美日bb| 黄色av电影免费观看 | 九月婷婷色 | 国产我不卡 | 国产999精品久久久 免费a网站 | 久久经典视频 | 久久视频免费观看 | 最新国产在线观看 | 亚洲黄色网络 | 激情综合五月天 | 婷婷久久一区二区三区 | 伊人天堂网 | 麻豆系列在线观看 | 亚洲精品国产综合久久 | 成年人免费看片 | 欧美视频一区二 | 欧美性色xo影院 | 久久久午夜剧场 | 黄色天堂在线观看 | 国产精品美女久久久久久久久久久 | 精品自拍网 | 国产精品久久久久久久久久妇女 | 久久国产精品色婷婷 | 久久婷婷国产色一区二区三区 | 波多野结衣久久资源 | 国产精品99久久久久 | 一区二区视频在线看 | 国产高清视频在线免费观看 | 九九电影在线 | 日韩精品高清不卡 | 亚洲精品玖玖玖av在线看 | 九九九九九九精品任你躁 | 人人超碰免费 | 日韩久久精品一区二区 | 黄在线 | 亚洲黄色免费电影 | 国产成人精品在线播放 | 五月婷婷在线观看视频 | 一区二区视频免费在线观看 | 在线中文字幕网站 | 国产三级av在线 | 91亚洲精品久久久久图片蜜桃 | 国产精品久久久久久久久久久不卡 | 最新久久久 | 国产日本在线播放 | 成人av影视在线 | 中文字幕亚洲欧美日韩 | 日韩中文字幕免费视频 | 日韩一级黄色片 | 一级成人网 | 香蕉久草 | 国产91av视频在线观看 | 午夜狠狠操| 国产午夜精品久久 | 国产.精品.日韩.另类.中文.在线.播放 | 国产在线观看免费观看 | 成人午夜影视 | 国产精品毛片一区二区在线看 | 国产精品久久久久久久免费观看 | 久久视频精品在线观看 | 一区二区三高清 | 国产精品成人一区二区 | 欧美精品在线观看免费 | 国产一区在线不卡 | 国产一级二级在线观看 | 亚洲欧美日韩精品久久久 | 日韩高清在线一区 | 99精品偷拍视频一区二区三区 | 在线视频a | 色在线网| 91精品国产高清 | 不卡视频一区二区三区 | 999精品网| 国产婷婷精品 | 午夜视频欧美 | 夜夜躁日日躁狠狠久久av | 国产色一区 | 久久精品99久久 | 99热999| 97视频在线观看视频免费视频 | av黄色在线观看 | 天天鲁天天干天天射 | 色视频 在线 | 国产精品成人一区二区三区吃奶 | 免费视频 三区 | 精品国内自产拍在线观看视频 | 操操日日| 天天天天爱天天躁 | 黄色a视频免费 | 国产成人精品av在线 | 中文字幕免费观看 | 少妇精69xxtheporn| 日韩综合在线观看 | 精品国自产在线观看 | 97av超碰 | 亚洲精品乱码久久久久久蜜桃91 | 婷婷在线网站 | 国产区精品区 | 毛片网站在线看 | 亚洲另类在线视频 | 免费久久片 | 午夜丰满寂寞少妇精品 | 国产99久久久国产精品成人免费 | 黄色成人影院 | 69国产在线观看 | 91九色丨porny丨丰满6 | 婷婷 中文字幕 | 免费看黄电影 | 久久精品国产第一区二区三区 | 久久免费av电影 | 国产精品福利久久久 | 中文在线 | av福利在线播放 | 国产一级做a | 国产精品12345 | 香蕉在线视频观看 | 亚洲午夜电影网 | 麻豆免费精品视频 | 亚洲影院国产 | 久久综合九色综合久久久精品综合 | 天天射天天干天天爽 | 91人人澡人人爽人人精品 | 国产精品久久久久久久久久白浆 | 亚洲视屏在线播放 | 婷婷电影在线观看 | 中文字幕资源网在线观看 | 91亚·色| 黄色软件网站在线观看 | 9999在线 | 欧美一区二区三区激情视频 | 欧美91视频 | 91视频免费看网站 | 99久久99久国产黄毛片 | 伊人日日干 | 免费97视频 | 五月天激情视频 | 69av国产 | 二区视频在线观看 | 99热这里只有精品国产首页 | 中文字幕之中文字幕 | 日日夜夜亚洲 | 久久久国产一区二区 | 亚洲精品在线视频观看 | 久香蕉 | 视频一区二区国产 | 天天射天天添 | 久草久热| av电影在线播放 | 久久国产经典视频 | 日韩欧美一区二区三区免费观看 | 手机成人免费视频 | 久久天天综合网 | 久久久久国产免费免费 | 91精品国产欧美一区二区 | 日韩欧美在线免费 | 91精品视频免费看 | 粉嫩av一区二区三区四区 | 最新动作电影 | 99热手机在线观看 | 成人作爱视频 | 欧美日韩破处 | 久久精品9| 久草在线免费资源 | 最新中文字幕 | 国产精品白丝jk白祙 | 久久久国产影院 | 国产精品99久久免费观看 | www.天天干.com | 日韩影视在线观看 | 日韩理论片在线观看 | 中文字幕在线影视资源 | 亚洲成人国产精品 | 不卡的av在线播放 | 中文字幕美女免费在线 | 亚洲免费视频在线观看 | 久久久久成人精品免费播放动漫 | 丁香花在线视频观看免费 | 精品不卡视频 | 亚洲激精日韩激精欧美精品 | 国产中文视 | 伊人五月综合 | 新版资源中文在线观看 | 天天射天天色天天干 | 最近中文字幕大全中文字幕免费 | 狠狠狠色狠狠色综合 | 黄色毛片在线 | 免费国产在线视频 | 日韩精品一区二区在线 | 免费在线观看av的网站 | 久草电影免费在线观看 | 亚洲免费在线播放视频 | 中文字幕a∨在线乱码免费看 | 天天色天天操综合网 | 国产生活一级片 | 日韩av电影中文字幕 | 91久久在线观看 | 国产不卡在线观看视频 | 国产精品久久久久久久久久不蜜月 | 香蕉视频在线看 | 亚洲国内精品视频 | 毛片一级免费一级 | 国产精品欧美久久久久三级 | 久久久久国产精品视频 | 亚洲成人欧美 | 久久99久久99精品中文字幕 | 一区二区精品久久 | 色婷婷亚洲婷婷 | 日韩中文字幕免费电影 | 天天爽天天做 | 超碰激情在线 | 欧美国产日韩在线视频 | 欧洲一区二区在线观看 | 亚洲精品视频www | 国产第一页精品 | 五月婷婷激情 | 国产1区2| 国产区精品在线观看 | 黄色免费视频在线观看 | 国产精品完整版 | 久久国产精品久久国产精品 | 国产97色| 精品免费久久 | 精品免费国产一区二区三区四区 | 91高清一区 | 亚洲国产日韩在线 | 久久国产午夜精品理论片最新版本 | 中文字幕综合在线 | 国产精品手机在线观看 | 色久综合 | 福利视频 | 日韩午夜一级片 | 日韩精品一区在线观看 | 五月婷婷色播 | 免费日韩av电影 | 亚洲激情精品 | 亚洲精品理论片 | 欧美色插| 婷婷丁香九月 | 色多视频在线观看 | 麻豆91在线播放 | 开心丁香婷婷深爱五月 | 91成人短视频在线观看 | 国产又粗又猛又黄又爽 | 亚洲精品福利在线观看 | 91视频 - x99av| 奇米导航 | 五月婷婷在线观看 | 国产精品福利在线播放 | 久久全国免费视频 | 国产精品av免费观看 | 99精品视频在线免费观看 | 天天看天天操 | 999精品| 五月婷婷综合色拍 | 六月丁香在线观看 | 91在线入口| 精品国产免费久久 | 一级黄色a视频 | 六月色播 | 国产精品色视频 | 亚洲片在线资源 | 国产一二区视频 | 99久久精品网 | 日韩乱码在线 | 色视频在线免费 | av在线播放中文字幕 | 香蕉视频91 | 色综合狠狠干 | 一本一本久久a久久精品综合小说 | 东方av在线免费观看 | 日韩免费小视频 | 国产夫妻自拍av | 欧美日韩国产精品一区二区亚洲 | 在线观看中文字幕2021 | 三级av中文字幕 | 国产视频综合在线 | 国产91精品一区二区 | 一区二区三区免费看 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 五月天com | 日韩精品免费在线观看 | 久久久久久毛片精品免费不卡 | 久草网站在线 | 成人av影视在线 | 欧美精品少妇xxxxx喷水 | 女人18片毛片90分钟 | 97av免费视频 | 亚洲精品中文在线观看 | 一区二区三区观看 | 国产精品三级视频 | 亚洲精品午夜久久久久久久久久久 | 波多野结衣在线播放一区 | 国产尤物在线观看 | 久久久亚洲影院 | 欧美日韩高清国产 | 国产破处视频在线播放 | 日韩中文字幕免费在线观看 | 丁香婷婷综合色啪 | 日本中文字幕在线免费观看 | 黄色性av | 国产老妇av | 麻豆免费在线播放 | 久久免费精彩视频 | 97av影院 | 国产精品99久久久久久大便 | 国产精品色在线 | 伊人伊成久久人综合网站 | 国产精品一区一区三区 | 亚洲精品免费看 | 日韩av一区二区三区四区 | 92中文资源在线 | 日韩精品久久久久久中文字幕8 | 国产视频观看 | 91精品一区二区三区久久久久久 | 在线观看自拍 | 国产精品理论片 | 欧美无极色 | 91福利免费 | 在线免费观看不卡av | 国产色a在线观看 | 欧美日韩亚洲在线 | 日本中文字幕在线播放 | 奇米影视777四色米奇影院 | 免费中文字幕在线观看 | 欧美资源在线观看 | 欧美日韩国产一区二区在线观看 | 日本中文字幕影院 | 亚洲精品资源在线 | 成人一区二区在线 | 中文字幕91| 中文字幕在线播放一区二区 | 国产一级视频在线免费观看 | 探花视频免费观看 | 免费www视频 | 99九九99九九九视频精品 | 国产精品日韩欧美 | 一区二区三区日韩视频在线观看 | av 一区 二区 久久 | 久久免费精品国产 | 色综合夜色一区 | 亚洲色影爱久久精品 | 色视频成人在线观看免 | 一区二区视频网站 | 91精品办公室少妇高潮对白 | 九九导航 | 黄色免费在线看 | 亚洲三级精品 | 国产精品白丝jk白祙 | 叶爱av在线 | 久久精品中文字幕一区二区三区 | a久久久久久 | 天天色图| 日韩在线观看视频免费 | 在线视频91| 国产一区二区精品久久 | 精品久久一区二区三区 | 欧洲精品一区二区 | 国产18精品乱码免费看 | 国产精品久久久久久久久久ktv | 亚洲黄色av网址 | 午夜精品999| 亚洲精品一区二区三区在线观看 | 成年人在线看视频 | 精品久久一区二区 | 麻豆视频免费在线 | 男女啪啪网站 | 欧美成人免费在线 | 国产视频第二页 | 黄色成人在线观看 | 精品国产精品一区二区夜夜嗨 | 在线观看免费av网 | 日韩mv欧美mv国产精品 | 狠狠狠色丁香婷婷综合激情 | 美女视频黄网站 | 亚洲美女精品视频 | 亚洲精品乱码久久久一二三 | 日本性久久 | 日产乱码一二三区别免费 | 久久久久一区二区三区四区 | 骄小bbw搡bbbb揉bbbb | 国产一区在线视频播放 | 亚洲国产精品500在线观看 | 91看片在线播放 | 成人网在线免费视频 | 午夜av影院 | 亚洲高清91 | 最近高清中文字幕在线国语5 | 欧美精品在线一区二区 | 精品在线视频一区二区三区 | 中文资源在线播放 | 天天操天天谢 | 国内成人综合 | 99久久久国产精品免费观看 | 国产精品免费久久 | 久久精品久久精品久久精品 | 天天操天天干天天操天天干 | 97韩国电影 | 1000部国产精品成人观看 | 国产精品一区欧美 | 免费日韩一区二区 | 日日干av | 98涩涩国产露脸精品国产网 | 一区二区三区高清在线观看 | 久香蕉 | 91精品国产自产91精品 | 天天操天天射天天舔 | 亚洲涩综合 | 亚洲动漫在线观看 | 去干成人网 | 91热视频| 日韩高清www | 久久夜靖品 | 在线观看片| 在线91视频 | 一区二区视频播放 | 99视频网站 | 免费观看全黄做爰大片国产 | 国产精品女同一区二区三区久久夜 | 免费看v片| 狠狠狠狠狠色综合 | 免费色网站 | 毛片www | www.狠狠插.com | 日韩免费视频在线观看 | 丁香花在线视频观看免费 | 六月丁香婷婷久久 | 夜夜夜夜夜夜操 | 欧美另类sm图片 | 天天色天天上天天操 | 69精品视频 | 91精品导航 | 成人免费观看大片 | 奇米四色影狠狠爱7777 | 久久精品香蕉视频 | 一区二区三区高清在线观看 | 亚洲91在线| 热久在线 | 国产91免费看| 精品人人人 | 天天操天天干天天玩 | 久久精品免费看 | 国产精品一区二区三区在线播放 | 又黄又爽又刺激的视频 | 樱空桃av | 亚洲在线视频免费观看 | 日韩黄色免费在线观看 | 日韩精品免费一线在线观看 | 1024久久| 亚洲视频电影在线 | 69久久久久久久 | 国产精品女同一区二区三区久久夜 | 免费久草视频 | 99精品99 | 久久久久亚洲精品 | 五月天狠狠操 | 色wwwww | 国产传媒一区在线 | 国产1级视频 | 亚洲一区美女视频在线观看免费 | 中文字幕日韩国产 | 久久婷婷综合激情 | 9在线观看免费高清完整版在线观看明 | 一区二区三区影院 | 伊人手机在线 | 特级西西www44高清大胆图片 | 免费色av| 欧美色综合天天久久综合精品 | 亚洲成人免费在线 | 九九在线精品视频 | 成人a免费视频 | 激情视频二区 | 日本一区二区高清不卡 | 亚洲精品www. | 久久久久免费看 | 丁香婷婷基地 | 色偷偷网站视频 | 国产麻豆视频在线观看 | 婷婷在线免费视频 | 九色视频网 | 99精品免费| 特级毛片爽www免费版 | 中文字幕一区二区三区久久 | 成人av免费电影 | 欧美日韩在线视频免费 | 操操碰 | 国产中文 | 91免费看黄色| 国产在线a免费观看 | 午夜久久福利视频 | 久草热久草视频 | 久久婷婷精品 | 国产精品va在线播放 | 国产黄色播放 | 91香蕉国产在线观看软件 | 激情网综合 | 国产视频精选在线 | 久久国产欧美日韩精品 | 欧美另类色图 | 亚洲1区 在线 | 99久久99久久精品 | 五月天,com| 亚洲精品理论 | 91av在线电影| 国产精品不卡 | 天天操狠狠操网站 | 成人a视频在线观看 | 国产69精品久久99不卡的观看体验 | 日韩美女高潮 | 黄a在线观看 | 在线观看亚洲成人 | 一区二区三区在线影院 | 日韩影视大全 | 毛片视频电影 | 日韩欧美一区二区三区免费观看 | 一区二区视频在线观看免费 | 欧美激情精品久久久久久 | 噜噜色官网 | 日韩av免费一区 | 日本三级香港三级人妇99 | 91亚洲精品国偷拍自产在线观看 | 日韩精品一区二区三区第95 | 久久超碰99 | 伊人久久精品久久亚洲一区 | 98久久 | 99久久精品网 | 狠狠操91| 狠狠的日日| 久久躁日日躁aaaaxxxx | 成年人黄色av | 激情深爱| 精品国产免费看 | 亚洲人成人天堂h久久 | 人人插人人看 | 久草精品视频 | 91精品国产乱码在线观看 | 一区二区三区久久精品 | 欧美精品小视频 | 黄色特级一级片 | 成人三级网址 | 久久999久久 | 国产自产在线视频 | 亚洲日本精品视频 | 五月色婷 | 久草| 91成人黄色 | 菠萝菠萝蜜在线播放 | 亚洲精品久久久久中文字幕m男 | 日韩在线观看视频免费 | 亚洲精品在线国产 | 日本午夜免费福利视频 | 狠狠搞,com| 欧美色婷婷| 97在线免费视频观看 | 免费高清在线观看成人 | 91在线视频免费 | 国产免费小视频 | 久久网址| 免费国产在线精品 | 人人添人人 | 在线观看深夜视频 | 亚洲视频每日更新 | 国产又粗又猛又爽又黄的视频免费 | 欧美大片www | 久久夜色精品国产欧美乱 | 韩国三级av在线 | 色在线高清 | 国产高清在线免费观看 | 午夜久久 | 日韩免费小视频 | 国产97视频在线 | 精品久久九九 | 深爱激情综合网 | 国产精品中文字幕在线 | 国产精品久久久久久久久搜平片 | 正在播放一区二区 | 亚洲精品视频在线观看免费视频 | 在线观看视频黄色 | 国产色婷婷在线 | 区一区二区三区中文字幕 | 精品在线不卡 | 精品专区| 久久精品99国产精品 | 免费的黄色av | 久久久官网 | 高清视频一区二区三区 | 911国产精品 | 久草在线资源观看 | 久久激情五月丁香伊人 | 国产精品国产毛片 | 国产一区二区三区在线 | 久久国产美女视频 | 在线韩国电影免费观影完整版 | 中文字幕在线观看视频一区 | 天天操夜夜做 | 欧美在线视频a | 久久福利小视频 | 午夜视频在线瓜伦 | 天天干天天操天天干 | 精品久久久久久久久久 | 久久综合婷婷综合 | 丝袜美女视频网站 | 日韩久久久久久久久久久久 | 国产女人免费看a级丨片 | 亚洲天堂首页 | 国产免费中文字幕 | 97在线观看免费 | 99在线精品观看 | 日本特黄特色aaa大片免费 | 国产正在播放 | 深夜免费小视频 | 久久精品国产亚洲精品2020 | 国产精品99久久久精品免费观看 | 在线 视频 一区二区 | 波多野结衣在线视频一区 | 国产一区二区三区视频在线 | 欧美日韩国产xxx | 日韩二区三区在线观看 | 91.麻豆视频 | 欧美在线视频一区二区三区 | 色无五月| 麻豆国产在线播放 | 欧美亚洲三级 | 欧美在线观看视频 | 亚洲成人免费在线 | 亚洲国产精品激情在线观看 | 欧美另类xxx | 欧美日韩精品区 | 成人在线观看资源 | 久久综合色影院 | 免费观看mv大片高清 | www激情久久 | 日韩在线观看视频中文字幕 | 国产一级免费片 | 五月天中文字幕mv在线 | 天天插天天操天天干 | 国产四虎在线 | 丁香花中文在线免费观看 | 黄视频网站大全 | 精品久久一区二区 | 亚洲精品自拍视频在线观看 | 成年人在线播放视频 | 一区二区三区免费在线观看视频 | 在线国产能看的 | 91欧美视频网站 | 最近中文字幕高清字幕免费mv | 成人黄色毛片视频 | 国产精品色 | 综合网久久 | 国产日韩精品一区二区三区在线 | 成人午夜电影免费在线观看 | 狠狠色狠狠色终合网 | 久久精品精品电影网 | 国产一级不卡视频 | 久久久高清视频 | 色吊丝av中文字幕 | 91色一区二区三区 | 91视频亚洲| 欧美精品在线免费 | 日韩xxx视频 | 亚洲精品乱码久久久久久蜜桃欧美 | 国产在线色站 | 91视频在线免费 | 亚洲一区二区三区四区在线视频 | 国产中文字幕在线视频 | 五月婷婷激情综合 | 日韩av视屏在线观看 | 外国av网| 麻豆视传媒官网免费观看 | 欧美日韩免费观看一区二区三区 | 久久999精品 | 亚洲成人第一区 | 日韩欧美一区二区三区在线观看 | 婷婷丁香社区 | 大胆欧美gogo免费视频一二区 | 亚洲午夜精品一区二区三区电影院 | 在线观看 国产 | 久久精品国产美女 | 国产精品自拍在线 | 97人人艹 | 色偷偷88888欧美精品久久久 | 久久天天拍 | 97操碰| 久草资源在线观看 | 一区二区三区手机在线观看 | 国产高清精品在线观看 | 中文av在线天堂 | 正在播放国产一区二区 | 超碰九九 | 国产乱码精品一区二区蜜臀 | 九九免费精品视频在线观看 | 日韩免费一区 | 欧美日韩视频 | 国产成人精品女人久久久 | 久久狠狠亚洲综合 | 91视频免费网站 | 国产精品免费不卡 | 91人人揉日日捏人人看 | 五月天久久狠狠 | 国产精品久久久免费看 | 尤物一区二区三区 | av爱干 | 免费看一级 | 操老逼免费视频 | 91视频-88av| 精品理论片 | 精品国产乱码久久久久 | a黄色影院| 狠狠五月天 | 青青河边草观看完整版高清 | 久草在线观 | 国产精品久久久久久久7电影 | 一区二区三区免费网站 | 久久久精品一区二区三区 | 黄色在线观看网站 | 久久黄色片 | 精品国产午夜 | 欧美国产不卡 | 蜜桃视频成人在线观看 | 色午夜影院 | 三级av免费观看 | 97色在线| 中文字幕中文字幕在线一区 | 欧洲av不卡 | 婷婷在线免费 | 国产一二三区av | 成年人视频在线观看免费 | 麻豆免费视频网站 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 日本成人免费在线观看 | 久草在线视频首页 | 精品亚洲视频在线观看 | 97精品国产| 亚洲精品小区久久久久久 | 日本91在线 | 国产r级在线观看 | 91九色九色| 国产中文字幕视频在线 | 97夜夜澡人人双人人人喊 | 欧洲精品在线视频 | 成人久久久久久久久久 | 欧美精品少妇xxxxx喷水 | 欧美久久九九 | 久久久久久久久艹 | 久久不射电影院 | 麻豆免费观看视频 | 在线视频 91 | 久久爱综合 | 在线成人免费 | 欧美日韩一二三四区 | 国产亚洲激情视频在线 | 高清视频一区 | 成年人黄色免费网站 | 亚洲精品久久久蜜桃直播 | 国产91精品欧美 | 精品久久一级片 | 国产精品永久在线 | 狠狠ri| 久久综合久色欧美综合狠狠 | av中文天堂在线 | 久久不卡电影 | 美女av免费看 | 四虎影视8848aamm | 美女搞黄国产视频网站 | 免费看片日韩 | 中文字幕最新精品 | 丁香资源影视免费观看 | 国产精品国产自产拍高清av | 欧美另类视频 | 九色激情网 | 日韩艹 | 人人草天天草 | 国产精品一区二区免费 | 国产精品成人久久 | 国产精品福利视频 | 久久久久久久久久久高潮一区二区 | 国产在线精品观看 | 99精品视频99 | 中文在线免费视频 | 国产一区二区在线看 | 99亚洲精品在线 | 911久久| av888av.com| 亚洲日本中文字幕在线观看 | 精品久久久影院 | 亚洲激情小视频 | 日韩精品网址 | 亚洲精品动漫在线 | 亚洲欧美国产精品18p | 色婷婷婷 | 狠狠狠的干 | 日本精品视频免费观看 | 99久久精品午夜一区二区小说 | 国产中文字幕在线看 | 蜜臀久久99精品久久久酒店新书 | 色狠狠操 | 日韩欧美视频免费看 | 久久久免费精品国产一区二区 | .国产精品成人自产拍在线观看6 | 亚洲一区免费在线 | 一区二区三区av在线 | 亚洲激情av | 欧美日韩伦理在线 | 999久久国产精品免费观看网站 | 亚洲国产视频直播 | 国产日韩视频在线播放 | 热re99久久精品国产66热 | 久草在线免 | www.久艹| 国产午夜一级毛片 | 亚洲毛片在线观看. | 成人免费视频免费观看 | 国产精品亚洲视频 | 天天操天天爱天天干 | 狠狠躁夜夜av | 欧美精品乱码久久久久久按摩 | 香蕉视频最新网址 | 99精品热 | 国产精品美女999 | 国产精品免费观看在线 | 亚洲91中文字幕无线码三区 | 五月色婷 | 国产精彩在线视频 | 国产成人久 | 特及黄色片 | 日韩二区三区在线 | 国产色就色 | 国产精品一区久久久久 | 麻豆传媒在线视频 | 五月天婷亚洲天综合网精品偷 | 在线视频 区| 亚洲激情国产精品 | 色资源二区在线视频 | 久久国产视频网站 | 久久电影日韩 | www.97色.com| 激情综合五月网 | 日韩在线观看一区二区三区 | 91亚洲综合 | 国产一区成人 | 在线观看日韩免费视频 | 久久精彩免费视频 | 日本黄网站 | 一区二区三区四区精品视频 | 国偷自产视频一区二区久 | 成人国产一区二区 | 日韩av中文在线观看 | 91久久国产自产拍夜夜嗨 | av黄色大片 | 久久99亚洲热视 | 天天天天射| 在线亚洲小视频 | 69av视频在线观看 | 国产精品成人久久久久久久 | 久久久久久久久久久免费av | 欧美成人h版在线观看 | 17婷婷久久www | 国产一区二区在线观看视频 | 亚洲国产视频直播 | 碰超在线 | 这里有精品在线视频 | 99爱国产精品 | 久久都是精品 | 久久综合爱 | 国产 一区二区三区 在线 | 日本天天色 | 日韩h在线观看 | 99久久精品国产免费看不卡 | 日韩一区二区免费在线观看 | 在线观看av网 | 福利片免费看 | 日韩欧美区 | 99精品欧美一区二区三区 | 一级性视频 | 亚洲国产黄色 | 国产裸体视频网站 | 在线中文日韩 | 亚洲国产午夜 | 五月婷婷激情六月 | 99热在线精品观看 | 国产视频精品久久 | 天天色天天射天天干 | 色婷婷视频在线观看 | 亚洲mv大片欧洲mv大片免费 | 国产超碰在线观看 | av网址aaa | 91九色蝌蚪国产 | 亚洲欧美日韩国产精品一区午夜 | 欧美激情精品久久久久 | 看片黄网站 | 欧美亚洲一区二区在线 | 午夜10000| 91免费视频国产 | 亚洲国产精品va在线看黑人动漫 | 黄色小网站免费看 | 97人人爽人人| 91久久偷偷做嫩草影院 | 久久国产系列 | av免费电影在线 | 不卡av电影在线观看 | 黄色av播放 | 亚洲午夜精品久久久久久久久久久久 | 在线免费看片 | 狠狠色狠狠色合久久伊人 | 亚洲成av人片在线观看香蕉 | 日本精品一二区 | 91亚洲精品乱码久久久久久蜜桃 | 久草视频在线新免费 | 成片视频免费观看 | 国内精品视频在线 | 很黄很污的视频网站 | 伊人导航 | 成人黄色小视频 | 处女av在线 | 精品一区二区6 | 色综合久久88色综合天天人守婷 | 久久精品久久久久电影 | 久久精品视频18 | 99视频+国产日韩欧美 | 中文字幕美女免费在线 | 精品免费视频. | 精品一二三四在线 | 国产在线免费 | 日韩高清在线一区二区 | 最近中文字幕免费大全 | 日本3级在线观看 | 激情五月综合 | 亚洲激情电影在线 | 成人小视频在线播放 | 中文字幕一区二区在线播放 | 亚洲涩涩一区 | 狠狠干中文字幕 | 免费裸体视频网 | 狠狠躁夜夜躁人人爽超碰91 | 96av麻豆蜜桃一区二区 | 日韩精品视频免费专区在线播放 | 97超碰免费在线 | 四虎5151久久欧美毛片 | 香蕉视频久久久 | 欧美色噜噜噜 | 日韩乱码在线 | 高清不卡一区二区在线 | 一区二区中文字幕在线观看 | 日韩精品一区二区三区水蜜桃 | 国模一二三区 | 六月丁香在线观看 | 国产成人精品电影久久久 | 成人免费视频播放 | 亚洲精品免费在线观看 | 欧美不卡视频在线 | 五月婷婷丁香六月 | 欧美在线aa | 成人app在线播放 | 日本二区三区在线 | 久青草影院 | 国产精品美女免费视频 | 久久96国产精品久久99软件 | 一区二区三区四区五区六区 | 国产一区二区三区午夜 | 亚洲天堂视频在线 | 亚洲一区二区黄色 | 高清一区二区三区 | 久久国产精品免费视频 | 国产成人av综合色 | 日本夜夜草视频网站 | 色姑娘综合| 91精品免费在线 | 成人精品一区二区三区中文字幕 | 激情五月伊人 | 亚洲色图av| 在线中文字幕播放 | 久久久国产精品亚洲一区 | 成人精品福利 | 国产精品自产拍在线观看 | 精品国产一区二区三区久久久蜜月 | 青春草视频 | 97韩国电影 | 国产又粗又长的视频 | 97看片| 97成人资源 | 欧美日产在线观看 | 国产精品久久久久久影院 | 在线免费高清一区二区三区 | 欧美一二三区在线观看 | 婷婷六月丁香激情 | 国产一区二区在线免费 | 日韩亚洲在线观看 | 国产精久久久久久久 |