array

array

权值线段树

查询剪枝

疯狂RE

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define maxn 100000+500
#define inf n+1
int L[maxn*4],R[maxn*4],V[maxn*4];
int A[maxn],B[maxn];
inline int read()
{
    char ch=getchar();
    int ans=0;
    while(ch<'0'||ch>'9')ch=getchar();
    while(ch>='0'&&ch<='9')
    {
        ans=ans*10+ch-'0';
        ch=getchar();
    }
    return ans;
}

int n,m,La;
void build(int l,int r,int x)
{
    L[x]=l,R[x]=r;
    if(l==r)
    {
        V[x]=A[l];
        return;
    }
    int mid=(l+r)/2;
    build(l,mid,2*x);
    build(mid+1,r,2*x+1);
    V[x]=max(V[2*x],V[2*x+1]);
    return;
}
void update(int x,int d,int w)
{
    if(L[x]==R[x]&&L[x]==d)
    {
        V[x]=w;
        return;
    }else if(L[x]==R[x])return;
    int mid=(L[x]+R[x])/2;
    if(d<=mid)update(2*x,d,w);
    else update(2*x+1,d,w);
    V[x]=max(V[2*x],V[2*x+1]);
}

bool query(int x,int b,int c)
{
  //cout<<x<<' '<<b<<' '<<c<<endl;

    if(L[x]==R[x]&&V[x]>b&&c<=L[x])
    {
        cout<<L[x]<<'\n';
        La=L[x];
        return true;
    }
    else if(L[x]==R[x])return false;
    int mid=(L[x]+R[x])/2;
    if(c<=mid&&V[2*x]>b)
        if(query(2*x,b,c))return true;
    if(c<=R[x]&&V[2*x+1]>b)
        if(query(2*x+1,b,c))return true;
    return false;

}
signed main()
{
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    int T,a,b,c;
    T=read();
    while(T--)
    {
        // init();
        n=read(),m=read();
        for(int i=1; i<=n; i++)
        {
            a=read();
            A[a]=i;
            B[i]=a;
        }
        //A[n+1]=n+1;
        build(1,n,1);
        La=0;
        for(int i=1; i<=m; i++)
        {
            a=read();
            if(a==1)
            {
                b=read();
                b^=La;
                update(1,B[b],n+1);
            }
            else
            {
                b=read();
                c=read();
                //cout<<La<<"LE\n";
                b^=La;
                c^=La;
                if(!query(1,b,c))
                {
                    cout<<n+1<<'\n';
                    La=(n+1);
                }
            }
        }
    }



}

 

为什么写这种就能过?

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define maxn 100000+500
#define inf n+1
int L[maxn*4],R[maxn*4],V[maxn*4];
int A[maxn],B[maxn];
inline int read()
{
    char ch=getchar();
    int ans=0;
    while(ch<'0'||ch>'9')ch=getchar();
    while(ch>='0'&&ch<='9')
    {
        ans=ans*10+ch-'0';
        ch=getchar();
    }
    return ans;
}

int n,m,La;
void build(int l,int r,int x)
{

    if(l==r)
    {
        V[x]=A[l];
        return;
    }
    int mid=(l+r)/2;
    build(l,mid,2*x);
    build(mid+1,r,2*x+1);
    V[x]=max(V[2*x],V[2*x+1]);
    return;
}
void update(int x,int l,int r,int d,int w)
{
    if(l==r)
    {
        V[x]=w;
        return;
    }
    int mid=(l+r)/2;
    if(d<=mid)update(2*x,l,mid,d,w);
    else update(2*x+1,mid+1,r,d,w);
    V[x]=max(V[2*x],V[2*x+1]);
}

