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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

SPOJ GSS系列

發布時間:2023/12/13 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 SPOJ GSS系列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

眾所周知的僅次于ynoi的毒瘤數據結構系列。(跟Qtree系列并列?)


GSS1:

長度為 $n$ 的序列 $a$,$m$ 個詢問,每次詢問區間 $[l,r]$ 之間的最大子段和。

$1le n,mle 5 imes 10^4$。

經典的線段樹題。

每個節點維護四個值:$sum,lmax,rmax,amax$。

$sum$ 表示整個區間的和。

$lmax$ 表示以 $l$ 為左端點的最大子段和。

$rmax$ 表示以 $r$ 為右端點的最大子段和。

$amax$ 表示整個的最大子段和。

時間復雜度 $O(mlog n)$。

具體可以看代碼。(那是好久以前寫的了,所以會有點丑)

#include<bits/stdc++.h>
using namespace std;
const int maxm=144089;
namespace Segment_Tree{
    struct node{
        int sum,lmax,rmax,amax;
    }e[maxm];
    int n;
    inline void pushup(int t){
        node ls=e[t<<1],rs=e[t<<1|1];
        e[t]=(node){
            ls.sum+rs.sum,
            max(ls.lmax,ls.sum+rs.lmax),
            max(rs.rmax,rs.sum+ls.rmax),
            max(max(ls.amax,rs.amax),ls.rmax+rs.lmax)
        };
    }
    void build_(int l,int r,int t){
        if(l==r){
            scanf("%d",&e[t].sum);
            e[t]=(node){e[t].sum,e[t].sum,e[t].sum,e[t].sum};
            return;
        }
        int mid=l+r>>1;
        build_(l,mid,t<<1);
        build_(mid+1,r,t<<1|1);
        pushup(t);
    }
    void build(int x){
        n=x;
        build_(1,x,1);
    }
    node query_(int L,int R,int l,int r,int t){
        if(L>=l && R<=r) return e[t];
        int mid=L+R>>1;
        if(mid>=r) return query_(L,mid,l,r,t<<1);
        if(mid<l) return query_(mid+1,R,l,r,t<<1|1);
        node ans,ls,rs;
        ls=query_(L,mid,l,r,t<<1);rs=query_(mid+1,R,l,r,t<<1|1);
        ans.sum=ls.sum+rs.sum;
        ans.lmax=max(ls.lmax,ls.sum+rs.lmax);
        ans.rmax=max(rs.rmax,rs.sum+ls.rmax);
        ans.amax=max(max(ls.amax,rs.amax),ls.rmax+rs.lmax);
        return ans;
    }
    int query(int l,int r){
        return query_(1,n,l,r,1).amax;
    }
}
int n,m;
int main(){
    scanf("%d",&n);
    Segment_Tree::build(n);
    scanf("%d",&m);
    for(int i=1;i<=m;i++){
        int l,r;
        scanf("%d%d",&l,&r);
        printf("%d
",Segment_Tree::query(l,r));
    }
}

GSS1


GSS2:

長度為 $n$ 的序列 $a$,$m$ 個詢問,每次詢問區間 $[l,r]$ 之間的最大子段和。可以選空子段。注意此處的子段和是:如果一個數出現了多次,那么只算一次。

$1le n,mle 10^5$。

這就搖身一變變成了毒瘤題……ErkkiErkkoOrz……(這是他洛谷賬號)

一個數只算一次,有點像HH的項鏈,那么也可以用類似的想法。

把詢問離線,按右端點排序。

假設現在推右端點推到了 $i$。

線段樹維護的東西得修改一下。(具體原因待會解釋)

每個點 $sum,hmax$。標記 $tag,htag$。

對于葉子結點 $l$,$sum$ 表示從 $l$ 到 $i$ 的和(也是相同的數只算一次),$hmax$ 表示這個節點 $sum$ 曾達到過的最大值,初始為 $0$。

對于非葉子結點,$sum$ 是所有孩子的 $sum$ 的最大值,$hmax$ 是所有孩子的 $hmax$ 的最大值。

$tag$ 是因為下面需要區間加的標記,$htag$ 是自上次把這個節點的標記下傳完以后,$tag$ 達到過的最大值。

有點不好說啊……

那么 $pre[a[i]]$(就是 $a[i]$ 上一次出現的位置)和之前的位置到 $i$ 的和應該和到 $i-1$ 的和一樣不變,因為前面已經出現過 $a[i]$,現在這個 $a[i]$ 就不能再算一遍。

$pre[a[i]]$ 之后的到 $i-1$ 的和由于沒有出現過 $a[i]$,所以他們的和就要加 $a[i]$。即給 $sum$ 區間加 $a[i]$。

接下來查詢就好辦了,就是這個區間 $hmax$ 的最大值。(想一想,為什么?)

時間復雜度 $O(m(log n+log m))$。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=100010;
#define lson o<<1,l,mid
#define rson o<<1|1,mid+1,r
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define ROF(i,a,b) for(int i=(a);i>=(b);i--)
#define MEM(x,v) memset(x,v,sizeof(x))
inline int read(){
    char ch=getchar();int x=0,f=0;
    while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();
    while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
    return f?-x:x;
}
struct query{
    int l,r,id;
    bool operator<(const query &q)const{
        return r<q.r;
    }
}qqq[maxn];
int n,q,pre[maxn*2],a[maxn];
ll ans[maxn],sum[maxn*4],hmax[maxn*4],tag[maxn*4],htag[maxn*4];
void pushup(int o){
    sum[o]=max(sum[o<<1],sum[o<<1|1]);
    hmax[o]=max(hmax[o<<1],hmax[o<<1|1]);
}
void pushdown(int o){
    hmax[o<<1]=max(hmax[o<<1],sum[o<<1]+htag[o]);
    hmax[o<<1|1]=max(hmax[o<<1|1],sum[o<<1|1]+htag[o]);
    sum[o<<1]+=tag[o];
    sum[o<<1|1]+=tag[o];
    htag[o<<1]=max(htag[o<<1],tag[o<<1]+htag[o]);
    htag[o<<1|1]=max(htag[o<<1|1],tag[o<<1|1]+htag[o]);
    tag[o<<1]+=tag[o];
    tag[o<<1|1]+=tag[o];
    tag[o]=htag[o]=0;
}
void update(int o,int l,int r,int ql,int qr,int x){
    if(l>=ql && r<=qr){
        sum[o]+=x;
        hmax[o]=max(hmax[o],sum[o]);
        tag[o]+=x;
        htag[o]=max(htag[o],tag[o]);
        return;
    }
    pushdown(o);
    int mid=(l+r)>>1;
    if(mid>=ql) update(lson,ql,qr,x);
    if(mid<qr) update(rson,ql,qr,x);
    pushup(o);
}
ll query(int o,int l,int r,int ql,int qr){
    if(l>=ql && r<=qr) return hmax[o];
    pushdown(o);
    int mid=(l+r)>>1;ll ans=-1e18;
    if(mid>=ql) ans=max(ans,query(lson,ql,qr));
    if(mid<qr) ans=max(ans,query(rson,ql,qr));
    return ans;
}
int main(){
    n=read();
    FOR(i,1,n) a[i]=read();
    q=read();
    FOR(i,1,q) qqq[i].l=read(),qqq[i].r=read(),qqq[i].id=i;
    sort(qqq+1,qqq+q+1);
    int curr=1;
    FOR(i,1,q){
        while(curr<=qqq[i].r){
            update(1,1,n,pre[a[curr]+100000]+1,curr,a[curr]);
            pre[a[curr]+100000]=curr;
            curr++;
        }
        ans[qqq[i].id]=query(1,1,n,qqq[i].l,qqq[i].r);
    }
    FOR(i,1,q) printf("%lld
",ans[i]);
}

GSS2


GSS3:

長度為 $n$ 的序列 $a$,$m$ 個操作:單點修改,或詢問區間的最大子段和。

$1le n,mle 5 imes 10^4$。

跟GSS1一樣,不說了。

#include<bits/stdc++.h>
using namespace std;
const int maxn=50050;
#define lson o<<1,l,mid
#define rson o<<1|1,mid+1,r
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define ROF(i,a,b) for(int i=(a);i>=(b);i--)
#define MEM(x,v) memset(x,v,sizeof(x))
inline int read(){
    char ch=getchar();int x=0,f=0;
    while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();
    while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
    return f?-x:x;
}
struct node{
    int sum,lmax,rmax,amax;
}nd[maxn*4];
int n,q,a[maxn];
void pushup(node &o,node l,node r){
    o.sum=l.sum+r.sum;
    o.lmax=max(l.lmax,l.sum+r.lmax);
    o.rmax=max(r.rmax,r.sum+l.rmax);
    o.amax=max(l.amax,max(r.amax,l.rmax+r.lmax)); 
}
void build(int o,int l,int r){
    if(l==r) return void(nd[o]=(node){a[l],a[l],a[l],a[l]});
    int mid=(l+r)>>1;
    build(lson);
    build(rson);
    pushup(nd[o],nd[o<<1],nd[o<<1|1]);
}
void update(int o,int l,int r,int p,int x){
    if(l==r) return void(nd[o]=(node){x,x,x,x});
    int mid=(l+r)>>1;
    if(mid>=p) update(lson,p,x);
    else update(rson,p,x);
    pushup(nd[o],nd[o<<1],nd[o<<1|1]);
}
node query(int o,int l,int r,int ql,int qr){
    if(l>=ql && r<=qr) return nd[o];
    int mid=(l+r)>>1;
    if(mid<ql) return query(rson,ql,qr);
    if(mid>=qr) return query(lson,ql,qr);
    node ans;
    pushup(ans,query(lson,ql,qr),query(rson,ql,qr));
    return ans;
}
int main(){
    n=read();
    FOR(i,1,n) a[i]=read();
    build(1,1,n);
    q=read();
    FOR(i,1,q){
        int op=read(),l=read(),r=read();
        if(op) printf("%d
",query(1,1,n,l,r).amax);
        else update(1,1,n,l,r);
    }
}

GSS3


GSS4:

長度為 $n$ 的正整數序列 $a$,$m$ 個操作:區間開方(下取整),區間求和。

$1le n,mle 10^5,sum a_ile 10^{18}$。

這應該也是一個套路了……

我們發現一個數 $x$ 開方下取整約 $loglog x$ 次之后便會變成 $1$。變成 $1$ 之后,再開方都不會對答案有影響。

(你問我為什么是 $log log x$?因為每開一次方實際上就是把 $log x$ 除以 $2$,這樣操作一共就要 $log log x$ 次)

那么就上線段樹,維護區間和和區間是否都為 $1$(bool)。

修改時,對每個葉子結點都暴力修改。注意的是如果到了一個區間,區間都是 $1$,就可以跳過這個區間,因為修不修改不影響答案。

由于一個葉子至多被暴力 $loglog a_i$ 次,所以時間復雜度是 $O(qlog nloglog a_i)$。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=100010;
#define lson o<<1,l,mid
#define rson o<<1|1,mid+1,r
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define ROF(i,a,b) for(int i=(a);i>=(b);i--)
#define MEM(x,v) memset(x,v,sizeof(x))
inline ll read(){
    char ch=getchar();ll x=0,f=0;
    while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();
    while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
    return f?-x:x;
}
int t,n,q;
ll a[maxn],sum[maxn*4];
bool all1[maxn*4];
inline void pushup(int o){
    sum[o]=sum[o<<1]+sum[o<<1|1];
    all1[o]=all1[o<<1]&all1[o<<1|1];
}
void build(int o,int l,int r){
    if(l==r) return void((sum[o]=a[l],all1[o]=(a[l]==1)));
    int mid=(l+r)>>1;
    build(lson);
    build(rson);
    pushup(o);
}
void update(int o,int l,int r,int ql,int qr){
    if(all1[o]) return;
    if(l==r) return void((sum[o]=sqrt(sum[o]),all1[o]=(sum[o]==1)));
    int mid=(l+r)>>1;
    if(mid>=ql) update(lson,ql,qr);
    if(mid<qr) update(rson,ql,qr);
    pushup(o);
}
ll query(int o,int l,int r,int ql,int qr){
    if(l>=ql && r<=qr) return sum[o];
    int mid=(l+r)>>1;ll s=0;
    if(mid>=ql) s+=query(lson,ql,qr);
    if(mid<qr) s+=query(rson,ql,qr);
    return s;
}
int main(){
    while(~scanf("%d",&n)){
        printf("Case #%d:
",++t);
        FOR(i,1,n) a[i]=read();
        build(1,1,n);
        q=read();
        FOR(i,1,q){
            int op=read(),l=read(),r=read();
            if(l>r) swap(l,r);
            if(op) printf("%lld
",query(1,1,n,l,r));
            else update(1,1,n,l,r);
        }
        puts("");
    }
}

GSS4


GSS5:

長度為 $n$ 的正整數序列 $a$,$m$ 個詢問,每次詢問左端點在 $[x1,y1]$,右端點在 $[x2,y2]$ 的所有子段的和的最大值。

$1le n,mle 10^4,x1le y1,x2le y2,x1le x2,y1le y2$。

惡心的分類討論題……

首先發現,如果 $[x1,y1],[x2,y2]$ 不相交,那么所有的子段都包含了 $[y1+1,x2-1]$(如果 $y1<x2-1$),那么答案就是 $[x1,y1]$ 的最大右子段和加上 $[x2,y2]$ 的最大左子段和加上 $[y1+1,x2-1]$ 的和。

如果相交,那就很惡心了……

如果左右端點都在 $[x2,y1]$,那么答案就是 $[x2,y1]$ 的最大子段和。

如果左端點在 $[x2,y1]$,右端點在 $[y1+1,y2]$,答案就是 $[x2,y1]$ 的最大右子段和加上 $[x2+1,y2]$ 的最大左子段和。

如果左端點在 $[x1,x2-1]$,右端點在 $[x2,y2]$,答案就是 $[x1,x2-1]$ 的最大右段和加上 $[x2,y2]$ 的最大左子段和。

以上已經包含了所有的情況。這些取個最大值就好了。

時間復雜度 $O(mlog n)$。

代碼中寫得有一點點不一樣,最重要的還是理解。

#include<bits/stdc++.h>
using namespace std;
const int maxn=10010;
#define lson o<<1,l,mid
#define rson o<<1|1,mid+1,r
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define ROF(i,a,b) for(int i=(a);i>=(b);i--)
#define MEM(x,v) memset(x,v,sizeof(x))
inline int read(){
    char ch=getchar();int x=0,f=0;
    while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();
    while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
    return f?-x:x;
}
struct node{
    int sum,lmax,rmax,amax;
    node operator+(const node &nd)const{
        node ans;
        ans.sum=sum+nd.sum;
        ans.lmax=max(lmax,sum+nd.lmax);
        ans.rmax=max(nd.rmax,nd.sum+rmax);
        ans.amax=max(amax,max(nd.amax,rmax+nd.lmax));
        return ans;
    }
}nd[maxn*4];
int t,n,m,a[maxn];
inline void pushup(int o){
    nd[o]=nd[o<<1]+nd[o<<1|1];
}
void build(int o,int l,int r){
    if(l==r) return void(nd[o]=(node){a[l],a[l],a[l],a[l]});
    int mid=(l+r)>>1;
    build(lson);build(rson);
    pushup(o);
}
node query(int o,int l,int r,int ql,int qr){
    if(ql>qr) return (node){0,0,0,0};
    if(l>=ql && r<=qr) return nd[o];
    int mid=(l+r)>>1;
    if(mid<ql) return query(rson,ql,qr);
    if(mid>=qr) return query(lson,ql,qr);
    return query(lson,ql,qr)+query(rson,ql,qr);
}
int main(){
    t=read();
    while(t--){
        n=read();
        FOR(i,1,n) a[i]=read();
        build(1,1,n);
        m=read();
        printf("m=%d
",m);
        FOR(i,1,m){
            int l1=read(),r1=read(),l2=read(),r2=read();
            if(r1<l2){
                node n1=query(1,1,n,l1,r1),n2=query(1,1,n,r1+1,l2-1),n3=query(1,1,n,l2,r2);
                printf("%d
",n1.rmax+n2.sum+n3.lmax);
            }
            else{
                node n1=query(1,1,n,l2,r1);
                int ans=n1.amax;
                node n2=query(1,1,n,l1,l2-1),n3=query(1,1,n,l2,r2);
                ans=max(ans,n2.rmax+n3.lmax);
                node n4=query(1,1,n,l1,r1),n5=query(1,1,n,r1+1,r2);
                printf("%d
",max(ans,n4.rmax+n5.lmax));
            }
        }
    }
}

GSS5


GSS6:

給出一個由 $n$個整數組成的序列 $a$,你需要支持 $m$個操作:

I p x在 $p$處插入插入一個元素 $x$
D p刪除 $p$處的一個元素
R p x修改 $p$處元素的值為 $x$
Q l r查詢一個區間 $[l,r]$的最大子段和

$1le n,mle 10^5,|a_i|,|x|le 10^4$。

這題一看就是splay(或者fhq treap)裸題。比維修數列好寫多了(

如果您打過維修數列,這個就不用再講了吧!

如果您會splay或者fhq treap,那么前三個操作應該不是問題,第四個操作也可以跟GSS1和GSS3一樣維護 $lmax,rmax,amax$。

然后就沒有了,碼吧。

#include<bits/stdc++.h>
using namespace std;
const int maxn=200020;
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define ROF(i,a,b) for(int i=(a);i>=(b);i--)
#define MEM(x,v) memset(x,v,sizeof(x))
inline int read(){
    char ch=getchar();int x=0,f=0;
    while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();
    while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
    return f?-x:x;
}
int n,a[maxn],m,cnt,rt,fa[maxn],ch[maxn][2],sz[maxn],val[maxn],sum[maxn],lmax[maxn],rmax[maxn],amax[maxn];
void pushup(int x){
    sz[x]=sz[ch[x][0]]+sz[ch[x][1]]+1;
    sum[x]=sum[ch[x][0]]+sum[ch[x][1]]+val[x];
    if(!ch[x][0] && !ch[x][1]) lmax[x]=rmax[x]=amax[x]=val[x];
    else if(!ch[x][1]){
        lmax[x]=max(lmax[ch[x][0]],sum[ch[x][0]]+val[x]);
        rmax[x]=max(val[x],rmax[ch[x][0]]+val[x]);
        amax[x]=max(val[x],max(rmax[ch[x][0]]+val[x],amax[ch[x][0]]));
    }
    else if(!ch[x][0]){
        lmax[x]=max(val[x],val[x]+lmax[ch[x][1]]);
        rmax[x]=max(rmax[ch[x][1]],sum[ch[x][1]]+val[x]);
        amax[x]=max(val[x],max(val[x]+lmax[ch[x][1]],amax[ch[x][1]]));
    }
    else{
        lmax[x]=max(lmax[ch[x][0]],max(sum[ch[x][0]]+val[x],sum[ch[x][0]]+val[x]+lmax[ch[x][1]]));
        rmax[x]=max(rmax[ch[x][1]],max(sum[ch[x][1]]+val[x],sum[ch[x][1]]+val[x]+rmax[ch[x][0]]));
        amax[x]=max(val[x],max(amax[ch[x][0]],max(amax[ch[x][1]],max(rmax[ch[x][0]]+val[x],max(lmax[ch[x][1]]+val[x],rmax[ch[x][0]]+val[x]+lmax[ch[x][1]])))));
    }
}
void rotate(int x){
    int y=fa[x],z=fa[y],t=ch[y][1]==x,tt=ch[z][1]==y;
    int B=ch[x][t^1];
    fa[B]=y;ch[y][t]=B;
    fa[y]=x;ch[x][t^1]=y;
    fa[x]=z;ch[z][tt]=x;
    pushup(y);pushup(x);
}
void splay(int x,int to){
    while(fa[x]!=to){
        int y=fa[x],z=fa[y],t=ch[y][1]==x,tt=ch[z][1]==y;
        if(z!=to) rotate(t^tt?x:y);
        rotate(x);
    }
    if(!to) rt=x;
}
int kth(int x){
    int now=rt;
    while(now){
        int s=sz[ch[now][0]]+1;
        if(x==s) return now;
        if(x<s) now=ch[now][0];
        else x-=s,now=ch[now][1];
    }
}
int build(int f,int l,int r){
    int mid=(l+r)>>1,tmp=++cnt;
    fa[tmp]=f;
    val[tmp]=a[mid];
    if(l<mid) ch[tmp][0]=build(tmp,l,mid-1);
    if(mid<r) ch[tmp][1]=build(tmp,mid+1,r);
    pushup(tmp);
    return tmp;
}
void insert(int p,int x){
    int l=kth(p),r=kth(p+1);
    splay(l,0);splay(r,l);
    int &nd=ch[ch[rt][1]][0];
    nd=++cnt;
    fa[nd]=ch[rt][1];
    val[nd]=x;
    pushup(nd);pushup(ch[rt][1]);pushup(rt);
}
void remove(int p){
    int l=kth(p),r=kth(p+2);
    splay(l,0);splay(r,l);
    ch[ch[rt][1]][0]=0;
    pushup(ch[rt][1]);pushup(rt);
}
void replace(int p,int x){
    int l=kth(p),r=kth(p+2);
    splay(l,0);splay(r,l);
    val[ch[ch[rt][1]][0]]=x;
    pushup(ch[ch[rt][1]][0]);pushup(ch[rt][1]);pushup(rt);
}
int query(int l,int r){
    l=kth(l);r=kth(r+2);
    splay(l,0);splay(r,l);
    return amax[ch[ch[rt][1]][0]];
}
int main(){
    n=read();
    FOR(i,1,n) a[i]=read();
    rt=build(0,0,n+1);
    m=read();
    FOR(i,1,m){
        char op[5];
        scanf("%s",op);
        int x=read();
        switch(op[0]){
            case 'I':insert(x,read());break;
            case 'D':remove(x);break;
            case 'R':replace(x,read());break;
            case 'Q':printf("%d
",query(x,read()));break;
        }
    }
}

GSS6


GSS7:

給定一棵樹,有 $n$個節點,每一個節點都有一個權值 $x_i$。

你需要執行 $q$次操作:

1 a b查詢 $(a,b)$ 這條鏈上的最大子段和,可以為空
2 a b c將$(a,b)$ 這條鏈的所有點權變為 $c$

$1le n,qle 10^5,|x_i|,|c|le 10^4$。

裸的樹剖,只不過查詢時會比較麻煩。

我們可以先求出 $lca$ 到 $a$ 的最大子段和和 $lca$ 到 $b$ 的最大子段和。

具體求的話,就是可以將在上面的一條重鏈與下面已有的答案接起來。

最后把兩個合并一下就好了。注意其中一個需要翻轉后再拼。

具體看代碼。(一個裸的樹剖為什么比splay還長)

#include<bits/stdc++.h>
using namespace std;
const int maxn=100010,INF=2147483647;
#define lson o<<1,l,mid
#define rson o<<1|1,mid+1,r
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define ROF(i,a,b) for(int i=(a);i>=(b);i--)
#define MEM(x,v) memset(x,v,sizeof(x))
inline int read(){
    char ch=getchar();int x=0,f=0;
    while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();
    while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
    return f?-x:x;
}
int n,m,w[maxn],el,head[maxn],to[maxn*2],nxt[maxn*2];
int fa[maxn],dep[maxn],sz[maxn],son[maxn],top[maxn],dfs_clock,id[maxn],dfn[maxn];
int tag[maxn*4];
struct node{
    int sum,lmax,rmax,amax;
    node():sum(0),lmax(0),rmax(0),amax(0){}
    const node operator+(const node &r)const{
        node ans;
        ans.sum=sum+r.sum;
        ans.lmax=max(lmax,sum+r.lmax);
        ans.rmax=max(r.rmax,r.sum+rmax);
        ans.amax=max(amax,max(r.amax,rmax+r.lmax));
        return ans;
    }
}nd[maxn*4];
inline void add(int u,int v){
    to[++el]=v;nxt[el]=head[u];head[u]=el;
}
void dfs1(int u,int f){
    dep[u]=dep[fa[u]=f]+1;
    sz[u]=1;
    for(int i=head[u];i;i=nxt[i]){
        int v=to[i];
        if(v==f) continue;
        dfs1(v,u);
        sz[u]+=sz[v];
        if(sz[v]>sz[son[u]]) son[u]=v;
    }
}
void dfs2(int u,int topf){
    top[u]=topf;
    id[dfn[u]=++dfs_clock]=u;
    if(son[u]) dfs2(son[u],topf);
    for(int i=head[u];i;i=nxt[i]){
        int v=to[i];
        if(v==fa[u] || v==son[u]) continue;
        dfs2(v,v);
    }
}
inline void cover(int o,int l,int r,int v){
    tag[o]=v;
    nd[o].sum=v*(r-l+1);
    if(v>0) nd[o].lmax=nd[o].rmax=nd[o].amax=nd[o].sum;
    else nd[o].lmax=nd[o].rmax=nd[o].amax=0;
}
inline void pushdown(int o,int l,int r){
    if(tag[o]==-INF) return;
    int mid=(l+r)>>1;
    cover(lson,tag[o]);cover(rson,tag[o]);
    tag[o]=-INF;
}
void build(int o,int l,int r){
    tag[o]=-INF;
    if(l==r){
        nd[o].sum=w[id[l]];
        nd[o].lmax=nd[o].rmax=nd[o].amax=max(0,w[id[l]]);
        return;
    }
    int mid=(l+r)>>1;
    build(lson);build(rson);
    nd[o]=nd[o<<1]+nd[o<<1|1];
}
void update(int o,int l,int r,int ql,int qr,int v){
    if(l>=ql && r<=qr) return cover(o,l,r,v);
    int mid=(l+r)>>1;
    pushdown(o,l,r);
    if(mid>=ql) update(lson,ql,qr,v);
    if(mid<qr) update(rson,ql,qr,v);
    nd[o]=nd[o<<1]+nd[o<<1|1];
}
node query(int o,int l,int r,int ql,int qr){
    if(l>=ql && r<=qr) return nd[o];
    int mid=(l+r)>>1;
    pushdown(o,l,r);
    if(mid<ql) return query(rson,ql,qr);
    if(mid>=qr) return query(lson,ql,qr);
    return query(lson,ql,qr)+query(rson,ql,qr);
}
void chain_update(int u,int v,int x){
    while(top[u]!=top[v]){
        if(dep[top[u]]<dep[top[v]]) swap(u,v);
        update(1,1,n,dfn[top[u]],dfn[u],x);
        u=fa[top[u]];
    }
    if(dep[u]>dep[v]) swap(u,v);
    update(1,1,n,dfn[u],dfn[v],x);
}
int chain_query(int u,int v){
    node un,vn;
    while(top[u]!=top[v]){
        if(dep[top[u]]<dep[top[v]]) swap(u,v),swap(un,vn);
        un=query(1,1,n,dfn[top[u]],dfn[u])+un;
        u=fa[top[u]];
    }
    if(dep[u]>dep[v]) swap(u,v),swap(un,vn);
    vn=query(1,1,n,dfn[u],dfn[v])+vn;
    swap(un.lmax,un.rmax);
    return (un+vn).amax;
}
int main(){
    n=read();
    FOR(i,1,n) w[i]=read();
    FOR(i,1,n-1){
        int u=read(),v=read();
        add(u,v);add(v,u);
    }
    dfs1(1,0);dfs2(1,1);build(1,1,n);
    m=read();
    FOR(i,1,m){
        int op=read(),a=read(),b=read();
        if(op==2) chain_update(a,b,read());
        else printf("%d
",chain_query(a,b));
    }
}

GSS7


后面的,留坑待填……

總結

以上是生活随笔為你收集整理的SPOJ GSS系列的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国产精品96久久久久久吹潮 | 国产色秀视频 | 国产精品欧美久久久久三级 | 国产精品久久久久av | 亚洲午夜久久久久 | 在线精品一区二区 | 色资源在线观看 | 国产精品久久久久久久久久久久冷 | 国产精品久一 | 久精品一区| 丝袜一区在线 | 亚州激情视频 | 美女免费视频一区二区 | 国产小视频国产精品 | 毛片美女网站 | 国产精品一区在线 | 日本在线视频一区二区三区 | 91tv国产成人福利 | 日韩精品一区二区在线观看视频 | 久久精品中文字幕少妇 | av电影在线观看 | 美女视频黄在线观看 | 欧美成人一区二区 | 亚洲做受高潮欧美裸体 | 欧美日韩中文字幕视频 | 久久精品国产亚洲a | 久久激情视频 久久 | 亚洲免费精品一区二区 | 福利视频午夜 | 免费成人在线观看 | 久久在线免费观看 | 丁香六月在线观看 | 国产资源免费在线观看 | 欧美在线18 | 麻豆传媒精品 | 91九色在线播放 | 色综合天天狠天天透天天伊人 | 6080yy午夜一二三区久久 | 久草在线播放视频 | 欧美性色网站 | 国产日韩精品一区二区三区 | 久久久久电影 | 人人澡澡人人 | 99精品亚洲| 亚洲免费av一区二区 | 久久精品99国产精品日本 | 日韩欧美一区二区三区在线 | 美女视频久久 | av一区在线播放 | 69av国产 | 一区二区三区在线免费 | 欧美日韩视频在线播放 | 色视频在线 | 成人在线观看资源 | 久草国产在线观看 | 亚洲黄电影| 日韩大陆欧美高清视频区 | 五月激情丁香图片 | 波多野结衣一区三区 | 欧美精品一区二区三区一线天视频 | 欧美高清视频不卡网 | 久久婷婷一区二区三区 | 色吊丝在线永久观看最新版本 | 91九色丨porny丨丰满6 | 97香蕉久久国产在线观看 | 中文字幕日韩有码 | 天天se天天cao天天干 | 欧美日韩国产精品一区 | 天天操天天干天天爱 | 久草在线免费色站 | 国产小视频在线看 | 国产色婷婷 | 亚洲精品1区2区3区 超碰成人网 | 在线国产日韩 | 男女激情网址 | 国产亚洲久一区二区 | 婷婷精品国产欧美精品亚洲人人爽 | 精品免费观看 | 国产一区二区三区网站 | 2020天天干夜夜爽 | 久久久久久久久毛片精品 | www.久久视频| 亚洲免费在线看 | 精品人人爽 | 国产91学生粉嫩喷水 | 蜜臀av.com| 欧美日韩不卡一区二区 | 国产精品孕妇 | 日韩中午字幕 | 三级性生活视频 | 91看片成人 | 亚洲欧美国产精品18p | 色婷婷激情五月 | 欧美日韩在线精品一区二区 | 99欧美精品 | 91高清在线 | 免费观看高清 | 天天干天天草天天爽 | 久久国产影视 | 免费看一级特黄a大片 | 玖玖在线视频观看 | 69精品人人人人 | 激情五月婷婷激情 | 日本 在线 视频 中文 有码 | 午夜狠狠干 | 91亚洲精品久久久中文字幕 | 久久久久9999亚洲精品 | 亚洲国产欧美一区二区三区丁香婷 | 国产精品专区在线观看 | 精品国产一区二区三区蜜臀 | 亚洲精品乱码久久久一二三 | 91视频在线 | 日韩电影一区二区在线观看 | 狠狠操狠狠干天天操 | 99久久精品免费一区 | 美腿丝袜一区二区三区 | 国产精品久久久久久婷婷天堂 | 国产 日韩 欧美 中文 在线播放 | 亚洲精品美女久久久久 | www免费看 | 国产午夜精品视频 | 成人午夜电影在线观看 | 免费精品在线观看 | 色香网 | 久久免费毛片视频 | 欧美日韩中文国产 | 热久久最新地址 | 成人黄色在线观看视频 | 久久精品日韩 | 亚洲伊人色 | 天天爱天天色 | 又黄又色又爽 | 国产综合精品久久 | 波多野结衣网址 | 日韩1级片 | 国产黄色观看 | 久久理论片 | 国产黄色在线看 | 婷婷 综合 色 | 欧美日韩国产精品一区二区 | 在线观看av不卡 | 丁香五香天综合情 | 国产vs久久 | 国产精品门事件 | 国产视频 亚洲视频 | www.大网伊人 | 手机在线看永久av片免费 | 中文字幕激情 | 欧美日韩国产亚洲乱码字幕 | 国产精品福利无圣光在线一区 | 国产丝袜美腿在线 | 亚洲精品动漫成人3d无尽在线 | 亚洲激情电影在线 | 国产91精品在线播放 | 日韩91精品 | 免费国产黄线在线观看视频 | 四虎影视成人精品国库在线观看 | 国产中文字幕视频在线观看 | 中文字幕免费一区 | 欧美精品久久天天躁 | 免费看久久久 | 偷拍福利视频一区二区三区 | 欧美怡红院 | 激情网在线观看 | 日韩高清不卡在线 | 亚洲国产大片 | 久草在在线视频 | 国产性xxxx | 亚洲精品国产第一综合99久久 | 人人爽爽人人 | www.777奇米 | 日日操日日插 | 午夜日b视频 | 精品视频免费在线 | 日韩中文字幕免费视频 | 91亚洲精品久久久 | 中文字幕乱码日本亚洲一区二区 | 国产午夜在线观看视频 | 一区二区网 | 激情欧美国产 | 黄在线| 国产亚洲综合在线 | 99热精品视| 久久经典国产视频 | 91精品国产麻豆国产自产影视 | 国产第一二区 | 中文字幕网站视频在线 | 国产免费黄视频在线观看 | 天天综合天天做 | 黄色日批网站 | 欧美日韩视频 | 免费看在线看www777 | 91黄色成人 | 国产精品中文字幕在线观看 | 亚洲有 在线| 日韩一区二区三区视频在线 | 亚洲电影久久久 | 欧美十八 | 三级性生活视频 | 日韩精品免费一区 | 中文字幕在线免费看 | 久久久久日本精品一区二区三区 | 欧美精品网站 | 99视频在线观看一区三区 | 天天天天天操 | 日韩中文字幕免费在线播放 | 午夜精品久久久久久久爽 | 国产精品电影在线 | 丁香六月中文字幕 | 久久影院精品 | 久黄色 | 99热在线看| 久久五月天综合 | www久久久久| 人人爽人人爽人人爽学生一级 | 四川妇女搡bbbb搡bbbb搡 | 少妇啪啪av入口 | 伊人久久在线观看 | 亚洲网站在线看 | 午夜精品久久久久久久99 | 91中文在线 | www.久久久com| 中文字幕在线观看av | 精品国产一区在线观看 | 中国成人一区 | 日女人电影 | av播放在线| 中文字幕在线视频一区 | 韩国一区二区三区视频 | 九九九在线观看视频 | 999久久a精品合区久久久 | 午夜精品视频一区二区三区在线看 | 天天草天天操 | 91人人澡人人爽人人精品 | 麻豆视频免费观看 | 欧美精品一区二区免费 | 天天干天天玩天天操 | 精品三级av| 91夫妻自拍 | av电影在线播放 | 二区中文字幕 | 91在线视频观看免费 | 成人免费视频网 | 18+视频网站链接 | 欧美91精品久久久久国产性生爱 | 天天干,天天射,天天操,天天摸 | 天堂va在线高清一区 | 久久成人午夜 | 欧美日韩精品免费观看视频 | 成人国产精品av | 日本精品一二区 | 婷婷成人亚洲综合国产xv88 | 国产精品久久久久久久久久久不卡 | 激情xxxx| 国产日本亚洲高清 | 一区二区三区电影在线播 | 97操操操| 婷婷色狠狠 | 在线播放第一页 | 综合天天| 日韩欧美一区二区三区在线观看 | 91午夜精品 | 国产高清福利在线 | 国产高清在线免费 | 奇米影视999 | 国产精品午夜在线 | 天天天天天天天天操 | 人人爱夜夜操 | 亚洲欧美日韩国产精品一区午夜 | 91自拍视频在线观看 | 在线免费观看国产视频 | 99视频国产精品免费观看 | 日日干日日 | 中文字幕观看在线 | 久99久在线| 97视频在线观看视频免费视频 | 最近在线中文字幕 | 超碰人人超 | 成人免费视频网址 | 成人免费精品 | 亚洲一区视频免费观看 | 亚洲成人黄色网址 | 久久无码精品一区二区三区 | 精品一区精品二区 | 免费在线观看日韩 | 国产99久久久精品视频 | 亚洲黄色大片 | 96av麻豆蜜桃一区二区 | 欧美日本在线观看视频 | 4438全国亚洲精品在线观看视频 | 婷婷丁香国产 | 超级碰碰免费视频 | 日韩在线免费观看视频 | 国产在线不卡 | 久久人人爽人人爽人人片av免费 | 激情婷婷| 9999毛片| 手机av看片 | 成人a视频在线观看 | 中文字幕免费在线看 | 中文字幕在线观看完整 | 久久精品一区二区三区国产主播 | 久久男人免费视频 | 伊人五月婷 | 日韩专区av | 又黄又爽又无遮挡免费的网站 | 在线观看一区二区视频 | 亚洲综合在线观看视频 | 中文字幕制服丝袜av久久 | 国产视| 婷婷激情五月综合 | 一级理论片在线观看 | 一个色综合网站 | 国产不卡精品视频 | av在线播放网址 | 久久伊人操 | 69精品人人人人 | 国产视频一区二区在线观看 | 天天插天天射 | 成年一级片 | 免费色视频 | 久久99精品热在线观看 | 午夜一级免费电影 | 91视频网址入口 | 狠狠躁夜夜躁人人爽视频 | 亚洲精品午夜久久久久久久 | 国产精品手机在线 | 黄a网| 亚洲砖区区免费 | 胖bbbb搡bbbb擦bbbb | 婷婷在线网 | 婷婷福利影院 | 久草视频在线资源 | 婷婷精品国产欧美精品亚洲人人爽 | 天天操天天舔天天爽 | 日本公妇色中文字幕 | 中文视频在线播放 | 国产日韩精品一区二区三区 | 999成人网 | 97在线免费观看视频 | 青青河边草观看完整版高清 | 在线播放国产一区二区三区 | 亚洲男女精品 | 奇人奇案qvod | 婷婷五情天综123 | 国产原创在线 | 一区二区三区四区影院 | 国产96精品| 免费看成人 | 国产乱对白刺激视频不卡 | 少妇bbbb揉bbbb日本 | 欧美黄色特级片 | 久草在线 | 又黄又刺激的视频 | av永久网址 | 免费男女羞羞的视频网站中文字幕 | 久久草在线视频国产 | 欧美性脚交 | 草久久av | 日韩精品1区2区 | 日本性xxxxx 亚洲精品午夜久久久 | 成人观看 | 最新国产一区二区三区 | 玖玖在线资源 | 五月婷婷国产 | 狠狠插天天干 | 天天干天天操av | 成人 亚洲 欧美 | 一区二区三区四区五区在线 | 国产在线国偷精品产拍 | 日韩av视屏| a成人v在线 | 日本中文字幕一二区观 | 国产小视频在线免费观看 | av一级一片| 欧美成a人片在线观看久 | 日韩一区正在播放 | 亚洲精品动漫久久久久 | 福利视频第一页 | 国产精品久久久久久久婷婷 | 香蕉视频在线免费看 | 男女靠逼app | 国产精品岛国久久久久久久久红粉 | 人人澡人人澡人人 | 久草com| 亚洲成成品网站 | 日韩三级视频在线观看 | 日韩精品久久久免费观看夜色 | av成人免费在线观看 | 中国一级特黄毛片大片久久 | 97成人在线观看视频 | 亚洲天堂网视频在线观看 | 亚洲一区日韩在线 | 精品成人免费 | 国产不卡免费视频 | 天天艹| 天天干干 | 成人免费看片网址 | 天天干天天干天天干天天干天天干天天干 | 国产最新视频在线观看 | 91在线91拍拍在线91 | 三级免费黄色 | 亚洲九九九 | 久久网页 | 91在线国内视频 | 在线 视频 一区二区 | 婷婷婷国产在线视频 | 精品视频免费久久久看 | 中文字幕视频播放 | 婷婷福利影院 | 久久1区 | 国产精品九九热 | 狠狠干夜夜爱 | 久久国产精品色婷婷 | 在线精品在线 | 又污又黄网站 | 久久久精品高清 | 国产黄色av网站 | 亚洲国产中文在线 | 五月婷婷视频在线 | 香蕉视频网站在线观看 | 18岁免费看片 | 韩国av一区二区三区在线观看 | 久久免费精品视频 | 亚洲精品国产电影 | 中文字幕亚洲高清 | 午夜影视剧场 | 国产美女精品人人做人人爽 | 99久免费精品视频在线观看 | 免费三级av | 日本不卡一区二区 | 特级大胆西西4444www | 久操视频在线观看 | 九九九九精品九九九九 | 黄色电影小说 | 国产一区二区在线影院 | 国产精品免费久久久久久久久久中文 | 96久久欧美麻豆网站 | 久久久国产精品成人免费 | 久久久观看| 久久精品—区二区三区 | 久久九九国产视频 | 国产精品久久久久久999 | 97爱爱爱 | 久久久久亚洲精品中文字幕 | 99久久99久久免费精品蜜臀 | 国产精品一区在线 | 久久精品综合视频 | 国产色在线观看 | 婷婷精品| 国产人成在线视频 | 在线观看视频一区二区三区 | 欧美一区二区三区在线观看 | 国产精品久久久久久久久久直播 | 成人免费看视频 | 国产日韩精品一区二区 | 天天爽综合网 | 一区中文字幕电影 | 四虎国产精品免费观看视频优播 | 美女网站久久 | 亚洲欧洲中文日韩久久av乱码 | 色全色在线资源网 | 97国产大学生情侣酒店的特点 | 欧美人人爱 | 五月的婷婷 | 日韩av成人 | 久久亚洲欧美日韩精品专区 | 97看片吧| 黄视频色网站 | 草久在线 | 91精品免费| 亚洲va综合va国产va中文 | 免费日韩电影 | 日韩动漫免费观看高清完整版在线观看 | 黄色a级片在线观看 | 97在线影院 | 成人av免费在线 | 国产色爽 | 狠狠操综合 | 久久精品视频网址 | 精品在线小视频 | 国产成人性色生活片 | 97超碰伊人 | 在线观看一区 | 高清在线观看av | 成年人视频免费在线播放 | 视频二区 | 成人黄色一级视频 | 久久美女精品 | 91av99| 在线免费视频一区 | 欧美日韩久 | 国产一级淫片免费看 | 精品一区精品二区高清 | 中文国产在线观看 | 正在播放国产一区二区 | 一区久久久 | 日韩欧美视频免费观看 | 国产精品毛片完整版 | 色大片免费看 | 西西444www大胆高清图片 | 狠狠插天天干 | 在线亚洲人成电影网站色www | 欧美日韩一区二区视频在线观看 | 男女激情免费网站 | 国产精品99久久久久久小说 | 亚洲综合在 | 日韩免费看视频 | 久久人人97超碰国产公开结果 | 中文字幕91 | 日韩成人欧美 | 精品久久久国产 | 91精品国自产在线观看欧美 | 正在播放五月婷婷狠狠干 | 国产a级片免费观看 | 香蕉视频在线免费 | 91高清完整版在线观看 | 亚洲天堂网视频 | 日韩色区 | 永久免费精品视频 | 久久激情片 | 国产成人三级三级三级97 | 激情黄色av | 日韩理论片| 69热国产视频 | 中文字幕在线看视频国产 | 久草免费在线 | 成年人免费电影 | 一区二区视频网站 | 亚洲精品一区二区三区高潮 | 日韩精品久久久久久久电影竹菊 | 最新日韩电影 | 在线观看中文 | 亚洲国产黄色片 | 午夜在线观看 | 国产精品不卡在线观看 | 在线观看精品视频 | 久久99精品久久久久蜜臀 | 日韩精品不卡在线观看 | 亚洲理论片在线观看 | 色妞色视频一区二区三区四区 | 综合久久精品 | 在线国产福利 | 天天干一干| 色综合天天综合在线视频 | 日日夜夜天天操 | 国产精品丝袜久久久久久久不卡 | 香蕉视频在线播放 | 日韩电影久久久 | 最近中文字幕国语免费高清6 | 午夜精品久久久久久久久久久久久久 | 黄色小说18 | 国产精品电影在线 | 精品成人国产 | 日韩视频一区二区三区在线播放免费观看 | 欧美视频www | 一区二区久久 | 色在线高清 | 久久综合久久综合久久综合 | 日韩r级电影在线观看 | 亚洲一区精品人人爽人人躁 | 国产中文字幕在线看 | www.91国产| 久久新| 久久激情综合网 | 骄小bbw搡bbbb揉bbbb | 久久精品老司机 | 在线观看完整版 | 免费在线观看av的网站 | 色黄久久久久久 | 97国产大学生情侣酒店的特点 | 中文字幕在线观看视频网站 | 婷婷新五月 | 欧美日韩高清一区 | www操操操| 韩国av免费在线 | 亚洲欧美乱综合图片区小说区 | 97视频人人澡人人爽 | 98超碰人人 | 97国产精品一区二区 | 国内视频在线观看 | 欧美日韩不卡一区二区三区 | 国产精品久久久久久一区二区 | 国产永久免费高清在线观看视频 | 亚州欧美视频 | 久久综合导航 | 免费观看成年人视频 | 97国产视频| www毛片com| 欧美日韩国产精品一区 | 欧美亚洲另类在线视频 | 精品国产一区二区三区男人吃奶 | 亚洲精品乱码久久久一二三 | 视频国产一区二区三区 | 天天干婷婷 | 欧美日韩aa | 久久精品资源 | 毛片网站在线观看 | 精品久久久久久亚洲综合网站 | 天天射天天射天天 | 三级黄色大片在线观看 | 久久伊人八月婷婷综合激情 | 亚洲闷骚少妇在线观看网站 | 欧美成人理伦片 | 欧美色噜噜 | 日韩91在线 | www.亚洲黄色| 亚洲午夜精品福利 | 永久免费av在线播放 | 色婷婷激情综合 | 国产91精品高清一区二区三区 | 日本中文字幕免费观看 | 久久有精品 | 免费高清在线观看成人 | 国产999视频 | 国产精品99久久久久久小说 | 一色av| 97热久久免费频精品99 | 中文字幕激情 | 五月天六月丁香 | 欧美一级片免费观看 | 97超碰在线免费 | 国产在线播放不卡 | 国产一区二区影院 | av黄色影院 | 91久色蝌蚪 | 麻豆91在线播放 | 99久久99视频只有精品 | 91精品国自产在线偷拍蜜桃 | 久久精品国产免费 | 黄色在线免费观看网站 | 人人澡人人添人人爽一区二区 | 在线看免费 | 不卡视频在线看 | 日本一区二区三区免费观看 | 久久免费国产精品 | 日韩成人不卡 | 亚洲最新视频在线播放 | 中文字幕日本电影 | 91免费视频网站在线观看 | 蜜臀久久99精品久久久无需会员 | 天天干天天想 | 99视频精品免费视频 | 免费涩涩网站 | 国产视频在线免费观看 | 国产精品video爽爽爽爽 | 一区二区在线影院 | 日日夜夜精品视频 | 中文字幕91| 久久精品免费看 | 免费看污网站 | 偷拍区另类综合在线 | 亚洲精品中文在线 | japanesexxxhd奶水 国产一区二区在线免费观看 | 免费观看全黄做爰大片国产 | 天天干天天操天天搞 | 91精品免费在线观看 | 久久女同性恋中文字幕 | 伊人伊成久久人综合网站 | 韩日av在线 | 国产亚洲欧美一区 | 中文字幕在线播放一区 | 亚洲 欧洲 国产 精品 | 激情动态| 婷婷丁香在线 | 91理论片午午伦夜理片久久 | 国产剧情在线一区 | 天天综合天天综合 | 99理论片 | 国内精品久久久久久久久 | 黄色片毛片 | 手机成人av | 69精品视频 | 婷婷久久婷婷 | 日韩av不卡在线观看 | 日韩在线视 | 久久久91精品国产一区二区精品 | 玖玖在线播放 | 视频在线观看99 | 久久精品久久99精品久久 | 日韩a级免费视频 | 国产精品入口传媒 | 成人av电影网址 | 欧美日韩视频在线 | 久久综合之合合综合久久 | 97免费中文视频在线观看 | 天天爽天天射 | 少妇性aaaaaaaaa视频 | 欧美日韩在线视频一区 | 五月婷婷在线综合 | av三级在线播放 | 日日爽视频 | 婷婷爱五月天 | 精品中文字幕在线观看 | 日韩免费三区 | 男女精品久久 | 欧美日韩中文在线视频 | 国产精品亚洲人在线观看 | 国产一级在线 | 热久久影视| av成人免费在线看 | 亚洲最大的av网站 | 国产高清在线a视频大全 | 丁香六月欧美 | 婷婷五综合 | 中文十次啦| 亚洲精品乱码久久久久久高潮 | 日韩av一区二区三区 | 麻豆视传媒官网免费观看 | 久久久久久在线观看 | 欧美精品一区二区三区四区在线 | 六月丁香婷婷久久 | 天天操夜夜逼 | 91三级在线观看 | 中文字幕久久精品一区 | 国产精品毛片一区二区三区 | 精品一区二区三区在线播放 | 精品欧美小视频在线观看 | 在线观看一区 | 美女网站免费福利视频 | 91热爆视频 | 亚洲成av人片在线观看香蕉 | 久久精品黄 | 日日夜夜精品视频天天综合网 | av福利资源| 亚洲第二色 | 国产成人精品久久亚洲高清不卡 | 激情开心站 | 五月婷婷在线综合 | 欧美成人亚洲 | 西西大胆啪啪 | 国产日产在线观看 | 久久激情日本aⅴ | 97色在线视频| 免费看片在线观看 | 香蕉精品视频在线观看 | 中文字幕成人 | 久热免费 | 国产精品一区二区吃奶在线观看 | 天天se天天cao天天干 | 黄色在线看网站 | 欧美日韩中文在线观看 | 这里只有精彩视频 | 国产美女免费观看 | 国产毛片久久久 | 国产美女在线免费观看 | 中文字幕av日韩 | 涩涩在线 | 国产精品系列在线播放 | 成人亚洲欧美 | 特黄特色特刺激视频免费播放 | 99精品国产成人一区二区 | 日本视频不卡 | 亚洲黄色成人 | 日韩精品视频免费 | 色视频网站在线观看一=区 a视频免费在线观看 | 成人黄色小说视频 | 精品不卡av | 97人人精品 | 欧美日韩国产三级 | 久久tv视频 | 激情av在线播放 | 最近免费观看的电影完整版 | 色综合天天天天做夜夜夜夜做 | 亚洲精品在线免费播放 | 国产明星视频三级a三级点| 国产九九九精品视频 | 日韩在线精品一区 | 国产精品观看在线亚洲人成网 | 国产日韩三级 | 欧美视频二区 | 亚洲精品女 | 婷婷伊人五月 | 97超级碰碰碰视频在线观看 | 中文字幕免费看 | 日本爽妇网 | 久久精品视频在线观看 | www.黄色在线 | 精品成人免费 | 国产成人精品一区二区在线观看 | 天天综合视频在线观看 | 97日日 | 国产亚洲成人网 | 日韩狠狠操 | 亚洲精品久久久久中文字幕二区 | 国产97在线播放 | 99热精品在线观看 | av网站免费看 | 国产黄色片一级三级 | 国产高清在线a视频大全 | 亚洲精品国产精品国自产 | 菠萝菠萝蜜在线播放 | 国产美女在线精品免费观看 | 久久伊人五月天 | 青青啪| 中文字幕在线资源 | 成年人免费电影在线观看 | 国产一二三四在线视频 | 久久久精品视频网站 | 亚洲精品字幕在线 | 中文字幕免费不卡视频 | 日韩电影久久 | 91激情视频在线播放 | 久久久久成人免费 | 337p欧美 | 成人a在线观看高清电影 | 国产精品久久久久久爽爽爽 | 456免费视频 | 久久福利在线 | 国产四虎影院 | 国产99久久久精品 | 中国精品少妇 | 91精品国产欧美一区二区成人 | 久青草影院 | 日韩免费av在线 | 欧美精品在线观看一区 | 香蕉网在线 | 精品国产一区二区三区免费 | 久久久网站 | 日本aaa在线观看 | 96精品视频 | 国产视频一区精品 | 欧美怡红院视频 | 成人h在线播放 | 九草在线视频 | 成 人 黄 色 视频免费播放 | 国产成人一区二区三区在线观看 | 九九在线国产视频 | 九色精品在线 | 狠狠操狠狠干天天操 | 亚洲精品久久视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 日韩黄色av网站 | 99久久精品免费看国产免费软件 | 在线观看日韩免费视频 | 激情综合色综合久久综合 | 97色国产| 国产美女被啪进深处喷白浆视频 | 日韩欧美在线观看一区二区三区 | 狠狠色丁香婷婷 | 色综合久久66 | 久草在线99 | 国产精品不卡 | 日韩影视大全 | 91九色蝌蚪在线 | 国产三级国产精品国产专区50 | 国产日韩中文在线 | 99久久综合国产精品二区 | 91精品国产一区二区三区 | 国产综合香蕉五月婷在线 | 狠狠天天| www.国产高清 | 久热久草在线 | 999视频在线播放 | 91在线观看高清 | 少妇av网| 五月天久久 | 欧美久久久久 | 日韩精品中文字幕久久臀 | 日韩视频精品在线 | 日本精品一区二区在线观看 | 色偷偷av男人天堂 | 麻豆一二三精选视频 | 天天爽综合网 | 香蕉影视app | 亚洲电影图片小说 | 中文在线字幕免费观看 | 手机在线中文字幕 | 99在线视频网站 | 最近在线中文字幕 | 在线观看日本韩国电影 | 国产成视频在线观看 | 麻豆国产精品va在线观看不卡 | 欧美精品三级 | 国产精品久久久网站 | 在线免费视频你懂的 | 久久视频在线观看中文字幕 | 亚洲精品ww | 成人一级片视频 | 在线91网 | 精品国产亚洲日本 | 午夜影院在线观看18 | 黄网站污 | 久久精品国产成人精品 | 一区二区三区免费在线观看 | 免费久久99精品国产婷婷六月 | 国产视频精品网 | 国产精品久久久久久麻豆一区 | 色婷婷一区 | 福利电影久久 | 亚洲国产高清在线观看视频 | 国产婷婷vvvv激情久 | 亚洲精品久 | 精品国产福利在线 | 精品你懂的| 免费在线观看视频a | 在线v片| 国产视频高清 | 黄色www免费 | 欧美十八| 亚洲视频免费在线观看 | 四虎成人av | 欧美日韩国产免费视频 | 国内精品久久久久久久久久清纯 | 国产精品原创视频 | 国产日韩高清在线 | av中文字幕在线观看网站 | 欧美二区在线播放 | 草久久精品 | av资源免费在线观看 | 国产高清小视频 | 免费高清在线一区 | 久久久久久国产精品999 | 久久精品伊人 | 天天爱天天色 | 久久成人黄色 | 久久成人视屏 | 亚洲在线激情 | 五月婷婷在线视频观看 | 91大神精品视频在线观看 | 久久免费国产视频 | 久草在线免费看视频 | 国产精品三级视频 | 久草在线免费在线观看 | 色婷婷亚洲婷婷 | 丁香亚洲| 欧美视频18 | 麻豆视频免费在线播放 | av一区二区三区在线 | 99精品热视频只有精品10 | 色香天天 | 日韩精品一区二区在线视频 | 日韩欧美在线第一页 | 天天射网站 | 美女视频黄免费的久久 | 国产精品久久久视频 | 公与妇乱理三级xxx 在线观看视频在线观看 | 久久免费视频3 | 亚洲经典中文字幕 | 黄色三级在线观看 | 成人国产精品免费 | 成年人黄色在线观看 | 精品国产观看 | 日韩性xxx | 黄色www免费| 久久99视频免费 | 国产尤物视频在线 | 亚洲视频axxx | 在线亚洲小视频 | 97av在线视频免费播放 | 久久a级片 | 五月婷婷视频在线 | 久久天天操 | av一级免费 | 久草免费手机视频 | 久久国产一二区 | 免费视频久久 | 中文字幕电影在线 | 欧美一级高清片 | 国产一区二区三区 在线 | 免费黄色一区 | 久久精品这里都是精品 | 久久理伦片 | 久久精品影片 | 国产高清视频在线免费观看 | 成年人看片 | 国产一二区免费视频 | 91污视频在线观看 | 97天天综合网 | 欧美激情综合五月色丁香小说 | 最近最新最好看中文视频 | 一区二区三区高清在线观看 | 久精品一区| 一级片视频在线 | 亚洲,播放 | 国产一区在线免费观看视频 | 国产日韩在线看 | 国产免费视频在线 | 久久国产视频网站 | 欧美性极品xxxx娇小 | 中文字幕在线看 | 国产精品毛片一区二区三区 | 国产一区在线免费观看视频 | 啪啪免费观看网站 | 成人观看视频 | 免费看日韩 | 日日插日日干 | 免费看片网站91 | 欧美日韩高清在线观看 | av在线日韩 | 国产不卡精品 | 午夜在线国产 | 色婷婷视频在线 | 久久视频这里有精品 | 97视频播放 | 欧美aⅴ在线观看 | 91人人视频在线观看 | 国产精品毛片完整版 |