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

The 36th ACM/ICPC Asia Regional Dalian Online Contest 大連2011ICPC網(wǎng)絡(luò)賽 個人題解

好久不寫題,外加上在準備考研,這次有點悲劇,比賽時A了5題,還有一題有點小BUG,比賽后才A。。今年要考南京大學(xué)~也沒時間準備ICPC了,希望我們隊里的那個小孩子能夠快快成長起來,我這個隊長也可以安心的卸任了,明年將最后一次比賽機會放在NJU吧~恩,順便去看下高中膜拜過的蔣炎研同學(xué)~江蘇大學(xué)加油!
第一題:
其實就是構(gòu)建一個DAG,然后再DAG上求最長路徑。要注意構(gòu)圖時候避免環(huán),特別考慮當(dāng)兩個木塊長寬都一致而且都是d=0類型的時候。對了,還有一個陰險的地方,長寬可以互換的~復(fù)雜度O(n2)
 1# include <cstdio>
 2# include <cstring>
 3# include <algorithm>
 4using namespace std;
 5int n;
 6# define N 1005
 7# define M 1000005
 8int data[N][4];
 9int g[N],nxt[M],v[M],val[M],c;
10long long len[N];
11long long dp(int pos)
12{
13    if(len[pos]!=-1return len[pos];
14    else
15    {
16        len[pos]=0;
17        for(int p=g[pos];p!=-1;p=nxt[p])
18            len[pos]=max(len[pos],dp(v[p])+val[p]);
19        return len[pos];
20    }

21}

22void insert(int s,int e,int value)
23{
24    v[c]=e;
25    val[c]=value;
26    nxt[c]=g[s];
27    g[s]=c++;
28}

29int main()
30{
31    while(scanf("%d",&n)&&n)
32    {
33        for(int i=0;i<n;i++)
34        {
35            scanf("%d%d%d%d",&data[i][0],&data[i][1],&data[i][2],&data[i][3]);
36            if(data[i][0]>data[i][1]) swap(data[i][0],data[i][1]);
37        }

38        memset(g,-1,sizeof(g));
39        memset(len,-1,sizeof(len));
40        c=0;
41        for(int i=0;i<n;i++)
42            for(int j=0;j<n;j++)
43                switch(data[i][3])
44                {
45                case 0:
46                    if(data[j][0]<=data[i][0]&&data[j][1]<=data[i][1]&&!(data[j][0]==data[i][0]&&data[j][1]==data[i][1]&&data[j][3]==data[i][3]&&j>=i))
47                        insert(i,j,data[j][2]);
48                    break;
49                case 1:
50                    if(data[j][0]<=data[i][0]&&data[j][1]<=data[i][1]&&((long long)data[j][0]*data[j][1])<((long long)data[i][0]*data[i][1]))
51                        insert(i,j,data[j][2]);
52                    break;
53                case 2:
54                    if(data[j][0]<data[i][0]&&data[j][1]<data[i][1])
55                        insert(i,j,data[j][2]);
56                    break;
57                }
;
58        for(int i=0;i<n;i++)
59            insert(n,i,data[i][2]);
60        printf("%I64d\n",dp(n));
61    }

62    return 0;
63}


第二題:一個數(shù)論題目,當(dāng)時沒有證明,直接找規(guī)律的,具體的就是質(zhì)數(shù)連成。恩。代碼是隊里的大一的孩子寫的,就直接貼了。復(fù)雜度打好表的畫就是個二分查找的復(fù)雜度
1#include<cstdio>
2#include<cmath>
3#include<cstdlib>
4#include<cstring>
5
6using namespace std;
7
8const int tablesize=64;
9const int primesize=2000;
10bool isprime[primesize+1];
11int pt[primesize];
12int mytable[tablesize+1][150];
13inline void multiple(int* a,int b);
14void getprime(int n);
15void getmytable(int tablesize);
16void getdata_and_solve();
17void find_the_ans(char* ts);
18void zhuanhuan(int* a,char* ts);
19int dayu(int* a,int* b);
20
21int main()
22{
23 getprime(primesize);
24 getmytable(tablesize);
25 getdata_and_solve();
26 return 0;
27}

28
29inline void multiple(int* a,int b)
30{
31 int len=a[0];
32 int i;
33 a[1]*=b;
34 for (i=2;i<=len;++i)
35 {
36 a[i]=a[i]*b+a[i-1]/10;
37 a[i-1]%=10;
38 }

39 while (a[len]>9) {++len; a[len]=a[len-1]/10; a[len-1]%=10;}
40 a[0]=len;
41}

42
43void getprime(int n)
44{
45 int i;
46 for (i=1;i<=n;++i) isprime[i]=true;
47 isprime[1]=false;
48 int j;
49 i=1;
50 while (++i<=n)
51 if (isprime[i])
52 {
53 j=i;
54 while ((j+=i)<=n)
55 isprime[j]=false;
56 }

57 pt[0]=0;
58 for (i=1;i<=n;++i)
59 if (isprime[i]) pt[++pt[0]]=i;
60}

61
62void getmytable(int tablesize)
63{
64 int j,i,len;
65 mytable[1][0]=1; mytable[1][1]=2;
66 for (i=2;i<=tablesize;++i)
67 {
68 len=mytable[i-1][0];
69 for (j=0;j<=len;++j)
70 mytable[i][j]=mytable[i-1][j];
71 multiple(mytable[i],pt[i]);
72 }

73}

74
75void getdata_and_solve()
76{
77 char ts[200];
78 int n;
79 scanf("%d",&n);
80 getchar();
81 int i;
82 for (i=1;i<=n;++i)
83 {
84 gets(ts);
85 find_the_ans(ts);
86 }

87}

88
89void find_the_ans(char* ts)
90{
91 int l=1,r=tablesize;
92 int mid;
93 int shuju[150];
94 zhuanhuan(shuju,ts);
95 int lena,lenb=shuju[0];
96 int flag;
97 int i;
98 while (l+1<r)
99 {
100 mid=((l+r)>>1);
101 lena=mytable[mid][0];
102 if (lena>lenb) flag=1; //a>b;
103 else
104 if (lena<lenb) flag=-1; //a<b;
105 else
106 {
107 flag=0;
108 for (i=lena;i>=1;--i)
109 {
110 if (mytable[mid][i]>shuju[i]) {flag=1; break;}
111 else if (mytable[mid][i]<shuju[i]) {flag=-1; break;}
112 }

113 }

114
115 if (flag==0) {l=mid; break;}
116 else if(flag==1) r=mid;
117 else l=mid;
118 }

119
120 for (i=mytable[l][0];i>=1;--i) printf("%d",mytable[l][i]);
121 putchar('\n');
122}

123
124 void zhuanhuan(int* a,char* ts)
125{
126 int len=strlen(ts);
127 int i;
128 for (i=0;i<len;++i)
129 a[len-i]=ts[i]-'0';
130 a[0]=len;
131}

132

1003 是個TREE-DP,好久不動了,不敢寫。。等會來實現(xiàn)下
1004 一個二分+驗證的問題。先二分最長長度,然后用BFS驗證。其實都不用BFS,因為是個嚴格單調(diào)的序列,直接DFS更簡單
1# include <cstdio>
2# include <algorithm>
3# include <queue>
4using namespace std;
5int n,m,l;
6# define N 500005
7int d[N],dis[N];
8queue<int> q;
9bool chk(int len)
10{
11 if(len>=l) return true;
12 while(!q.empty()) q.pop();
13 int pos=upper_bound(d,d+n,len)-d-1;
14 if(pos<0) return false;
15 dis[pos]=1;
16 if(m<=dis[pos]) return false;
17 q.push(pos);
18 while(!q.empty())
19 {
20 int top=q.front();
21 q.pop();
22 if(d[top]+len>=l) return true;
23 pos=upper_bound(d,d+n,d[top]+len)-d-1;
24 if(pos<0||d[pos]<=d[top]||dis[top]+1>=m) return false;
25 dis[pos]=dis[top]+1;
26 q.push(pos);
27 }

28 return false;
29}

30int main()
31{
32 while(scanf("%d%d%d",&l,&n,&m)!=EOF)
33 {
34 for(int i=0;i<n;i++)
35 scanf("%d",d+i);
36 sort(d,d+n);
37 int s=0,e=l;
38 while(s<=e)
39 {
40 int mid=(s+e)/2;
41 if(chk(mid)) e=mid-1;
42 else s=mid+1;
43 }

44 printf("%d\n",e+1);
45 }

46 return 0;
47}

1005 木有思想
1006這題NC了,當(dāng)時想都沒想直接手寫樹狀數(shù)組+二分,現(xiàn)在想想看這題條件太特殊了,詢問的位置是一定的,就是一個簡單的最小堆= =。。。不過還是把樹狀數(shù)組的NC版本代碼貼出來吧。。
Title
1# include <cstdio>
2# include <cstring>
3# include <vector>
4# include <utility>
5# include <functional>
6# include <algorithm>
7using namespace std;
8# define N 1000005
9int arr[N],maxnum;
10# define lowbit(num) ((num)&-(num))
11pair<bool,int> q[N];
12vector<int> list;
13void add(int val)
14{
15 for(;val<=maxnum;val+=lowbit(val))
16 arr[val]++;
17}

18int sum(int pos)
19{
20 int res=0;
21 for(;pos>0;pos-=lowbit(pos))
22 res+=arr[pos];
23 return res;
24}

25int search(int m)
26{
27 int s=1,e=maxnum,total=sum(maxnum);
28 while(s<=e)
29 {
30 int mid=(s+e)/2;
31 if(total-sum(mid-1)>=m) s=mid+1;
32 else e=mid-1;
33 }

34 return s-1;
35}

36int main()
37{
38 int n,m;
39 while(scanf("%d%d",&n,&m)!=EOF)
40 {
41 list.clear();
42 memset(arr,0,sizeof(arr));
43 for(int i=0;i<n;i++)
44 {
45 char type[5];
46 scanf("%s",type);
47 if(type[0]=='I')
48 {
49 q[i].first=true;
50 scanf("%d",&q[i].second);
51 list.push_back(q[i].second);
52 }

53 else q[i].first=false;
54 }

55 sort(list.begin(),list.end());
56 maxnum=list.size();
57 for(int i=0;i<n;i++)
58 {
59 if(q[i].first)
60 add(lower_bound(list.begin(),list.end(),q[i].second)-list.begin()+1);
61 else
62 printf("%d\n",list[search(m)-1]);
63 }

64 }

65 return 0;
66}

1007 一個經(jīng)典的動態(tài)統(tǒng)計,我寫這類題目時都會很偷懶的用STL的set,呵呵~
Title
1# include <cstdio>
2# include <algorithm>
3# include <utility>
4# include <functional>
5# include <map>
6using namespace std;
7int n,r;
8# define N 1005
9pair<int,int> data[N];
10map<int,int> refer;
11bool cmpy(const pair<int,int> &a,const pair<int,int> &b)
12{
13 return a.second<b.second;
14}

15void cal(int &maxnum)
16{
17 if(refer.empty()) return;
18 int total=0;
19 map<int,int>::iterator last=refer.begin();
20 for(map<int,int>::iterator i=refer.begin();i!=refer.end();i++)
21 {
22 while(i->first-last->first>r)
23 total-=last->second,last++;
24 total+=i->second;
25 maxnum=max(maxnum,total);
26 }

27}

28int main()
29{
30 while(scanf("%d%d",&n,&r)!=EOF)
31 {
32 for(int i=0;i<n;i++)
33 scanf("%d%d",&data[i].first,&data[i].second);
34 sort(data,data+n,cmpy);
35 int last=0;
36 refer.clear();
37 int maxnum=0;
38 for(int now=0;now<n;now++)
39 {
40 while(data[now].second-data[last].second>r)
41 {
42 refer[data[last].first]--;
43 if(refer[data[last].first]==0) refer.erase(data[last].first);
44 last++;
45 }

46 refer[data[now].first]++;
47 cal(maxnum);
48 }

49 printf("%d\n",maxnum);
50 }

51 return 0;
52}

53
1008 比賽時間來不及了,當(dāng)時,以為寫出5題,能夠穩(wěn)了,yzu的同學(xué)來了個電話,說這次比賽5題已經(jīng)排到150了。。大驚。。連忙回去看題。。但是。。哎。。
不扯淡了,寫寫這題思想。看復(fù)雜度,非O(n)的算法不行的說
差不多定下來是TREE-DP
首先構(gòu)造以1為根的樹
然后主要解決3個問題
1、判斷詢問時X節(jié)點是再Y節(jié)點的子孫節(jié)點還是其祖先節(jié)點(相對于以1為根的樹)
2、分別討論以上兩種情況下的解
第一問我是這樣解決的
首先記錄下以1為根的樹的dfn(DFS遍歷序列),如果X是Y的子孫節(jié)點當(dāng)且僅當(dāng)dfn(x)>=dfn(y)且dfn(x)<=max(dfn(z)),z是y的子孫節(jié)點。這里要tree-dp處理max(dfn(z))。
第二問的解決就很銷魂了
首先,如果X是Y的祖先節(jié)點,那么問題就轉(zhuǎn)化為求以Y為根的子樹的問題,可以直接利用以1為根的樹的DP出來的結(jié)果。(即以K為根的子樹兒子編號的最小值以及子孫編號的最小值以及次小值(這個后面會說有什么用),這個TREE-DP大家肯定都會的)
X是Y的兒子節(jié)點
這個麻煩一點,首先利用DFN可以很快的確定根在Y的哪棵子樹上,如果最小值取在這棵子樹上,那么取Y的次小值,否則就取最小值。然后如果Y節(jié)點不是1號節(jié)點的話,其最小兒子(相對于以Y為根的子樹)編號再與其父親(相對于以1為根的子樹)取個最小值,最小子孫(相對于以Y為根的子樹)編號與1取最小值。
然后上代碼~
 1# include <cstdio>
 2# include <vector>
 3# include <algorithm>
 4# define max(a,b) ((a)>(b)?(a):(b))
 5using namespace std;
 6# define N 100005
 7vector<int>    g[N];
 8int dfn[N],c=0,maxdfn[N];
 9int n,q;
10int dp[N],fa[N];
11int ans[N][5];
12void update(int tmp[],int pos)
13{
14    if(pos<tmp[0]) tmp[1]=tmp[0],tmp[0]=pos;
15    else if(pos<tmp[1]) tmp[1]=pos;
16    if(dp[pos]<tmp[2]) tmp[3]=tmp[2],tmp[2]=dp[pos],tmp[4]=pos;
17    else if(dp[pos]<tmp[3]) tmp[3]=dp[pos];
18}

19void dfs(int pos,int pre)
20{
21    dp[pos]=pos;
22    maxdfn[pos]=dfn[pos]=c++;
23    ans[pos][0]=ans[pos][1]=ans[pos][2]=ans[pos][3]=0xfffffff;
24    for(int i=0;i<g[pos].size();i++)
25    if(g[pos][i]!=pre)
26        {
27            dfs(g[pos][i],pos);
28            if(dp[g[pos][i]]<dp[pos])
29                dp[pos]=dp[g[pos][i]];
30            maxdfn[pos]=max(maxdfn[pos],maxdfn[g[pos][i]]);
31            update(ans[pos],g[pos][i]);
32        }

33    
34    fa[pos]=pre;
35}

36int main()
37{
38    int t;
39    scanf("%d",&t);
40    while(t--)
41    {
42        scanf("%d%d",&n,&q);
43        for(int i=1;i<=n;i++) g[i].clear();
44        for(int i=1;i<n;i++)
45        {
46            int a,b;
47            scanf("%d%d",&a,&b);
48            g[a].push_back(b);
49            g[b].push_back(a);
50        }

51        c=0;
52        dfs(1,1);
53
54        while(q--)
55        {
56            int x,y;
57            scanf("%d%d",&x,&y);
58            if(dfn[x]<dfn[y]||dfn[x]>maxdfn[y])//根在上方
59            {
60                int ans1=ans[y][0],ans2=ans[y][2];
61                if(ans1==0xfffffff) printf("no answers!\n");
62                else printf("%d %d\n",ans1,ans2);
63            }

64            else//根在子樹中
65            {
66                int ans1=(dfn[x]>=dfn[ans[y][0]]&&dfn[x]<=maxdfn[ans[y][0]]?ans[y][1]:ans[y][0]),
67                    ans2=(dfn[x]>=dfn[ans[y][4]]&&dfn[x]<=maxdfn[ans[y][4]]?ans[y][3]:ans[y][2]);
68                if(y!=1) ans1=min(ans1,fa[y]),ans2=min(ans2,1);
69                if(ans1==0xfffffff) printf("no answers!\n");
70                else printf("%d %d\n",ans1,ans2);
71            }

72        }

73        printf("\n");
74    }

75    return 0;
76}
1009 當(dāng)時沒來得及看,小朋友太純真的說費用流,我就無語了。。不過這事都是給了我啟發(fā)。。不會想到有向圖的最小生成樹的時候太遲了。。
1010 不知道

最后再次祝福ujs Genius_Cats 在解體前能夠有個好成績~
Genius Cats 隊長:yzhw

posted on 2011-09-04 10:42 yzhw 閱讀(1909) 評論(6)  編輯 收藏 引用 所屬分類: DPgraph

評論

# re: The 36th ACM/ICPC Asia Regional Dalian Online Contest 大連2011ICPC網(wǎng)絡(luò)賽 個人題解 2011-09-04 19:08 PWK

補上1005題目思路,在這題的思路是對點進行割邊的縮點從構(gòu)圖,如果2點2連通,那么他們連通的邊是不能破壞的。能破壞的只有割邊。由void DFS(int x,int farther) ,void Set_Color(int x)完成。完成后成為一棵樹。之后就是博弈問題啦,做完敵人,他們要找到一條鏈,使得能盡量多的刪除最小的邊。不能刪除的最小邊權(quán)值則是這題的解。刪除最小的邊的方法是以最小邊的兩個點為根,分別構(gòu)建樹,樹形DP,求節(jié)點下面的哪條路有最小邊,找到不走的邊的最小權(quán)值。輸出。
#include <iostream>
#include <vector>
using namespace std;
#define maxn 10005
int MinN(int x,int y) {return x<y?x:y;}
struct node{int v,w;};
vector<node> map[maxn],newmap[maxn];
int DFn[maxn]; //深搜時節(jié)點的訪問順序
int low[maxn]; //存放當(dāng)前接點不經(jīng)過其父親節(jié)點能夠訪問DFn值最小的節(jié)點
int color[maxn];
int dp[maxn];
int index;
int n,m,q;
int minu,minv,minw;
bool done[maxn];


void DFS(int x,int farther)
{
int i;
DFn[x]=low[x]=index++;//賦初值
for(i=0;i<map[x].size();i++)
{
if(!DFn[map[x][i].v])
{
DFS(map[x][i].v,x);
low[x]=MinN(low[x],low[map[x][i].v]);//檢查子節(jié)點能返回的最早的祖先
}
else if(farther!=map[x][i].v)
low[x]=MinN(low[x],DFn[map[x][i].v]);//檢查從自身出發(fā)的后向邊(無向圖中沒有橫叉邊)
}
}
void Set_Color(int x)//染色,同一雙連通分量內(nèi)的節(jié)點用一種顏色
{
int i;
node tmp;
for(i=0;i<map[x].size();i++)
{
if(!color[map[x][i].v])
{
if(low[map[x][i].v]>DFn[x]) //(node,map[node][i])是割邊
{
color[map[x][i].v]=index++;
tmp.v=color[map[x][i].v];tmp.w=map[x][i].w;
newmap[color[x]].push_back(tmp);
tmp.v=color[x];
newmap[color[map[x][i].v]].push_back(tmp);
if(map[x][i].w<minw)
{
minw=map[x][i].w;
minu=color[x];
minv=color[map[x][i].v];
}
}
else color[map[x][i].v]=color[x]; //非割邊,即說明兩個節(jié)點處在同以雙連通分量中
Set_Color(map[x][i].v);
}
}
}


int DFSDP(int x,int dist)
{
done[x]=1;
dp[x]=dist;
int i,a;
for(i=0;i<newmap[x].size();i++)
{
if(!done[newmap[x][i].v])
{
a=DFSDP(newmap[x][i].v,newmap[x][i].w);
dp[x]=MinN(dp[x],a);
}
}
return dp[x];
}

void dfs(int x)
{
done[x]=1;
int min1=100001,min2=100001,i,v=-1;
for(i=0;i<newmap[x].size();i++)
{
if(!done[newmap[x][i].v])
{
if(dp[newmap[x][i].v]<=min1) {min2=min1;min1=dp[newmap[x][i].v];v=newmap[x][i].v;}
else if(dp[newmap[x][i].v]<=min2) min2=dp[newmap[x][i].v];
}
}
q=MinN(min2,q);
if(v!=-1) DFS(v);
}

int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
int a,b,w,i;
node tmp;
for(i=0;i<maxn;i++)
{
map[i].clear();
newmap[i].clear();
}
for(i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&w);
tmp.v=b-1;tmp.w=w;
map[a-1].push_back(tmp);
tmp.v=a-1;
map[b-1].push_back(tmp);
}
index=1;
memset(DFn,0,sizeof(DFn));
DFS(0,-1);
memset(color,0,sizeof(color));
color[0]=1;
index=2;
minw=100001;
Set_Color(0);
memset(dp,-1,sizeof(dp));
memset(done,0,sizeof(done));
done[minu]=done[minv]=1;
DFSDP(minu,minw);
DFSDP(minv,minw);
q=100001;
memset(done,0,sizeof(done));
done[minu]=done[minv]=1;
dfs(minu);
dfs(minv);
if(q!=100001) printf("%d\n",q);
else printf("-1\n");
}
return 0;
}   回復(fù)  更多評論   