bool query(int x,int l,int r,int b,int c)
{
  //cout<<x<<' '<<b<<' '<<c<<endl;

    if(l==r&&V[x]>b&&c<=l)
    {
        cout<<l<<'\n';
        La=l;
        return true;
    }
    else if(l==r)return false;
    int mid=(l+r)/2;
    if(c<=mid&&V[2*x]>b)
        if(query(2*x,l,mid,b,c))return true;
    if(c<=r&&V[2*x+1]>b)
        if(query(2*x+1,mid+1,r,b,c))return true;
    return false;

}
signed main()
{
    freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    int T,a,b,c;
    T=read();
    while(T--)
    {
        // init();
        n=read(),m=read();
        for(int i=1; i<=n; i++)
        {
            a=read();
            A[a]=i;
            B[i]=a;
        }
        //A[n+1]=n+1;
        build(1,n,1);
        La=0;
        for(int i=1; i<=m; i++)
        {
            a=read();
            if(a==1)
            {
                b=read();
                b^=La;
                update(1,1,n,B[b],n+1);
            }
            else
            {
                b=read();
                c=read();
                //cout<<La<<"LE\n";
                b^=La;
                c^=La;
                if(!query(1,1,n,b,c))
                {
                    cout<<n+1<<'\n';
                    La=(n+1);
                }
            }
        }
    }



}

 

转载于:https://www.cnblogs.com/liulex/p/11404036.html

