首页 > 其他分享 >Codeforces Round 628 (Div. 2) A-D

Codeforces Round 628 (Div. 2) A-D

时间:2023-04-14 22:47:31浏览次数:34  
标签:NO int void 628 Codeforces read ans Div YES

Codeforces Round 628 (Div. 2)

A. EhAb AnD gCd

void solve(){
    int n=read();
    for(int i=1;i*i<=n;i++){
        int g=__gcd(i,n-i);
        if(g*g+i*(n-i)==n*g){
            cout<<i<<" "<<n-i<<endl;
            break;
        }
    }
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

B. CopyCopyCopyCopyCopy

void solve(){
    int n=read();
    vector<int>a;
    for(int i=0;i<n;i++){
        int x=read();
        a.push_back(x);
    }
    sort(a.begin(),a.end());
    a.erase(unique(a.begin(),a.end()),a.end());
    cout<<a.size()<<endl;
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

C. Ehab and Path-etic MEXs

先考虑特殊情况 若为一条链 则明显的 直接输出0—n-1

考虑普通情况: 先肯定0被选中的时候 MEX为1 其次01同时选中时MEX为2 且这两种情况必然发生

若0,1,2同时被选中 则MEX为3

若0,1,2不同时被选中 整棵树的最大MEX为2

所以0,1,2不被同时选中 选择一个有三条边的点放置0,1,2

int ans[N];
vector<int>a[N];
void solve(){
    int n=read();
    for(int i=1;i<n;i++){
        int x=read(),y=read();
        a[x].push_back(i);
        a[y].push_back(i); 
    }
    int cnt=1;
    for(int i=1;i<=n;i++){
        if(a[i].size()>=3){
            for(int x:a[i]){
                ans[x]=cnt;
                cnt++;
            }
            break;
        }
    }
    for(int i=1;i<n;i++){
        if(ans[i])cout<<ans[i]-1<<'\n';
        else cout<<cnt-1<<'\n',cnt++;
    }
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

D. Ehab the Xorcist

首先考虑一些特殊情况:1.v==0,u==0 答案为0 2.v<u 答案为-1 3.v==u 答案为u

接下来是就是思考构造思路 对于异或 a^a=0 所以如果将v分成{u,d,d}其中d=(v-u)/2 是符合的 反之 若(v-u)%2==1则不符合 因为几个数的异或与这几个数的和同奇偶性

所以可以知道数组长度最大为3

最后想一下长度为2的情况:u为1的位置a,b也一定为1 位数为0的位置 a,b不可能同时为1 因此让a可能不为1的地方全为0,即a = (v - u)/2 check一下a^b是否为u

#define int long long
void solve(){
    int u=read(),v=read();
    if(u==0&&v==0){
        cout<<"0\n";
        return ;
    }
    if(v<u){
        cout<<"-1\n";
        return ;
    }
    if(u==v){
        cout<<"1\n";
        cout<<u<<'\n';
        return ;
    }
    if(v==0){
        cout<<"-1\n";
        return ;
    }
    if((v-u)&1)cout<<"-1\n";
    else{
        int d=(v-u)/2;
        int p=(v+u)/2;
        if((d&u)==0){
            cout<<2<<endl;
            cout<<d<<" "<<v-d<<'\n';
            return ;
        }
        cout<<"3\n";
        cout<<u<<" "<<d<<" "<<d<<'\n';
    }
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

标签:NO,int,void,628,Codeforces,read,ans,Div,YES
From: https://www.cnblogs.com/edgrass/p/17320159.html

相关文章

  • Codeforces Round 862 (Div. 2)
    Preface补题ing这场思路挺顺的,早上上课的时候口胡了前5题下午都一发写过了然后想了30min的F1也Rush出来了,不过F2还是有点仙的做不动A.WeNeedtheZeroSB题,首先判断是否所有数的异或和等于\(0\)若不为\(0\)且\(n\)为偶数则无解,否则答案就是这个异或和本身#include<cstdio......
  • [Educational Codeforces Round 118 (Rated for Div. 2)]题解
    A题意:给定两个数,每一个数有两个属性,第一个属性是p1,第二个属性是p2.表示这个数有p2个后缀0.这个数本身等于p1后面加p2个0.问给你两个这种数,判断大小。思路:赛场上想到的:如果最终的长度不一样,可以直接根据长度判断。如果相等,就把后缀0加上直接比较大小就可以(比较字典序的大小),但......
  • Educational Codeforces Round 110 (Rated for Div. 2) C. Unstable String(状态机)
    https://codeforces.com/contest/1535/problem/C题目大意:给定一个字符串s,由10?组成:?每次都可以任意替换成0或者1问我们这个子字符串中,能够组成010101这样两两互不相等的字符串的数量最大是多少?input30?10????10??1100output8625#include<bits/stdc++.h>usin......
  • Educational Codeforces Round 120 (Rated for Div. 2)
    题目链接C核心思路这是一个很好的二分的题目,首先我们判断题目可不可二分,很显然是可以的把。因为假设我们x是可以的话,x+1...肯定也是可以的,但是x-1,x-2....这些又是不可以的。好,接下来思考二分刚开始的左右边界,左边届很好想,关键是右边界。这个其实也不难。因为我们最坏肯定是全......
  • CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!)
    CodeTONRound2(Div.1+Div.2,Rated,Prizes!)A.Two0-1Sequencesvoidsolve(){intn=read(),m=read(),ans=1;strings,t;cin>>s>>t;//cout<<s<<t<<endl;for(inti=t.size()-1,j=s.size()-1;i>=1&......
  • Codefroces Round #863(div.3)---E
    题目:Problem-E-Codeforces题意:有一个序列a,a中的每个元素的每一位都不为4,问序列中第k个数字是多少。分析:可以用数位dp查询出1-r中有多少个满足条件的数字,通过二分r找到结果。代码:#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#defineendl'\n'u......
  • Codeforces Round #289 Div. 2 解题报告 A.B.C.E
    A-MaximuminTable纯递推。代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#include<algorithm>#include<stdlib.h>#include<map>#include<set>#include<stdio.h>usingn......
  • Codeforces Round #290 (Div. 2) 解题报告 A.B.C.D.
    A-FoxAndSnake模拟。代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#include<algorithm>#include<stdlib.h>#include<map>#include<set>#include<stdio.h>usingnames......
  • Codeforces Round #287 (Div. 2) 解题报告 A.B.C.D.E
    这次的CF挺水的,当时B题犯了一个很SB的错误,浪费了好多时间,所以D和E也没来得及看。sad,。。A-AmrandMusic水题,从小的开始选。代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#include<algorithm>#include<stdlib.h>#include<map>......
  • Codeforces Round #286 (Div. 2) C题 Mr. Kitayuta, the Treasure Hunter (DFS+记忆化D
    题目地址:http://codeforces.com/contest/505/problem/C从d点开始,每个点都有三个方向,形成了一棵树,那么就从跟结点开始进行dfs查找,dp数组记录当前的点和长度,当这两个条件相同的时候,显然,后面的子树是完全相同的,于是用记忆化来优化。代码如下:#include<iostream>#include<string.h>#......