航航可爱捏


私信TA

用户名:uq_91398989994

访问量:1334

签 名:

等  级
排  名 29170
经  验 522
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

注意事项:

A^B=x成立时

有A^x=B


参考代码:

#include

using namespace std;


int n,m,l,r,x;

const int maxm=100003;

int a[maxm]={0};

set<int> __all[2000003];//用来存储      目标 下标


int main()

{

     ios_base::sync_with_stdio(0);

     cin.tie(0);//没错,就是这两行

     cin>>n>>m>>x;

       for(int i=1;i<=n;i++)

       {

            cin>>a[i];

            __all[a[i]^x].insert(i);

       }


       for(int i=1;i<=m;i++)

       {

            cin>>l>>r;

            int flag=0;

           

            for(int j=l;j<=r&&flag==0;j++)

            {

                int A=a[j];

               

                if(__all[A].size()==0)continue;

                else

                {

                for(set<int>::iterator it=__all[A].begin();it!=__all[A].end();it++)

                {

                    //printf("%d<=%d<=%d",l,*it,r);

                    if(l<=*it&&*it<=r)

                    {

                        flag=1;

                        break;

                    }

                    else if(*it>r)    break;

                }

            }

        }

            if(flag)cout<<"yes\n";

            else cout<<"no\n";

       

       }

       

        return 0;

}


 

0.0分

6 人评分

  评论区

我写cin、cout超时,换成scanf、printf还是超时,我还寻思是代码问题....
2022-05-13 15:11:37
  • «
  • 1
  • »