x:array([7]),y:array([5]) x:array([4]),y:array([1]) x:array([19]),y:array([1]) x:array([5]),y:array([3]) x:array([16]),y:array([9]) x:array([2]),y:array([12]) x:array([8]),y:array([5]) x:array([7]),y:array([6]) x:array([8]),y:array([2]) x:array([7]),y:array([1]) x:array([7]),y:array([8]) x:array([10]),y:array([1]) x:array([3]),y:array([3]) x:array([10]),y:array([3]) x:array([1]),y:array([2]) x:array([1]),y:array([2]) x:array([14]),y:array([3]) x:array([6]),y:array([9]) x:array([23]),y:array([5]) x:array([8]),y:array([2]) x:array([1]),y:array([5]) x:array([1]),y:array([1]) x:array([15]),y:array([2]) x:array([11]),y:array([1]) x:array([1]),y:array([2]) x:array([1]),y:array([7]) x:array([5]),y:array([2]) x:array([4]),y:array([3]) x:array([11]),y:array([3]) x:array([15]),y:array([7]) x:array([4]),y:array([5]) x:array([6]),y:array([6]) x:array([4]),y:array([4]) x:array([3]),y:array([15]) x:array([1]),y:array([2]) x:array([11]),y:array([1]) x:array([7]),y:array([4]) x:array([8]),y:array([10]) x:array([9]),y:array([6]) x:array([11]),y:array([4]) x:array([4]),y:array([15]) x:array([1]),y:array([14]) x:array([4]),y:array([3]) x:array([3]),y:array([9]) x:array([4]),y:array([4]) x:array([14]),y:array([1]) x:array([14]),y:array([3]) x:array([9]),y:array([3]) x:array([3]),y:array([5]) x:array([5]),y:array([15]) x:array([1]),y:array([3]) x:array([4]),y:array([4]) x:array([16]),y:array([12]) x:array([11]),y:array([10]) x:array([2]),y:array([14]) x:array([2]),y:array([9]) x:array([7]),y:array([5]) x:array([1]),y:array([5]) x:array([2]),y:array([6]) x:array([1]),y:array([6]) x:array([2]),y:array([2]) x:array([2]),y:array([3]) x:array([10]),y:array([8]) x:array([5]),y:array([3]) x:array([3]),y:array([23]) x:array([2]),y:array([9]) x:array([6]),y:array([4]) x:array([14]),y:array([12]) x:array([2]),y:array([7]) x:array([11]),y:array([4]) x:array([4]),y:array([2]) x:array([8]),y:array([26]) x:array([8]),y:array([2]) x:array([1]),y:array([23]) x:array([8]),y:array([6]) x:array([3]),y:array([11]) x:array([11]),y:array([3]) x:array([3]),y:array([3]) x:array([6]),y:array([10]) x:array([5]),y:array([4]) x:array([3]),y:array([11]) x:array([7]),y:array([2]) x:array([15]),y:array([7]) x:array([6]),y:array([6]) x:array([7]),y:array([17]) x:array([7]),y:array([16]) x:array([14]),y:array([2]) x:array([6]),y:array([5]) x:array([12]),y:array([13]) x:array([3]),y:array([3]) x:array([3]),y:array([2]) x:array([3]),y:array([1]) x:array([2]),y:array([7]) x:array([4]),y:array([4]) x:array([5]),y:array([4]) x:array([1]),y:array([4]) x:array([9]),y:array([4]) x:array([7]),y:array([13]) x:array([11]),y:array([4]) x:array([1]),y:array([4]) x:array([7]),y:array([7]) x:array([4]),y:array([1]) x:array([7]),y:array([1]) x:array([9]),y:array([11]) x:array([5]),y:array([5]) x:array([8]),y:array([2]) x:array([1]),y:array([2]) x:array([3]),y:array([3]) x:array([15]),y:array([5]) x:array([5]),y:array([3]) x:array([5]),y:array([13]) x:array([2]),y:array([2]) x:array([7]),y:array([3]) x:array([5]),y:array([5]) x:array([4]),y:array([3]) x:array([17]),y:array([14]) x:array([4]),y:array([4]) x:array([4]),y:array([15]) x:array([24]),y:array([3]) x:array([4]),y:array([1]) x:array([6]),y:array([10]) x:array([9]),y:array([9]) x:array([3]),y:array([1]) x:array([4]),y:array([11]) x:array([2]),y:array([9]) x:array([17]),y:array([3]) x:array([7]),y:array([11]) x:array([3]),y:array([9]) x:array([6]),y:array([6]) x:array([7]),y:array([7]) x:array([2]),y:array([8]) x:array([19]),y:array([6]) x:array([6]),y:array([3]) x:array([2]),y:array([2]) x:array([2]),y:array([3]) x:array([2]),y:array([8]) x:array([1]),y:array([19]) x:array([1]),y:array([6]) x:array([8]),y:array([14]) x:array([12]),y:array([7]) x:array([7]),y:array([2]) x:array([2]),y:array([2]) x:array([3]),y:array([1]) x:array([7]),y:array([11]) x:array([2]),y:array([1]) x:array([1]),y:array([6]) x:array([11]),y:array([5]) x:array([2]),y:array([1]) x:array([3]),y:array([7]) x:array([6]),y:array([6]) x:array([6]),y:array([1]) x:array([14]),y:array([5]) x:array([1]),y:array([5]) x:array([1]),y:array([17]) x:array([1]),y:array([12]) x:array([1]),y:array([1]) x:array([1]),y:array([2]) x:array([6]),y:array([2]) x:array([1]),y:array([11]) x:array([5]),y:array([6]) x:array([3]),y:array([1]) x:array([14]),y:array([3]) x:array([1]),y:array([2]) x:array([13]),y:array([3]) x:array([19]),y:array([1]) x:array([7]),y:array([3]) x:array([4]),y:array([2]) x:array([3]),y:array([5]) x:array([7]),y:array([1]) x:array([6]),y:array([2]) x:array([15]),y:array([7]) x:array([15]),y:array([6]) x:array([3]),y:array([7]) x:array([7]),y:array([3]) x:array([4]),y:array([11]) x:array([4]),y:array([14]) x:array([6]),y:array([3]) x:array([2]),y:array([6]) x:array([5]),y:array([2]) x:array([4]),y:array([1]) x:array([1]),y:array([7]) x:array([4]),y:array([2]) x:array([5]),y:array([5]) x:array([5]),y:array([13]) x:array([4]),y:array([1]) x:array([1]),y:array([11]) x:array([6]),y:array([4]) x:array([1]),y:array([5]) x:array([1]),y:array([5]) x:array([1]),y:array([5]) x:array([1]),y:array([2]) x:array([6]),y:array([8]) x:array([3]),y:array([3]) x:array([4]),y:array([8]) x:array([1]),y:array([4]) x:array([5]),y:array([4]) x:array([7]),y:array([10]) x:array([11]),y:array([2]) x:array([3]),y:array([3]) x:array([2]),y:array([2]) x:array([2]),y:array([13]) x:array([6]),y:array([1]) x:array([19]),y:array([9]) x:array([6]),y:array([1]) x:array([2]),y:array([7]) x:array([4]),y:array([2]) x:array([9]),y:array([6]) x:array([4]),y:array([8]) x:array([12]),y:array([2]) x:array([8]),y:array([1]) x:array([8]),y:array([1]) x:array([6]),y:array([9]) x:array([1]),y:array([1]) x:array([10]),y:array([3]) x:array([2]),y:array([2]) x:array([9]),y:array([10]) x:array([10]),y:array([6]) x:array([2]),y:array([18]) x:array([1]),y:array([5]) x:array([1]),y:array([4]) x:array([9]),y:array([6]) x:array([5]),y:array([3]) x:array([3]),y:array([5]) x:array([10]),y:array([16]) x:array([3]),y:array([12]) x:array([1]),y:array([4]) x:array([4]),y:array([23]) x:array([8]),y:array([5]) x:array([3]),y:array([8]) x:array([22]),y:array([9]) x:array([4]),y:array([2]) x:array([6]),y:array([5]) x:array([8]),y:array([2]) x:array([3]),y:array([6]) x:array([4]),y:array([1]) x:array([12]),y:array([2]) x:array([8]),y:array([16]) x:array([7]),y:array([6]) x:array([4]),y:array([5]) x:array([5]),y:array([8]) x:array([6]),y:array([15]) x:array([7]),y:array([4]) x:array([4]),y:array([1]) x:array([10]),y:array([12]) x:array([1]),y:array([19]) x:array([3]),y:array([2]) x:array([9]),y:array([5]) x:array([2]),y:array([9]) x:array([2]),y:array([10]) x:array([9]),y:array([12]) x:array([6]),y:array([16]) x:array([1]),y:array([1]) x:array([5]),y:array([5]) x:array([17]),y:array([2]) x:array([1]),y:array([3]) x:array([2]),y:array([2]) x:array([4]),y:array([3]) x:array([6]),y:array([1]) x:array([5]),y:array([3]) x:array([5]),y:array([5]) x:array([1]),y:array([2]) x:array([1]),y:array([1]) x:array([14]),y:array([2]) x:array([1]),y:array([6]) x:array([5]),y:array([1]) x:array([10]),y:array([6]) x:array([2]),y:array([5]) x:array([1]),y:array([2]) x:array([5]),y:array([5]) x:array([2]),y:array([7]) x:array([2]),y:array([1]) x:array([11]),y:array([2]) x:array([2]),y:array([9]) x:array([4]),y:array([2]) x:array([16]),y:array([7]) x:array([2]),y:array([21]) x:array([8]),y:array([2]) x:array([7]),y:array([1]) x:array([2]),y:array([5]) x:array([7]),y:array([6]) x:array([14]),y:array([8]) x:array([11]),y:array([9]) x:array([1]),y:array([5]) x:array([8]),y:array([2]) x:array([7]),y:array([12]) x:array([3]),y:array([4]) x:array([1]),y:array([10]) x:array([2]),y:array([9]) x:array([1]),y:array([2]) x:array([15]),y:array([2]) x:array([3]),y:array([4]) x:array([1]),y:array([5]) x:array([1]),y:array([6]) x:array([5]),y:array([1]) x:array([7]),y:array([16]) x:array([4]),y:array([8]) x:array([1]),y:array([2]) x:array([17]),y:array([7]) x:array([9]),y:array([2]) x:array([1]),y:array([1]) x:array([8]),y:array([6]) x:array([7]),y:array([5]) x:array([3]),y:array([8]) x:array([11]),y:array([4]) x:array([7]),y:array([4]) x:array([9]),y:array([15]) x:array([8]),y:array([6]) x:array([3]),y:array([2]) x:array([4]),y:array([2]) x:array([6]),y:array([14]) x:array([1]),y:array([11]) x:array([3]),y:array([14]) 使用NET Keras Functional API方式搭建、训练模型,根据X预测Y
07-08
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值