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

糯米

TI DaVinci, gstreamer, ffmpeg
隨筆 - 167, 文章 - 0, 評論 - 47, 引用 - 0
數據加載中……

POJ 3038 Flying Right 貪心

這題不懂做,一開始想了一個動態規劃的方法,復雜度很高。估計得幾百ms。
看status,覺得肯定有很低復雜度的方法。
然后看了 Discuss ,看到某位大牛說的貪心方法,頓時恍然大悟,嗎的實在太牛逼了。
這位大牛的解法如下:
想象自己是一個黑一日游的司機:
1.如果有乘客要上車,那么就讓他上,收錢!
2.如果超載了,把距目的地最遠的幾個乘客踢下去,退錢。
3.行駛到下一站

照著這個方法編碼,一開始速度很慢,后來改成用一個隊列來維護車上的乘客,速度就很快了,還飚上榜了。

#include <stdio.h>
#include 
<stdlib.h>

#define MAX_N 10032
#define MAX_K 50032

struct slot_node {
    
int end, cap;
    
struct slot_node *next;
}
;
struct stat_node {
    
int idx[MAX_N], cnt[MAX_N], head, tail, tot;
}
;
struct slot_node *start[2][MAX_N], slots[MAX_K*2];
struct stat_node stat[2];
int K, N, C, left, right, slots_cnt, ans;

inline 
int min(int a, int b)
{
    
return a < b ? a : b;
}


inline 
void ins(int a, int b, int c, int d)
{
    
struct slot_node *t;

    
if (b > right)
        right 
= b;
    
if (a < left)
        left 
= a;
    t 
= &slots[slots_cnt++];
    t
->next = start[d][a];
    t
->end = b;
    t
->cap = c;
    start[d][a] 
= t;
}


inline 
void off(int d, int i)
{
    
struct stat_node *= &stat[d];

    
if (t->head == t->tail || t->idx[t->head] != i) 
        
return ;
    ans 
+= t->cnt[t->head];
    t
->tot -= t->cnt[t->head];
    t
->head++;
}


