奇奇怪怪的错误

P6136 【模板】普通平衡树(数据加强版)

critnos @ 2020-02-27 12:21:53

RT,不知道为什么只有10pts

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#define ll long long
using namespace std;
using namespace __gnu_pbds;
tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update> a;
int main()
{
    int opt,m,n,last=0,s=0,i;
    ll x;
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
    {
        scanf("%lld",&x);
        a.insert((x<<20)+i);
    }
    for(i=n;i<n+m;i++)
    {
        scanf("%d%lld",&opt,&x);
        x^=last;
        if(opt==1) a.insert((x<<20)+i);
        if(opt==2) a.erase(a.lower_bound(x<<20));
        if(opt==3) printf("%d\n",last=(a.order_of_key(x<<20)+1));
        if(opt==4) printf("%d\n",last=((*a.find_by_order(x-1))>>20));
        if(opt==5) printf("%d\n",last=((*(--a.lower_bound(x<<20)))>>20));
        if(opt==6) printf("%d\n",last=((*(a.lower_bound(x+1<<20)))>>20));
        if(opt>2) s^=last;
    }
    printf("%d",s);
}

by registerGen @ 2020-02-27 12:23:54

读题


by critnos @ 2020-02-27 12:28:57

@xcs112358 感觉没什么问题呀?dalao发现哪里有问题呢?


by registerGen @ 2020-02-27 12:31:01

题目让你输出一个整数qwq


by critnos @ 2020-02-27 12:31:24

@xcs112358 哦谢谢dalao


by formkiller @ 2020-02-27 12:31:39

@26535 只用数出一个数


by critnos @ 2020-02-27 12:34:34

@formkiller @xcs112358

然鹅还是错的,两位dalao能再帮忙看看吗

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#define ll long long
using namespace std;
using namespace __gnu_pbds;
tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update> a;
int main()
{
    int opt,m,n,last=0,s=0,i;
    ll x;
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
    {
        scanf("%lld",&x);
        a.insert((x<<20)+i);
    }
    for(i=n;i<n+m;i++)
    {
        scanf("%d%lld",&opt,&x);
        x^=last;
        if(opt==1) a.insert((x<<20)+i);
        if(opt==2) a.erase(a.lower_bound(x<<20));
        if(opt==3) last=(a.order_of_key(x<<20)+1);
        if(opt==4) last=((*a.find_by_order(x-1))>>20);
        if(opt==5) last=((*(--a.lower_bound(x<<20)))>>20);
        if(opt==6) last=((*(a.lower_bound(x+1<<20)))>>20);
        if(opt>2) s^=last;
    }
    printf("%d",s);
}

by registerGen @ 2020-02-27 12:36:40

蒟蒻只能告退,不会pb_ds


by critnos @ 2020-02-27 12:37:06

qwq


by Smile_Cindy @ 2020-02-27 12:39:31

@26535 不能只左移20位

因为10^6+10^5>2^{20}

要移21位


by critnos @ 2020-02-27 12:41:09

@Alpha thx

以后还是用double吧


| 下一页