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

【AHOI2013復仇】NOI2012 park 一種巨另類的做法

Posted on 2012-09-08 19:27 Mato_No1 閱讀(440) 評論(0)  編輯 收藏 引用 所屬分類: NOI遞推
原題地址
這個算法是由本沙茶在現場使用的那個做法擴展得來的……其實AC不了,后兩個點會因為常數過大而T掉……但在BZOJ上算總時間的話能AC……

首先考慮樹的情形。設F[i]為從點i開始,往子樹i里面走,到達葉結點的期望長度,則很容易得到遞推公式:
F[i] = (ΣF[j] + W(i, j)) / K,其中j是i的子結點,K是i的子結點個數。
至于這個式子的證明……很容易搞的,就不說了囧。
這樣,可以在O(N)時間內求出以樹根為起點的期望長度。那么,以其它點為起點的期望長度如何得到?
我們定義一種“扭根”操作(類似平衡樹中的旋轉),可以把根結點的一個子結點“扭”到根上,并使根結點作為它的子結點(也就是把父子關系交換一下)。容易發現,每次“扭根”之后,只有原來的根結點和現在的根結點這兩個結點的子結點發生了變化,因此,也只有這兩個結點的F值可能發生變化,只需要重新求一下即可(其實不用重新求,只需要維護一個KS[]值表示某個結點的子結點個數,然后在維護的時候加上或減去相應項,并維護KS即可,這樣可以確保每次維護的時間復雜度為O(1))。注意“扭根”的順序,需要按照DFS序,而且在遍歷完一個結點回退的時候也要順便“扭”回來。這樣,就可以在O(N)的時間內得出以每個點為起點的期望長度,取它們的平均值即可。

然后考慮有環的情形,注意到,環上的結點數很少。由于只有一個環,所以先化為無向環套樹形式。
設A為環上的一個結點。從A開始走,有可能走到它自己的樹里,也有可能沿著環走到其它樹里,但是,A在環上的兩條鄰邊不可能都走到。也就是,可以枚舉是左鄰邊走不到還是右鄰邊走不到,并將這條邊刪除(反正走不到,要了不如不要),這樣就變成了一棵樹,對這棵樹按照上面的算法求F值,即可求出以A為起點,某一條鄰邊走不到情況下的期望長度。這里需要特別注意的是,在求F[A]時,最后除的那個數不是K,而是(K+1),因為雖然這條鄰邊刪掉了,但為了防止它走到還是要考慮一下的 。設F1[A]為A的左鄰邊走不到時的以A為起點的期望長度,F2[A]為A的右鄰邊走不到時的以A為起點的期望長度(本沙茶在代碼里全用F1表示了囧),這其中有相同的部分,就是A的兩條鄰邊都走不到時的期望長度,此時就是往A的樹內走,按照樹的求法求即可,注意求F[A]時除的是(K+2),F1[A]+F2[A]再把這個相同的部分減掉,就是以A為起點的期望長度了。然后,采用“扭根”操作可以求出以A樹中所有結為起點的期望長度。枚舉環上的所有結點,按照上述辦法,就可以得到結果了。總時間復雜度為O(MN),M為環上結點總數。