# re: The 36th ACM/ICPC Asia Regional Dalian Online Contest 大連2011ICPC網(wǎng)絡(luò)賽 個人題解 2011-09-04 19:13 PWK

代碼粘錯啦,比賽的時候代碼寫的太挫啦,發(fā)現(xiàn)命名了2個DFS,后面那個改小寫啦,粘的中每改。dfs函數(shù)中的dfs函數(shù)改成小寫。
void dfs(int x)
{
done[x]=1;
int min1=100001,min2=100001,i,v=-1;
for(i=0;i<newmap[x].size();i++)
{
if(!done[newmap[x][i].v])
{
if(dp[newmap[x][i].v]<=min1) {min2=min1;min1=dp[newmap[x][i].v];v=newmap[x][i].v;}
else if(dp[newmap[x][i].v]<=min2) min2=dp[newmap[x][i].v];
}
}
q=MinN(min2,q);
if(v!=-1) dfs(v);
}  回復(fù)  更多評論   

# re: The 36th ACM/ICPC Asia Regional Dalian Online Contest 大連2011ICPC網(wǎng)絡(luò)賽 個人題解[未登錄] 2011-09-05 08:44 yzhw

@PWK
謝謝你~  回復(fù)  更多評論   

# re: The 36th ACM/ICPC Asia Regional Dalian Online Contest 大連2011ICPC網(wǎng)絡(luò)賽 個人題解 2011-09-05 22:43 waterman