inline 
void del(struct stat_node *t)
{
    
int c;

    
while (t->tot > C) {
        c 
= min(t->tot - C, t->cnt[t->tail - 1]);
        t
->cnt[t->tail - 1-= c;
        t
->tot -= c;
        
if (!t->cnt[t->tail - 1])
            t
->tail--;
    }

}


inline 
void add(struct stat_node *t, int cap, int end)
{
    
int i, j;

    t
->tot += cap;

    
for (i = t->tail - 1; i >= t->head; i--{
        
if (t->idx[i] == end) {
            t
->cnt[i] += cap;
            
return ;
        }
 else if (t->idx[i] < end)
            
break;
    }

    i
++;
    t
->tail++;
    
for (j = t->tail - 1; j > i; j--{
        t
->idx[j] = t->idx[j - 1];
        t
->cnt[j] = t->cnt[j - 1];
    }

    t
->idx[i] = end;
    t
->cnt[i] = cap;
}


inline 
void on(int d, int i)
{
    
struct slot_node *s;
    
struct stat_node *= &stat[d];

    
for (s = start[d][i]; s; s = s->next) 
        add(t, s
->cap, s->end);
    del(t);
}


int main()
{
    
int i, a, b, c;

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%d%d%d"&K, &N, &C);
    left 
= N;
    
for (i = 0; i < K; i++{
        scanf(
"%d%d%d"&a, &b, &c);
        
if (a > b) 
            ins(N 
- a, N - b, c, 1);
        
else
            ins(a, b, c, 
0);
    }


    
for (i = left; i <= right; i++{
        off(
0, i);
        off(
1, i);
        on(
0, i);
        on(
1, i);
    }

    printf(
"%d\n", ans);

    
return 0;
}


posted @ 2010-04-12 16:37 糯米 閱讀(472) | 評論 (0)編輯 收藏

POJ 3046 Ant Counting 動態規劃

思路:

f[a][b] = { 種類數目為 a,螞蟻數目為 b 時候的方案總數 }
轉移:
f[a][b] = f[a - 1][0] + f[a - 1][1] + ... + f[a - 1][b]

時間 O(AT) 如果求 f[a][*] 只用一次循環的話
可以用循環數組

杯具:
把i看成j了,足足調了3個小時,注意,是不吃不喝,也沒有上廁所,沒有聽歌,沒有看優酷。。
是精神高度集中地浪費了3個小時!
與非主流之腦殘相比,有過之而無不及也。

#include <stdio.h>

#define P 1000000

int T, A, S, B, fam[1024], dp[2][1024*128], *cur, *pre;

inline 
int min(int a, int b)
{
    
return a < b ? a : b;
}


int main()
{
    
int i, j, cnt, end, sum;

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%d%d%d%d"&T, &A, &S, &B);
    
for (i = 0; i < A; i++{
        scanf(
"%d"&j);
        fam[j]
++;
    }

    
    
for (i = 0; i <= fam[1]; i++)
        dp[
1][i] = 1;
    end 
= fam[1];

    
for (i = 2; i <= T; i++{
        cur 
= dp[i & 1];
        pre 
= dp[(i+1& 1];
        cur[
0= pre[0];
        end 
+= fam[i];
        
for (j = 1; j <= end; j++{
            cur[j] 
= cur[j - 1+ pre[j];
            
if (j > fam[i])
                cur[j] 
-= pre[j - fam[i] - 1];
            cur[j] 
+= P;
            cur[j] 
%= P;
        }

    }


    sum 
= 0;
    
for (i = S; i <= B; i++{
        sum 
+= cur[i];
        sum 
%= P;
    }


    printf(
"%d\n", sum);

    
return 0;
}

posted @ 2010-04-11 21:56 糯米 閱讀(408) | 評論 (0)編輯 收藏

POJ 3043 Walk the Talk 動態規劃+單詞樹

首先考慮這個子問題:
從地圖上的某一點開始一直向右上方發展,一共能組成多少個以這個點的字母為開頭的單詞。
那么要把以這個點為左下角的矩形中的點全部都考察一遍。
假設這個點的字母為'N',那就要看所有單詞組成的單詞樹里面,所有'N'節點孩子的字母,是否出現在這個矩形中。
如果有出現的話,則又是一個子問題了。
把所有這樣的子問題的和求出來,就是答案了。

再考慮一個細節:
'N'節點在單詞樹中可以出現很多次,因此每個'N'節點都是一個子問題。表示:
所有組成的單詞,第一個字母節點是'N',余下的字母節點出現的'N'的子樹里。
動態規劃的時候,對于每個節點要處理一次,因為每個節點的孩子都不一樣。
在矩形中統計所有孩子對應的子問題的和。

關鍵是怎么存放子問題的答案:
我們需要找出矩形中跟指定孩子對應的點。如果把答案存放在地圖W*H的數組里面,那就比較麻煩,需要枚舉。
但是如果存放在單詞樹里面,就好很多。
如果我們從上往下掃描每一行,每一行從右到左掃描。那就只需要存放長度為W的一維數組了。

考慮一個細節:
對于地圖上的點'N',要以什么樣的順序處理單詞樹的每個'N'。
按照單詞樹的位置,應該從上到下處理。


代碼寫出來,跑了100ms+,居然排到第9,然后換了gcc編譯,又排前了一點!
發現前面的人,除了第二名,估計算法都是一樣的。

#include <stdio.h>

#define SIZE 64
#define QUEUE_SIZE 4096

struct tree_node {
    
int end, dp[SIZE];
    
struct tree_node *child[26], *next;
}
;

struct queue_node {
    
int idx;
    
struct tree_node *ptr;
}
;

int H, W;
char map[SIZE][SIZE];
struct tree_node nodes[QUEUE_SIZE], root, *hash[26];
int nodes_cnt;
struct queue_node queue[QUEUE_SIZE];
int tail, head;

inline 
void bfs()
{
    
struct tree_node *t;
    
int i;

    head 
= tail = 0;
    queue[tail
++].ptr = &root;
    
while (head != tail) {
        t 
= queue[head++].ptr;
        
for (i = 0; i < 26; i++{
            
if (!t->child[i])
                
continue;
            queue[tail].ptr 
= t->child[i];
            queue[tail].idx 
= i;
            tail
++;
        }

    }

    
for (tail--; tail >= 1; tail--{
        t 
= queue[tail].ptr;
        i 
= queue[tail].idx;
        t
->next = hash[i];
        hash[i] 
= t;
    }

}


inline 
void calc(int y, int x)
{
    
struct tree_node *t, *c;
    
int i, j, sum;

    
for (t = hash[map[y][x] - 'A']; t; t = t->next) {
        sum 
= t->end;
        
for (i = 0; i < 26; i++{
            c 
= t->child[i];
            
if (!c)
                
continue;
            
for (j = W - 1; j >= x; j--)
                sum 
+= c->dp[j];
        }

        t
->dp[x] += sum;
    }

}


int main()
{
    
int i, j, sum;
    
char str[64], *s;
    
struct tree_node *t, **p;

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%d%d"&H, &W);
    
for (i = 0; i < H; i++)
        scanf(
"%s", map[i]);
    
while (scanf("%s", str) != EOF) {
        t 
= &root;
        
for (s = str; *s; s++{
            p 
= &t->child[*- 'A'];
            
if (!*p) 
                
*= &nodes[nodes_cnt++];
            t 
= *p;
        }

        t
->end++;
    }

    bfs();

    
for (i = 0; i < H; i++)
        
for (j = W - 1; j >= 0; j--)
            calc(i, j);

    sum 
= 0;
    
for (i = 0; i < 26; i++{
        t 
= root.child[i];
        
if (!t)
            
continue;
        
for (j = 0; j < W; j++)
            sum 
+= t->dp[j];
    }

    printf(
"%d\n", sum);

    
return 0;
}


posted @ 2010-04-09 17:35 糯米 閱讀(649) | 評論 (0)編輯 收藏

POJ 2394 Checking an Alibi 陰人題

思路:

就是一個最短路徑的問題。但是題目數據規模跟描述不符合。
數組要開大一些才能過。官方數據是描述是符合的,可能是管理員加了一些進去。

#include <stdio.h>
#include 
<string.h>
#include 
<stdlib.h>

#define MAX_E 4096
#define MAX_V 2048
#define MAX_COST (1 << 30)

struct edge_node {
    
int idx, cost;
    
struct edge_node *next;
}
;

struct graph_node {
    
struct edge_node edges[MAX_E], *map[MAX_V];
    
int edges_cnt, vertexs_cnt;
    
int min_dis[MAX_V];
}
;

inline 
int min(int a, int b)
{
    
return a < b ? a : b;
}


inline 
void graph_init(struct graph_node *g, int vertexs_cnt)
{
    g
->vertexs_cnt = vertexs_cnt;
    g
->edges_cnt = 0;
    memset(g
->map, 0, vertexs_cnt * sizeof(g->map[0]));
}


inline 
void graph_addedge(struct graph_node *g, 
                          
int from, int to, 
                          
int cost
                          )
{
    
struct edge_node *e;

    e 
= &g->edges[g->edges_cnt++];
    e
->idx = to;
    e
->cost = cost;
    e
->next = g->map[from];
    g
->map[from] = e;
}



inline 
void graph_spfa(struct graph_node *g, int idx)
{
    
static int queue[MAX_V], vis[MAX_V], tm, head, tail;
    
int i, val;
    
struct edge_node *e;

    
for (i = 0; i < g->vertexs_cnt; i++)
        g
->min_dis[i] = MAX_COST;
    g
->min_dis[idx] = 0;
    
    head 
= tail = 0;
    tm
++;
    queue[tail
++= idx;

    
while (head != tail) {
        idx 
= queue[head++];
        vis[idx] 
= 0;
        
for (e = g->map[idx]; e; e = e->next) {
            val 
= g->min_dis[idx] + e->cost;
            
if (val >= g->min_dis[e->idx])
                
continue;
            g
->min_dis[e->idx] = val;
            
if (vis[e->idx] == tm) 
                
continue;
            queue[tail
++= e->idx;
            vis[e
->idx] = tm;
        }

    }

}


int main()
{
    
static int loc[MAX_V], i, F, C, P, M, from, to, cost, cnt;
    
static struct graph_node g;

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%d%d%d%d"&F, &P, &C, &M);
    graph_init(
&g, F + 1);
    
while (P--{
        scanf(
"%d%d%d"&from, &to, &cost);
        graph_addedge(
&g, from, to, cost);
        graph_addedge(
&g, to, from, cost);
    }

    
for (i = 0; i < C; i++)
        scanf(
"%d"&loc[i]);

    graph_spfa(
&g, 1);
    cnt 
= 0;
    
for (i = 0; i < C; i++)
        cnt 
+= (g.min_dis[loc[i]] <= M);
    printf(
"%d\n", cnt);
    
for (i = 0; i < C; i++)
        
if (g.min_dis[loc[i]] <= M)
            printf(
"%d\n", i + 1);

    
return 0;
}

posted @ 2010-04-06 23:42 糯米 閱讀(403) | 評論 (1)編輯 收藏

POJ 2135 Farm Tour 最小費用最大流

     摘要: 第一次寫這玩意,還真有點麻煩,出了點問題。然后看了一下別人的代碼,發現雙向邊,要分成兩個單向邊來插入。長見識了。而且費用的值有正有負,最好用SPFA來找最短路徑。思路:建立一個超級源點,跟點1連起來,容量為2。建立一個超級匯點,跟點N連起來,容量為2。其他的邊容量均為1。#include <stdio.h>#include <stdlib.h>#inc...  閱讀全文

posted @ 2010-04-06 23:40 糯米 閱讀(811) | 評論 (4)編輯 收藏

POJ 3049 Securing the Barn 水題/搜索

#include <stdio.h>

int L, C;
char path[26], arr[26], map[256];

void dfs(int i, int vowels, int idx)
{
    
if (idx == L) {
        
if (vowels)
            printf(
"%s\n", path);
        
return ;
    }

    
for ( ; i <= C - L + idx; i++{
        path[idx] 
= arr[i];
        dfs(i 
+ 1, vowels + (arr[i] == 'a' || arr[i] == 'e' || 
                             arr[i] 
== 'i' || arr[i] == 'o' || 
                             arr[i] 
== 'u'), 
            idx 
+ 1);
    }

}


int main()
{
    
int i, j;
    
char str[8];

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%d%d"&L, &C);
    
for (i = 0; i < C; i++{
        scanf(
"%s", str);
        map[str[
0]]++;
    }

    j 
= 0;
    
for (i = 'a'; i <= 'z'; i++)
        
if (map[i])
            arr[j
++= i;
    path[L] 
= 0;
    dfs(
000);

    
return 0;
}

posted @ 2010-04-06 23:34 糯米 閱讀(370) | 評論 (0)編輯 收藏

POJ 2395 Out of Hay 二分+深搜

思路:

留意到題目里面有一句話“All farms are connected one way or another to Farm 1.”。
這貌似說明圖一開始就是連通的。

二分答案,判斷依據是:
如果將大于某個長度的邊都去掉以后,圖就不連通了。
那這個長度相對答案來說,一定是大了。


#include <stdio.h>

#define MAX_M 10032
#define MAX_N 2048

struct edge_node {
    
int idx, len;
    
struct edge_node *next;
}
;

struct edge_node edges[MAX_M*2], *map[MAX_N];
int N, M, vis[MAX_N], tm, stk[MAX_N], *sp;

inline 
int can(int limit)
{
    
int cnt;
    
struct edge_node *e;

    tm
++;
    sp 
= stk;
    
*sp++ = 1;
    vis[
1= tm;
    cnt 
= 0;
    
while (sp > stk) {
        sp
--;
        cnt
++;
        
for (e = map[*sp]; e; e = e->next) {
            
if (vis[e->idx] == tm || e->len > limit) 
                
continue;
            vis[e
->idx] = tm;
            
*sp++ = e->idx;
        }

    }


    
return cnt == N;
}


inline 
void insert(struct edge_node *e, int a, int b, int len)
{
    e
->idx = b;
    e
->len = len;
    e
->next = map[a];
    map[a] 
= e;
}


int main()
{
    
int l, r, m, i, a, b, len;

    scanf(
"%d%d"&N, &M);
    l 
= 0x7fffffff;
    r 
= 0;
    
for (i = 0; i < M*2; i += 2{
        scanf(
"%d%d%d"&a, &b, &len);
        insert(
&edges[i], a, b, len);
        insert(
&edges[i + 1], b, a, len);
        
if (len < l)
            l 
= len;
        
if (len > r)
            r 
= len;
    }


    
while (l <= r) {
        m 
= (l + r) / 2;
        
if (!can(m))
            l 
= m + 1;
        
else
            r 
= m - 1;
    }

    printf(
"%d\n", r + 1);

    
return 0;
}


posted @ 2010-04-06 23:33 糯米 閱讀(270) | 評論 (0)編輯 收藏

POJ 2393 Yogurt factory 水題

思路:

每天要么以今天的價格買入,要么前面某天買了存在倉庫里。不存在一半是今天買的,一半是從倉庫拿的,這種情況。
因為如果這樣,肯定有一半具有更高的性價比,那就全部都改成更高性價比的方式就好了。。
所以,這題只需要保存一個當前的最大值,掃描一遍就能出結果了。瞬間就淪為一道水題了。還以為要大動作的呢。

#include <stdio.h>

__int64 N, S;

__inline __int64 min(__int64 a, __int64 b)
{
    
return a < b ? a : b;
}


int main()
{
    __int64 best, i, c, y, sum, inc;

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%I64d%I64d"&N, &S);
    best 
= 1LL << 60;
    sum 
= 0;
    inc 
= (N - 1* S;
    
for (i = 0; i < N; i++{
        scanf(
"%I64d%I64d"&c, &y);
        best 
= min(best, c + inc);
        sum 
+= y * (best - inc);
        inc 
-= S;
    }

    printf(
"%I64d\n", sum);

    
return 0;
}

posted @ 2010-04-06 23:22 糯米 閱讀(472) | 評論 (0)編輯 收藏

POJ 2230 Watchcow 深搜

思路:

深搜的時候,可以生成一棵樹。
深搜也就是深度遍歷這棵樹,把遍歷的路徑打印出來,就解決了一部分邊了,這部分邊都是經過兩次的,來一次去一次。
剩下的邊,就是遍歷的時候正在訪問的節點與已經訪問的節點之間的邊,很容易的判斷的。同樣把這部分路徑也打印出來。
后來看了 Discuss 才發現,這個東西叫做“歐拉回路”,又長見識了。

代碼
#include <stdio.h>

#define MAX_M 50032
#define MAX_N 10032

int N, M;

struct edge_node {
    
int vis, to;
    
struct edge_node *next;
}
;
struct edge_node edges[MAX_M * 2], *map[MAX_N];
int edges_cnt, vis[MAX_N];

inline 
void insert(struct edge_node *e, int from, int to)
{
    e
->to = to;
    e
->next = map[from];
    map[from] 
= e;
}


void dfs(int idx)
{
    
struct edge_node *e;
    
int i;

    vis[idx] 
= 1;
    printf(
"%d\n", idx);

    
for (e = map[idx]; e; e = e->next) {
        i 
= e - edges;
        
if (vis[e->to]) {
            
if (e->vis)
                
continue;
            edges[i].vis 
= 1;
            edges[i 
^ 1].vis = 1;
            printf(
"%d\n%d\n", e->to, idx);
            
continue;
        }

        edges[i].vis 
= 1;
        edges[i 
^ 1].vis = 1;
        dfs(e
->to);
        printf(
"%d\n", idx);
    }

}


int main()
{
    
int from, to, i;

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%d%d"&N, &M);
    
for (i = 0; i < M*2; i += 2{
        scanf(
"%d%d"&from, &to);
        insert(
&edges[i], from, to);
        insert(
&edges[i + 1], to, from);
    }

    dfs(
1);

    
return 0;
}

posted @ 2010-04-06 22:55 糯米 閱讀(386) | 評論 (0)編輯 收藏

POJ 1659 Frogs' Neighborhood 搜索

 

#include <stdio.h>
#include 
<string.h>

int T, N, arr[16], map[16][16];

int dfs(int idx, int i)
{
    
if (idx >= N)
        
return 1;
    
if (!arr[idx])
        
return dfs(idx + 1, idx + 2);
    
for ( ; i < N; i++{
        
if (!arr[i])
            
continue;
        arr[i]
--;
        arr[idx]
--;
        map[idx][i]
++;
        map[i][idx]
++;
        
if (dfs(idx, i + 1))
            
return 1;
        arr[i]
++;
        arr[idx]
++;
        map[idx][i]
--;
        map[i][idx]
--;
    }

    
return 0;
}


int main()
{
    
int i, j;

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%d"&T);
    
while (T--{
        scanf(
"%d"&N);
        
for (i = 0; i < N; i++)
            scanf(
"%d"&arr[i]);
        memset(map, 
0sizeof(map));
        
if (dfs(01)) {
            printf(
"YES\n");
            
for (i = 0; i < N; i++{
                
for (j = 0; j < N; j++)
                    printf(
"%d ", map[i][j]);
                printf(
"\n");
            }

            printf(
"\n");
        }
 else 
            printf(
"NO\n\n");
    }


    
return 0;
}

posted @ 2010-04-06 22:44 糯米 閱讀(185) | 評論 (0)編輯 收藏

僅列出標題
共17頁: 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>
            夜夜精品视频| 中日韩高清电影网| 久久精品亚洲国产奇米99| 亚洲毛片播放| 国产精品国产| 这里是久久伊人| 欧美一级视频| 永久免费精品影视网站| 麻豆freexxxx性91精品| 久久久99国产精品免费| 亚洲美女av黄| 亚洲私人影院| 美女视频黄免费的久久| 久久精品国产欧美亚洲人人爽| 欧美一区二区三区久久精品| 91久久精品国产91久久性色| 亚洲主播在线播放| 亚洲性图久久| 久久精品理论片| 韩日成人av| 亚洲精品一二三| 狠狠色综合色区| 国产精品久久久久久户外露出 | 亚洲在线第一页| 久久经典综合| 亚洲高清资源| 欧美成人一区二免费视频软件| 亚洲成人自拍视频| 亚洲精品国久久99热| 男女激情久久| 欧美国产日韩一二三区| 国产精品男gay被猛男狂揉视频| 欧美女主播在线| 国产精品一区二区三区久久久| 韩国一区二区三区在线观看| 亚洲精品一区在线观看香蕉| 亚洲自拍偷拍一区| 久久久综合视频| 久久精品一区二区三区中文字幕| 亚洲国内精品在线| 欧美一区二区视频在线| 欧美精品aa| 国产欧美韩国高清| 99v久久综合狠狠综合久久| 欧美怡红院视频| 欧美国产日产韩国视频| 亚洲专区国产精品| 欧美片第1页综合| 亚洲第一精品夜夜躁人人躁| 亚洲一区二区成人| 亚洲国产成人精品久久| 欧美在线观看网址综合| 欧美日韩四区| 亚洲黄色免费网站| 欧美色综合天天久久综合精品| 国产欧美在线看| 午夜视频在线观看一区二区| 麻豆精品视频| 一区二区三区自拍| 欧美一级理论片| 亚洲网站视频福利| 欧美日韩国产一区精品一区| 亚洲精品免费一区二区三区| 老司机凹凸av亚洲导航| 午夜精品99久久免费| 国产欧美亚洲视频| 欧美一区二区视频97| 亚洲专区欧美专区| 国产亚洲福利一区| 久久久久久一区二区| 亚洲欧美一区二区视频| 国产性色一区二区| 久久久免费av| 蜜臀av国产精品久久久久| 久久亚洲精品中文字幕冲田杏梨| 欧美成人日本| 欧美jizzhd精品欧美喷水| 亚洲国产精品嫩草影院| 欧美va天堂在线| 久久综合综合久久综合| 亚洲人久久久| 日韩亚洲一区在线播放| 欧美日韩影院| 欧美一级在线视频| 亚洲欧美日韩国产一区二区| 国产精品午夜国产小视频| 午夜视频在线观看一区二区| 欧美在线观看网址综合| 在线观看国产一区二区| 亚洲国产黄色片| 欧美另类99xxxxx| 欧美黄色一区二区| 另类专区欧美制服同性| 欧美成人免费小视频| 亚洲最新合集| 制服诱惑一区二区| 国产综合视频| 亚洲黄色成人| 欧美午夜视频在线观看| 欧美伊人久久久久久午夜久久久久| 新狼窝色av性久久久久久| 伊人伊人伊人久久| 日韩亚洲综合在线| 国语自产精品视频在线看| 亚洲美女视频在线观看| 国产午夜精品全部视频播放| 亚洲高清av在线| 国产日韩精品入口| 欧美成人一区二区在线| 国产精品福利网| 久久综合狠狠| 国产精品久久久亚洲一区| 美女视频一区免费观看| 欧美日韩黄色大片| 裸体一区二区三区| 欧美日韩一区二区高清| 久久精品免费电影| 欧美日韩综合视频| 亚洲激情av| 影音先锋欧美精品| 日韩系列在线| 欧美一级大片在线免费观看| 欧美在线一级视频| 欧美日韩不卡| 亚洲风情亚aⅴ在线发布| 国产精品视频导航| 亚洲黄色在线视频| 亚洲电影第1页| 91久久国产综合久久91精品网站| 樱桃国产成人精品视频| 午夜精品久久久久久久久久久久久| 日韩视频一区二区三区在线播放 | 亚洲欧美在线一区| 亚洲午夜电影| 欧美视频中文在线看| 国产综合精品| 香蕉国产精品偷在线观看不卡| 国产视频一区二区在线观看| 日韩一级二级三级| 亚洲青涩在线| 美女网站久久| 亚洲精品网站在线播放gif| 久久国产欧美日韩精品| 亚洲欧美中文另类| 国产精品亚洲人在线观看| 日韩视频一区二区| 亚洲视频碰碰| 国产精品二区三区四区| 一区二区三区久久网| 亚洲欧美成人网| 欧美黄色免费网站| 亚洲另类一区二区| 性8sex亚洲区入口| 国产精品日韩欧美| 欧美亚洲综合另类| 老司机精品视频一区二区三区| 国内精品久久久久久影视8| 久久国产精品高清| 亚洲二区视频| 欧美人成在线视频| 亚洲一级二级在线| 久久艳片www.17c.com| 亚洲激情黄色| 欧美视频手机在线| 亚洲与欧洲av电影| 国产精品午夜电影| 久久久精品五月天| 亚洲日本va在线观看| 99视频国产精品免费观看| 久久精品视频网| 亚洲黄一区二区| 国产婷婷97碰碰久久人人蜜臀| 久久精品国产999大香线蕉| 欧美激情第一页xxx| 亚洲视频精选在线| 怡红院精品视频| 欧美午夜精品久久久| 翔田千里一区二区| 亚洲国产精品久久久久| 性欧美大战久久久久久久久| 精久久久久久| 国产精品视频免费在线观看| 麻豆精品传媒视频| 午夜精品久久久久久久久久久久| 欧美成人免费全部| 欧美在线观看视频| 日韩网站在线| 影音先锋在线一区| 欧美日韩亚洲视频一区| 久久久久综合网| 日韩亚洲欧美成人一区| 国产亚洲精品久| 欧美激情91| 午夜精品99久久免费| 日韩视频在线你懂得| 欧美成人精品一区| 久久久成人网| 欧美一区二区福利在线| 在线中文字幕日韩| 亚洲精品视频在线看|