代碼:
#include <iostream>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
using namespace std;
#define re(i, n) for (int i=0; i<n; i++)
#define re1(i, n) for (int i=1; i<=n; i++)
#define re2(i, l, r) for (int i=l; i<r; i++)
#define re3(i, l, r) for (int i=l; i<=r; i++)
#define rre(i, n) for (int i=n-1; i>=0; i--)
#define rre1(i, n) for (int i=n; i>0; i--)
#define rre2(i, r, l) for (int i=r-1; i>=l; i--)
#define rre3(i, r, l) for (int i=r; i>=l; i--)
#define ll long long
const int MAXN = 100010, INF = ~0U >> 2;
struct edge {
    
int a, b, w, pre, next;
    
bool mr;
} E0[(MAXN 
+ 1* 3], E[MAXN << 2];
int n, _n, m0, m, stk[MAXN], st[MAXN], pr[MAXN], pos_z, ts_len, TS[MAXN], Q[MAXN], pr1[MAXN], pr2[MAXN], lt[MAXN << 1], KS[MAXN];
bool loop_ex, vst[MAXN];
double F1[MAXN], F2[MAXN], res = 0;
void init_d0()
{
    re(i, n) E0[i].pre 
= E0[i].next = i; if (n & 1) m0 = n + 1else m0 = n;
}
void init_d()
{
    re(i, n) E[i].pre 
= E[i].next = i; m = n;
}
void add_edge0(int a, int b, int w)
{
    E0[m0].a 
= a; E0[m0].b = b; E0[m0].w = w; E0[m0].mr = 0; E0[m0].pre = E0[a].pre; E0[m0].next = a; E0[a].pre = m0; E0[E0[m0].pre].next = m0++;
    E0[m0].a 
= b; E0[m0].b = a; E0[m0].w = w; E0[m0].mr = 0; E0[m0].pre = E0[b].pre; E0[m0].next = b; E0[b].pre = m0; E0[E0[m0].pre].next = m0++;
}
void del_edge0(int No)
{
    E0[E0[No].pre].next 
= E0[No].next; E0[E0[No].next].pre = E0[No].pre;
    E0[E0[No 
^ 1].pre].next = E0[No ^ 1].next; E0[E0[No ^ 1].next].pre = E0[No ^ 1].pre;
}
void resu_edge0(int No)
{
    E0[E0[No].pre].next 
= E0[E0[No].next].pre = No;
    E0[E0[No 
^ 1].pre].next = E0[E0[No ^ 1].next].pre = No ^ 1;
}
void add_edge(int a, int b, int w, bool mr)
{
    E[m].a 
= a; E[m].b = b; E[m].w = w; E[m].mr = mr; E[m].pre = E[a].pre; E[m].next = a; E[a].pre = m; E[E[m].pre].next = m++;
}
void del_edge(int No)
{
    E[E[No].pre].next 
= E[No].next; E[E[No].next].pre = E[No].pre;
}
void resu_edge(int No)
{
    E[E[No].pre].next 
= E[E[No].next].pre = No;
}
void init()
{
    
int m00, a0, b0, w0;
    scanf(
"%d%d"&n, &m00); loop_ex = m00 == n; init_d0();
    re(i, m00) {
        scanf(
"%d%d%d"&a0, &b0, &w0);
        add_edge0(
--a0, --b0, w0);
    }
}
void prepare()
{
    re(i, n) {st[i] 
= E0[i].next; vst[i] = 0;}
    
int x, y, tp = 0bool FF; stk[0= 0; vst[0= 1; pos_z = pr[0= -1;
    
while (tp >= 0) {
        x 
= stk[tp]; FF = 0;
        
for (int p=st[x]; p != x; p=E0[p].next) {
            y 
= E0[p].b;
            
if (!vst[y]) {
                vst[y] 
= FF = 1; stk[++tp] = y; pr[y] = p; st[x] = E0[p].next; break;
            } 
else if (p != (pr[x] ^ 1&& pos_z == -1) pos_z = p;
        }
        
if (!FF) tp--;
    }
    x 
= E0[pos_z].a; y = E0[pos_z].b; E0[pos_z].mr = E0[pos_z ^ 1].mr = 1; ts_len = 0;
    
while (x != y) {TS[ts_len++= x; E0[pr[x]].mr = E0[pr[x] ^ 1].mr = 1; x = E0[pr[x]].a;} TS[ts_len++= y;
}
void mkt(int z)
{
    init_d(); re(j, n) vst[j] 
= 0;
    
int x, y; Q[0= z; vst[z] = 1;
    
for (int front=0, rear=0; front<=rear; front++) {
        x 
= Q[front];
        
for (int p=E0[x].next; p != x; p=E0[p].next) {
            y 
= E0[p].b;
            
if (!vst[y]) {
                vst[y] 
= 1; Q[++rear] = y; pr1[y] = m; add_edge(x, y, E0[p].w, E0[p].mr);
            }
        }
    }
}
void mkt2(int z)
{
    init_d(); re(j, n) vst[j] 
= 0;
    
int x, y, front, rear; Q[0= z; vst[z] = 1;
    
for (front=0, rear=0; front<=rear; front++) {
        x 
= Q[front];
        
for (int p=E0[x].next; p != x; p=E0[p].next) if (!E0[p].mr) {
            y 
= E0[p].b;
            
if (!vst[y]) {
                vst[y] 
= 1; Q[++rear] = y; pr1[y] = m; add_edge(x, y, E0[p].w, 0);
            }
        }
    }
    _n 
= rear + 1;
}
void solve()
{
    
int x, y, z, sum, tp, lt_len; bool FF;
    
if (loop_ex) {
        prepare();
        re(i, ts_len) {
            x 
= TS[i];
            
if (i == ts_len - 1) del_edge0(pos_z); else del_edge0(pr[x]);
            mkt(x);
            rre(j, n) {
                y 
= Q[j]; if (E[y].next == y) {F1[y] = 0continue;}
                
if (y == x) sum = 1else sum = 0; F1[y] = 0;
                
for (int p=E[y].next; p != y; p=E[p].next) {
                    z 
= E[p].b; F1[y] += F1[z] + E[p].w; sum++;
                }
                F1[y] 
/= sum; KS[y] = sum;
            }
            res 
+= F1[x];
            re(j, n) {st[j] 
= E[j].next; vst[j] = 0;} lt_len = 0; stk[tp = 0= x;
            
while (tp >= 0) {
                y 
= stk[tp]; FF = 0;
                
for (int p=st[y]; p != y; p=E[p].next) if (!E[p].mr) {
                    z 
= E[p].b;
                    
if (!vst[z]) {
                        vst[z] 
= FF = 1; stk[++tp] = z; lt[lt_len++= z; break;
                    }
                }
                
if (!FF) {lt[lt_len++= -- 1; tp--;}
            }
            
if (lt_len == 1) lt_len = 0;
            re(j, lt_len) {
                y 
= lt[j];
                
if (y >= 0) {
                    z 
= E[pr1[y]].a; del_edge(pr1[y]); pr2[z] = m; add_edge(y, z, E[pr1[y]].w, 0);
                    
if (E[z].next == z) {F1[z] = 0; KS[z] = 0;} else {F1[z] *= KS[z]--; F1[z] -= E[pr1[y]].w + F1[y]; F1[z] /= KS[z];}
                    
if (E[y].next == y) {F1[y] = 0; KS[y] = 0;} else {F1[y] *= KS[y]++; F1[y] += E[pr1[y]].w + F1[z]; F1[y] /= KS[y];}
                    res 
+= F1[y];
                } 
else {
                    y 
= -- 1;
                    z 
= E[pr1[y]].a; del_edge(pr2[z]); resu_edge(pr1[y]);
                    
if (E[y].next == y) {F1[y] = 0; KS[y] = 0;} else {F1[y] *= KS[y]--; F1[y] -= E[pr2[z]].w + F1[z]; F1[y] /= KS[y];}
                    
if (E[z].next == z) {F1[z] = 0; KS[z] = 0;} else {F1[z] *= KS[z]++; F1[z] += E[pr2[z]].w + F1[y]; F1[z] /= KS[z];}
                }
            }
            
if (i == ts_len - 1) resu_edge0(pos_z); else resu_edge0(pr[x]);
            
if (!i) del_edge0(pos_z); else del_edge0(pr[TS[i - 1]]);
            mkt(x);
            rre(j, n) {
                y 
= Q[j]; if (E[y].next == y) {F1[y] = 0continue;}
                
if (y == x) sum = 1else sum = 0; F1[y] = 0;
                
for (int p=E[y].next; p != y; p=E[p].next) {
                    z 
= E[p].b; F1[y] += F1[z] + E[p].w; sum++;
                }
                F1[y] 
/= sum; KS[y] = sum;
            }
            res 
+= F1[x];
            re(j, n) {st[j] 
= E[j].next; vst[j] = 0;} lt_len = 0; stk[tp = 0= x;
            
while (tp >= 0) {
                y 
= stk[tp]; FF = 0;
                
for (int p=st[y]; p != y; p=E[p].next) if (!E[p].mr) {
                    z 
= E[p].b;
                    
if (!vst[z]) {
                        vst[z] 
= FF = 1; stk[++tp] = z; lt[lt_len++= z; break;
                    }
                }
                
if (!FF) {lt[lt_len++= -- 1; tp--;}
            }
            
if (lt_len == 1) lt_len = 0;
            re(j, lt_len) {
                y 
= lt[j];
                
if (y >= 0) {
                    z 
= E[pr1[y]].a; del_edge(pr1[y]); pr2[z] = m; add_edge(y, z, E[pr1[y]].w, 0);
                    
if (E[z].next == z) {F1[z] = 0; KS[z] = 0;} else {F1[z] *= KS[z]--; F1[z] -= E[pr1[y]].w + F1[y]; F1[z] /= KS[z];}
                    
if (E[y].next == y) {F1[y] = 0; KS[y] = 0;} else {F1[y] *= KS[y]++; F1[y] += E[pr1[y]].w + F1[z]; F1[y] /= KS[y];}
                    res 
+= F1[y];
                } 
else {
                    y 
= -- 1;
                    z 
= E[pr1[y]].a; del_edge(pr2[z]); resu_edge(pr1[y]);
                    
if (E[y].next == y) {F1[y] = 0; KS[y] = 0;} else {F1[y] *= KS[y]--; F1[y] -= E[pr2[z]].w + F1[z]; F1[y] /= KS[y];}
                    
if (E[z].next == z) {F1[z] = 0; KS[z] = 0;} else {F1[z] *= KS[z]++; F1[z] += E[pr2[z]].w + F1[y]; F1[z] /= KS[z];}
                }
            }
            
if (!i) resu_edge0(pos_z); else resu_edge0(pr[TS[i - 1]]);
            mkt2(x);
            rre(j, _n) {
                y 
= Q[j]; if (E[y].next == y) {F1[y] = 0continue;}
                
if (y == x) sum = 2else sum = 0; F1[y] = 0;
                
for (int p=E[y].next; p != y; p=E[p].next) {
                    z 
= E[p].b; F1[y] += F1[z] + E[p].w; sum++;
                }
                F1[y] 
/= sum; KS[y] = sum;
            }
            res 
-= F1[x];
            re(j, n) {st[j] 
= E[j].next; vst[j] = 0;} lt_len = 0; stk[tp = 0= x;
            
while (tp >= 0) {
                y 
= stk[tp]; FF = 0;
                
for (int p=st[y]; p != y; p=E[p].next) {
                    z 
= E[p].b;
                    
if (!vst[z]) {
                        vst[z] 
= FF = 1; stk[++tp] = z; lt[lt_len++= z; break;
                    }
                }
                
if (!FF) {lt[lt_len++= -- 1; tp--;}
            }
            
if (lt_len == 1) lt_len = 0;
            re(j, lt_len) {
                y 
= lt[j];
                
if (y >= 0) {
                    z 
= E[pr1[y]].a; del_edge(pr1[y]); pr2[z] = m; add_edge(y, z, E[pr1[y]].w, 0);
                    
if (E[z].next == z) {F1[z] = 0; KS[z] = 0;} else {F1[z] *= KS[z]--; F1[z] -= E[pr1[y]].w + F1[y]; F1[z] /= KS[z];}
                    
if (E[y].next == y) {F1[y] = 0; KS[y] = 0;} else {F1[y] *= KS[y]++; F1[y] += E[pr1[y]].w + F1[z]; F1[y] /= KS[y];}
                    res 
-= F1[y];
                } 
else {
                    y 
= -- 1;
                    z 
= E[pr1[y]].a; del_edge(pr2[z]); resu_edge(pr1[y]);
                    
if (E[y].next == y) {F1[y] = 0; KS[y] = 0;} else {F1[y] *= KS[y]--; F1[y] -= E[pr2[z]].w + F1[z]; F1[y] /= KS[y];}
                    
if (E[z].next == z) {F1[z] = 0; KS[z] = 0;} else {F1[z] *= KS[z]++; F1[z] += E[pr2[z]].w + F1[y]; F1[z] /= KS[z];}
                }
            }
        }
    } 
else {
        mkt(
0);
        rre(i, n) {
            y 
= Q[i]; if (E[y].next == y) {F1[y] = 0continue;}
            sum 
= 0; F1[y] = 0;
            
for (int p=E[y].next; p != y; p=E[p].next) {
                z 
= E[p].b; F1[y] += F1[z] + E[p].w; sum++;
            }
            F1[y] 
/= sum; KS[y] = sum;
        }
        res 
+= F1[0];
        re(i, n) {st[i] 
= E[i].next; vst[i] = 0;} lt_len = 0; stk[tp = 0= 0;
        
while (tp >= 0) {
            y 
= stk[tp]; FF = 0;
            
for (int p=st[y]; p != y; p=E[p].next) if (!E[p].mr) {
                z 
= E[p].b;
                
if (!vst[z]) {
                    vst[z] 
= FF = 1; stk[++tp] = z; lt[lt_len++= z; break;
                }
            }
            
if (!FF) {lt[lt_len++= -- 1; tp--;}
        }
        re(i, lt_len) {
            y 
= lt[i];
            
if (y >= 0) {
                z 
= E[pr1[y]].a; del_edge(pr1[y]); pr2[z] = m; add_edge(y, z, E[pr1[y]].w, 0);
                
if (E[z].next == z) {F1[z] = 0; KS[z] = 0;} else {F1[z] *= KS[z]--; F1[z] -= E[pr1[y]].w + F1[y]; F1[z] /= KS[z];}
                
if (E[y].next == y) {F1[y] = 0; KS[y] = 0;} else {F1[y] *= KS[y]++; F1[y] += E[pr1[y]].w + F1[z]; F1[y] /= KS[y];}
                res 
+= F1[y];
            } 
else {
                y 
= -- 1;
                z 
= E[pr1[y]].a; del_edge(pr2[z]); resu_edge(pr1[y]);
                
if (E[y].next == y) {F1[y] = 0; KS[y] = 0;} else {F1[y] *= KS[y]--; F1[y] -= E[pr2[z]].w + F1[z]; F1[y] /= KS[y];}
                
if (E[z].next == z) {F1[z] = 0; KS[z] = 0;} else {F1[z] *= KS[z]++; F1[z] += E[pr2[z]].w + F1[y]; F1[z] /= KS[z];}
            }
        }
    }
    res 
/= n;
}
void pri()
{
    printf(
"%.5lf\n", res);
}
int main()
{
    init();
    solve();
    pri();
    
return 0;
}


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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久久黑人专区| av不卡免费看| 老司机精品视频网站| 久久精品国产精品亚洲| 性色av一区二区三区| 午夜精品在线看| 久久久综合香蕉尹人综合网| 免费人成精品欧美精品| 亚洲人成在线观看一区二区| 欧美成人高清视频| 亚洲日本在线观看| 亚洲综合日本| 久久久久久一区| 亚洲欧美www| 国产精品欧美日韩一区二区| 国产精品美女久久久久aⅴ国产馆| 国产精品免费一区豆花| 黑人一区二区三区四区五区| 亚洲电影视频在线| 一区二区激情| 性做久久久久久免费观看欧美| 久久成人av少妇免费| 亚洲精品日日夜夜| 午夜精品在线| 欧美成人69av| 国产精品午夜久久| 亚洲第一黄色| 欧美一区=区| 欧美91大片| 亚洲一区精彩视频| 欧美高清在线视频| 国产亚洲精品久| 亚洲精品一区二区在线观看| 欧美在线免费观看| 日韩一二在线观看| 老司机久久99久久精品播放免费 | 亚洲一区www| 久久天堂精品| 亚洲视频你懂的| 嫩草成人www欧美| 欧美国产激情| 欧美亚洲在线播放| 亚洲欧洲日本专区| 久久免费国产精品| 国产网站欧美日韩免费精品在线观看 | 午夜精品在线看| 欧美日韩亚洲一区二区三区四区| 一区二区三区在线看| 欧美一区二区免费观在线| 亚洲欧洲日产国产综合网| 久久久天天操| 久久精品国产亚洲a| 国产精品一区二区久激情瑜伽| 亚洲精品日本| 亚洲国产成人tv| 久久午夜精品一区二区| 激情成人综合网| 久久久久久999| 性高湖久久久久久久久| 麻豆免费精品视频| 午夜精品久久久久久99热软件| 欧美日韩一区二区高清| 99在线精品视频在线观看| 亚洲国产精品久久久久婷婷老年| 久久久久久亚洲综合影院红桃| 亚洲伊人伊色伊影伊综合网| 欧美日韩免费在线| 亚洲伊人网站| 亚洲自拍偷拍网址| 国产日本欧美一区二区三区在线| 亚洲欧美日韩久久精品| 亚洲欧美一区二区在线观看| 国产农村妇女毛片精品久久莱园子| 欧美亚洲在线播放| 免费看黄裸体一级大秀欧美| 美女诱惑一区| 99人久久精品视频最新地址| 日韩一级精品视频在线观看| 国产精品v日韩精品| 久久精品成人一区二区三区| 久久激情五月丁香伊人| 亚洲国产精品999| 国产精品美女一区二区在线观看| 国产精品免费视频xxxx| 久久久美女艺术照精彩视频福利播放| 久久精品电影| 99视频超级精品| 亚洲综合电影| 一本色道久久综合亚洲精品不卡 | 久久精品国产清自在天天线| 欧美中文字幕第一页| 在线成人av.com| 日韩午夜三级在线| 国产一区二区毛片| 亚洲二区精品| 国产欧美欧美| 日韩午夜在线视频| 亚洲一区免费视频| 亚洲欧洲精品一区二区三区不卡 | 亚洲成人在线网| 亚洲欧洲另类| 国产有码一区二区| 亚洲精品一区在线观看| 国产日韩欧美精品综合| 亚洲国产精品久久人人爱蜜臀| 国产精品xvideos88| 女仆av观看一区| 国产精品永久免费在线| 欧美激情一区三区| 国产一区二区三区不卡在线观看| 噜噜噜久久亚洲精品国产品小说| 欧美日韩国产三区| 伊人久久久大香线蕉综合直播| 亚洲另类在线一区| 亚洲第一精品夜夜躁人人躁| 欧美激情国产高清| 欧美色欧美亚洲高清在线视频| 久久综合色影院| 国产精品欧美久久| 亚洲老司机av| 亚洲精品乱码久久久久久蜜桃91| 久久精品国产77777蜜臀| 亚洲网站啪啪| 欧美精品激情在线观看| 欧美高清不卡在线| 韩日成人av| 欧美一区二区三区四区视频| 亚洲欧美日韩国产一区二区| 欧美美女视频| 亚洲黄色小视频| 在线成人亚洲| 久久免费精品日本久久中文字幕| 校园春色国产精品| 国产精品久久久久999| 亚洲美女视频在线免费观看| 亚洲精品国产拍免费91在线| 美日韩免费视频| 亚洲精品色婷婷福利天堂| 久久久久久久一区二区三区| 久久精品国产一区二区三区免费看| 国产精品久久久久久久久| 欧美一区二区三区视频在线观看| 一本色道久久综合一区| 欧美日韩精品二区| 一本色道**综合亚洲精品蜜桃冫| 这里只有精品电影| 在线成人免费观看| 欧美大片第1页| 亚洲日韩视频| 亚洲小说欧美另类社区| 国产精品久久久久久av福利软件| 亚洲私人影吧| 久久精品国产精品亚洲综合| 在线观看亚洲视频| 欧美激情一区在线观看| 99re6这里只有精品视频在线观看| 一本色道88久久加勒比精品| 欧美午夜激情视频| 性欧美暴力猛交69hd| 免费观看在线综合色| 日韩视频免费大全中文字幕| 欧美日韩一区成人| 性欧美videos另类喷潮| 亚洲成人在线免费| 国产日韩成人精品| 久久久久久久网| 亚洲人体1000| 欧美伊人久久久久久午夜久久久久 | 久久人人97超碰精品888| 久久久久高清| 99re8这里有精品热视频免费 | 一区二区三区免费观看| 亚洲私人影吧| 免费亚洲电影在线| 亚洲免费视频在线观看| 国外视频精品毛片| 欧美成人一区二区三区| 亚洲午夜一区二区| 欧美大学生性色视频| 欧美体内she精视频在线观看| 亚洲欧美日韩专区| 亚洲国产精品999| 性欧美超级视频| 亚洲激情av在线| 国产欧美一区二区三区视频| 欧美高清你懂得| 久久国产一区二区| 中文一区字幕| 国产性色一区二区| 9色精品在线| 欧美风情在线观看| 久久久国产精彩视频美女艺术照福利| 亚洲伦伦在线| 亚洲第一视频| 激情一区二区三区| 国产免费观看久久黄| 欧美人与性动交α欧美精品济南到| 久久精品国产久精国产一老狼| 亚洲欧美自拍偷拍|