問問博主,對于1008,如果x在y為根的子樹上,且最小值在x所在的這棵子樹上,就取次小的值,那么如果次小的值也在x所在的這棵子樹上,是否要繼續(xù)考慮第三小的值呢?  回復(fù)  更多評論   

# re: The 36th ACM/ICPC Asia Regional Dalian Online Contest 大連2011ICPC網(wǎng)絡(luò)賽 個人題解 2011-09-06 09:21 yzhw

@waterman
這里的次小值是節(jié)點P中兒子子樹最小值的次小值,換句話說,假設(shè)把所有兒子子樹的最小值放在一個列表中,然后排個序的話,該子樹節(jié)點的次小值是排位第二的元素(當(dāng)然實現(xiàn)的時候不用這樣)。就是說,最小值和次小值不會處于同一顆子樹上  回復(fù)  更多評論   

# re: The 36th ACM/ICPC Asia Regional Dalian Online Contest 大連2011ICPC網(wǎng)絡(luò)賽 個人題解 2011-09-13 22:05 demo

ans2=min(ans2,1);這句直接ans2=1;就行了吧?  回復(fù)  更多評論   

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

導(dǎo)航

統(tǒng)計

公告

統(tǒng)計系統(tǒng)

留言簿(1)

隨筆分類(227)

