• Codeforces 862C


    862C - Mahmoud and Ehab and the xor

    思路:找两对异或后等于(1<<17-1)的数(相当于加起来等于1<<17-1),两个再异或一下就变成0了,0异或x等于x。所以只要把剩下的异或起来变成x就可以了。如果剩下来有3个,那么,这3个数可以是x^i^j,i,j。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define pb push_back
    const int N=1e7+5;
    bool vis[N]={false};
    bool vs[105]={false};
    vector<int>ans;
    vector<int>temp;
    int n,x;
    bool flag=false;
    void dfs(int s,int t,int n)
    {
        if(flag)return ;
        if(t==0)
        {
            if(!vs[n])
            {
                for(int i=0;i<temp.size();i++)
                ans.pb(temp[i]),vis[temp[i]]=true;
                ans.pb(n),vis[n]=true;
                flag=true;
            }
            return ;
        } 
        for(int i=s;i<20;i++)
        {
            temp.pb(i);
            vs[i]=true;
            if(i!=x)dfs(i+1,t-1,n^i);
            vs[i]=false;
            temp.pop_back();
        }
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int n,x;
        cin>>n>>x;    
        if(n==2&&x==0)
        {
            cout<<"NO"<<endl;
            return 0;
        }
        int t=n%4,t1=n-t;
        if(t==2&&n!=2)t=6,t1-=4;
        if(t==0)t=4,t1-=4;
        vis[x]=true;
        dfs(0,t-1,x);
        for(int i=0;i<(1<<17);i++)
        {
            if(t1)
            {
                if((!vis[i])&&(!vis[131071-i]))
                {
                    ans.pb(i);
                    ans.pb(131071-i);
                    vis[i]=vis[131071-i]=true;
                    t1-=2;
                }
            }
            else break;
        } 
        cout<<"YES"<<endl;
        for(int i=0;i<ans.size();i++)
        {
            cout<<ans[i];
            if(i!=ans.size())cout<<' ';
        }
        cout<<endl;
        return 0;
    }
  • 相关阅读:
    初识多线程
    java开发中我们经常用到的一些名词
    gitHub提交代码
    Java-基础-HashMap
    Java-基础-LinkedList
    Java-基础-ArrayList
    Java-基础-JDK动态代理
    Java-基础-反射
    RabbitMQ-延迟队列
    RabbitMQ-TTL-死信队列_DLX
  • 原文地址:https://www.cnblogs.com/widsom/p/7569421.html
Copyright © 2020-2023  润新知