zoukankan      html  css  js  c++  java
  • Codeforces Round #563 (Div. 2) A B C D

    Codeforces Round #563 (Div. 2)

    A:Ehab Fails to Be Thanos

    题意:给你一个数组,是否存在一种顺序,使数组前一半和与后一半和不相等

    排序,前n项和 后n项和 是否相等。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e4;
    
    int a[N];
    int n;
    int main(){
        cin>>n;
        for(int i=0;i<2*n;i++){
            cin>>a[i];
        }
        sort(a,a+2*n);
        int sum1=0 ,sum2=0;
        for(int i=0;i<n;i++){
            sum1+=a[i];
            sum2+=a[i+n];
        }
        if(sum1==sum2){
            cout<<"-1
    ";
        }
        else{
            for(int i=0;i<2*n;i++){
                cout<<a[i]<<" ";
            }
            cout<<"
    ";
        }
        return 0;
    }
    View Code

    B:Ehab Is an Odd Person

    题意:给你一个数组,if ai+aj是奇数 ,那么可以交换ai aj ,求字典序最小的数组

    例:2 4 8 3 , 3可以移到任何一个位置,2 4 8 通过3也可以到任何位置,所以字典序最小为2 3 4 8

    所以只要数组里面有奇数也有偶数,就直接排序后输出,否则将原数组直接输出

    #include<bits/stdc++.h>
    using namespace std;
    const int N=2e5;
    typedef long long ll;
    int n;
    ll a[N];
    int main(){
        cin>>n;
        int flag=0,ff=0;
        for(int i=0;i<n;i++){
            cin>>a[i];
            if(a[i]%2)flag=1;
            else ff=1;
        }
        if(!ff||!flag) {
            for(int i=0;i<n;i++){
                cout<<a[i]<<" ";
            }
            cout<<"
    ";
            return 0;
        }
        sort(a,a+n);
        for(int i=0;i<n;i++){
            cout<<a[i]<<" ";
        }
        cout<<"
    ";
        return 0;
    }
    View Code

    C:Ehab and a Special Coloring Problem

    题意:如果i j互质,ai!=aj,给数组a赋值,使数组a中最大数最小

    素数与任何数互质,所以每个素数对应的值不同,合数的值=其任何一个因子对应值,这样可以保证“如果i j互质,ai!=aj”;

    #include<bits/stdc++.h>
    using namespace std;
    const int N=2e5;
    int n;
    int a[N]={0};
    int main(){
        cin>>n;
        int j=1;
        for(int i=2;i<=n;i++){
            if(a[i]==0){
                for(int k=i;k<=n;k+=i){
                    a[k]=j;
                }
                j++;
            }
        }
        for(int i=2;i<=n;i++){
            cout<<a[i]<<" ";
        }
        cout<<"
    ";
        return 0;
    }
    View Code

    D:Ehab and the Expected XOR Problem

    题意:给你一个n,x,让你构造一个数组a,a满足1<=ai<2 , a中任何一个子段的异或和不为0或x , 数组长度l尽量大

    设a的异或前缀和为b,  bi=a0^a1^a2……ai 

    设数组a中一个子段为  ai^ai+1^a……^ak=bi-1^bk   即任何一个子段的异或和都可以表示成两个bi的异或和

    要使任意一个子段的异或和不为0或x ,即要使任意bi^bj 不为 0 ,x

    求出b, 然后ai=bi^bi-1  

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,x;
    set<int> s;
    vector<int> v;
    int main(){
        cin>>n>>x;
        for(int i=1;i<1<<n;i++){
            s.insert(i);
        }
        s.erase(x);
        v.push_back(0);
        while(!s.empty()){
            int p=*s.begin();
            s.erase(p);
            s.erase(p^x);
            v.push_back(p);
        }
        cout<<v.size()-1<<"
    ";
        for(int i=1;i<v.size();i++){
            cout<<(v[i]^v[i-1])<<" ";
        }
        cout<<"
    ";
        return 0;
    }
    View Code
  • 相关阅读:
    无法设置 / 添加网络打印机?报错 无法保持设置?
    tp剩余未验证内容-5
    再谈 iptables 防火墙的 指令配置
    tp剩余未验证内容-4
    tp剩余未验证内容-3
    CentOS7.4安装配置mysql8 TAR免安装版
    CentOS7中systemctl的使用与CentOS6中service的区别
    CentOS下如何查看并杀死僵尸进程
    CentOS SVN服务器管理多项目
    swoole+Redis实现实时数据推送
  • 原文地址:https://www.cnblogs.com/YJing814/p/10974983.html
Copyright © 2011-2022 走看看