文章分類(2)

OJ

最新隨筆

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            噜噜噜噜噜久久久久久91| 国产一区视频网站| 夜夜躁日日躁狠狠久久88av| 亚洲国产一区二区精品专区| 午夜精品成人在线| 久久久精品国产99久久精品芒果| 麻豆精品视频在线| 欧美激情一区二区三区| 最新国产精品拍自在线播放| 日韩图片一区| 亚洲欧美三级伦理| 久久久www| 香蕉乱码成人久久天堂爱免费| 中日韩美女免费视频网址在线观看 | 久久激情综合网| 久久久综合网站| 欧美成人性网| 99国产一区| 久久亚洲视频| 国产精品区免费视频| 亚洲高清免费| 欧美一乱一性一交一视频| 欧美电影打屁股sp| 亚洲欧美日本视频在线观看| 欧美成人一区二区三区| 国产精品久久久免费| 伊人色综合久久天天五月婷| 99精品视频免费| 另类综合日韩欧美亚洲| 99精品国产在热久久| 可以看av的网站久久看| 国产精品免费视频xxxx| 最新国产乱人伦偷精品免费网站| 欧美资源在线| 在线亚洲精品| 欧美日韩免费观看一区二区三区| 在线观看中文字幕亚洲| 亚洲欧美一区二区精品久久久| 老司机久久99久久精品播放免费| 亚洲视频在线观看免费| 欧美伦理91i| 亚洲国产日韩美| 久久九九国产精品| 亚洲午夜精品国产| 欧美日本精品一区二区三区| 亚洲人成亚洲人成在线观看图片| 久久久久.com| 欧美在线一二三| 国内精品伊人久久久久av影院| 欧美在线电影| 香蕉视频成人在线观看| 国产乱码精品一区二区三区五月婷 | 韩国女主播一区二区三区| 亚洲综合成人婷婷小说| av不卡在线| 欧美视频在线观看| 在线中文字幕一区| 亚洲区一区二区三区| 欧美日韩国产一区精品一区 | 久久中文字幕导航| 亚洲欧美日韩国产中文| 国产精品va| 欧美一级二区| 欧美自拍偷拍| 伊人激情综合| 亚洲精选在线| 亚洲韩国日本中文字幕| 欧美黄色免费网站| 一区二区三区久久网| 亚洲精品在线免费| 国产精品扒开腿做爽爽爽软件| 亚洲欧美另类在线| 性欧美暴力猛交69hd| 韩国精品久久久999| 噜噜噜噜噜久久久久久91| 久久综合一区| 一区二区免费在线播放| 亚洲已满18点击进入久久| 国产亚洲电影| 免费不卡亚洲欧美| 欧美精品在线免费| 性做久久久久久久免费看| 欧美伊人久久大香线蕉综合69| 国内精品久久久久久久影视麻豆| 免费成人美女女| 欧美午夜美女看片| 久久福利一区| 欧美激情精品久久久久久黑人| 亚洲免费网站| 欧美在线综合视频| 99视频一区| 久久aⅴ国产紧身牛仔裤| 日韩天堂在线视频| 香蕉国产精品偷在线观看不卡| 亚洲精品之草原avav久久| 亚洲女同同性videoxma| 亚洲精品国产系列| 亚洲欧美成aⅴ人在线观看| 亚洲动漫精品| 亚洲无亚洲人成网站77777| 亚洲国产精品免费| 亚洲欧美中文日韩在线| 最新精品在线| 久久精品免费电影| 欧美亚洲视频在线看网址| 欧美成人午夜| 久久不射中文字幕| 欧美日产国产成人免费图片| 麻豆精品91| 国产精品美女xx| 亚洲精品久久久久久一区二区| 一区二区亚洲精品| 亚洲欧美日韩国产一区二区三区| 一区二区福利| 欧美va亚洲va国产综合| 久久久久久久综合狠狠综合| 国产精品每日更新| 一区二区三区你懂的| 亚洲乱码日产精品bd| 久久久精品一品道一区| 久久激五月天综合精品| 国产久一道中文一区| 亚洲午夜久久久久久久久电影院 | 久久影视三级福利片| 国产伦理一区| 亚洲一区二区三区久久 | 久久精品首页| 午夜天堂精品久久久久 | 国产欧美三级| 一二三区精品| 国产精品99久久久久久久久| 欧美极品色图| 亚洲日本在线观看| 亚洲免费观看高清完整版在线观看| 久久久精品日韩| 猛男gaygay欧美视频| 在线观看av不卡| 另类春色校园亚洲| 欧美成人综合| 亚洲欧洲精品一区| 欧美国产综合视频| 亚洲精品美女久久7777777| 这里只有精品电影| 欧美日韩另类一区| 亚洲综合视频1区| 欧美在线视频在线播放完整版免费观看 | 亚洲精品久久久久久一区二区| 久久在线视频| 亚洲欧洲精品一区二区| 中文国产成人精品久久一| 国产精品高潮呻吟久久av黑人| 在线视频免费在线观看一区二区| 午夜精品福利视频| 黄网站免费久久| 欧美成人网在线| 亚洲私人影吧| 免费国产自线拍一欧美视频| 最新中文字幕一区二区三区| 欧美偷拍一区二区| 久久成人精品视频| 91久久精品国产91久久| 午夜视频一区二区| 亚洲国产婷婷综合在线精品| 欧美日韩免费观看一区二区三区 | 久久视频一区| 亚洲久久视频| 国产欧美综合一区二区三区| 美日韩免费视频| 9久re热视频在线精品| 久久精品成人欧美大片古装| 最新日韩在线视频| 国产精品青草久久| 欧美成人黄色小视频| 亚洲在线1234| 亚洲精品久久久久| 卡通动漫国产精品| 午夜国产一区| 99re国产精品| 激情综合色丁香一区二区| 欧美日韩亚洲免费| 久久久久久久网| 亚洲女性裸体视频| 亚洲日本一区二区三区| 老司机午夜精品| 欧美在线观看网址综合| 一区二区欧美视频| 亚洲人精品午夜在线观看| 亚洲一区在线观看视频 | 激情综合色丁香一区二区| 国产精品国产三级国产专播品爱网| 久久一区二区三区国产精品| 亚洲小说春色综合另类电影| 91久久国产精品91久久性色| 麻豆成人av| 久久婷婷一区| 久久九九久久九九| 欧美一区二区三区四区在线| 在线视频欧美日韩精品| 亚洲精品国产精品国自产观看浪潮 | 久久精品论坛|