zoukankan      html  css  js  c++  java
  • Round#628(div2)

    A. EhAb AnD gCd

    题意:

    You are given a positive integer (x). Find any such (2) positive integers (a) and (b) such that (GCD(a,b)+LCM(a,b)=x)

    for _ in range(int(input())):
        x = int(input())
        print(*[1,x-1])
    

    B. CopyCopyCopyCopyCopy

    题意:

    可以把一个序列复制若干次,问最长的 LIS

    for _ in range(int(input())):
        ans = set()
        n = int(input())
        L = list(map(int,input().split()))
        for i in L:
            ans.add(i)
        print(len(ans))
    

    C. Ehab and Path-etic MEXs

    题意

    给一棵树,要求给边权赋值 (0)(n - 2),使得 (MEX(u,v)) 的最大值最小

    (MEX(u,v)) 表示 没有出现在 (u)(v) 的路径上的权值的最小值

    思路:

    若有结点的度大于等于 (3),则从 (0) 开始按顺序安排边权,这样任意路径都不可能同时出现 (0)(1)(2)

    (MEX(u,v)) 也就不可能大于 (2)

    若没有,则是链,随意安排

    #include<bits/stdc++.h>
    using namespace std;
    
    const int maxn = 1e5 + 10;
    
    int deg[maxn];
    pair<int,int>Edge[maxn];
    
    int main(){
        int n;scanf("%d",&n);
        for(int i = 0;i < n - 1;i++){
            scanf("%d%d",&Edge[i].first,&Edge[i].second);
            deg[Edge[i].first]++;deg[Edge[i].second]++;
        }
        int k = -1;
        for(int i = 1;i <= n;i++){
            if(deg[i] >= 3){
                k = i;
                break;
            }
        }
        if(k == -1){
            for(int i = 0;i < n - 1;i++){
                printf("%d
    ",i);
            }
        }
        else{
            int t = deg[k];
            int x = 0;
            for(int i = 0;i < n - 1;i++){
                if(Edge[i].first == k || Edge[i].second == k){
                    printf("%d
    ",x++);
                }
                else{
                    printf("%d
    ",t++);
                }
            }
        }
    }
    

    D. Ehab the Xorcist

    题意:

    (u)(v),求 所有数的异或为 (u) 和为 (v) 的最短数组

    思路:

    (u>v), 则无解。

    (t = v - u) ,把 (t) 拆成两个数,若 (t) 是奇数,则无解

    拆成 (u,k,k) ,其中 (2k = t)

    放到对应的位上,每次横着抽取。

    #include<bits/stdc++.h>
    using namespace std;
    
    
    int bit[2000];
    
    void init(long long u,long long t){
        int now = 0;
        while(u){
            if(u&1ll){
                bit[now]++;
            }
            u >>= 1ll;
            now++;
        }
    
        now = 0;
        while(t){
            if(t&1ll){
                bit[now]+=2;
            }
            t >>= 1ll;
            now++;
        }
    }
    int main(){
        long long u,v;
        cin >> u >> v;
        if(u == v && u == 0){
            cout << 0 << endl;
            return 0;
        }
        if(u > v || ((v - u) & 1)){
            cout << - 1 << endl;
        }
        else{
            init(u,v-u>>1ll);
            vector<long long>ans;
    
            int ok = 1;
            while(ok){
                long long t = 0;
                for(int i = 0;i < 200;i++){
                    if(bit[i]){
                        bit[i]--;
                        t += (1ll << i);
                    }
                }
                if(t == 0){
                    ok = false;
                }
                else{
                    ans.push_back(t);
                }
            }
            cout << ans.size() << endl;
            for(int i = 0;i < ans.size();i++){
                cout << ans[i] << " ";
            }
        }
    }
    
  • 相关阅读:
    H5中canvas标签制作在线画板
    H5中标签Canvas实现图像动画
    H5中画图标签Canvas---画矩形,画线,画圆,渐变色,图形载入
    java 的反射机制
    maven的介绍
    000 关于IDEA的基本环境配置以及快速使用(git拉载程序,Jdk安装,tomcat部署,应用程序打包运行)
    H5视频播放器属性与API控件,以及对程序的解释
    HTML5 标签语法变化和使用概念
    H5的简介
    android驱动USB摄像头
  • 原文地址:https://www.cnblogs.com/sduwh/p/12505368.html
Copyright © 2011-2022 走看看