Codeforces Round #628 解补题报告

简介: Codeforces Round #628 解补题报告

A. EhAb AnD gCd

题意:

给定两个数的gcd和lcm的和x,要求输出任意一组这对数。

思路:

考虑1的特殊性,1与任意数的gcd都是1,与任意数的lcm都是该数。

所以答案就是1和x-1了

最开始想偏了,还证明了几分钟别的……

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){
    return b==0?a:gcd(b,a%b);
}
ll lcm(ll a,ll b){
    return a/gcd(a,b)*b;
}
int main(){
    int t;cin>>t;
    while(t--){
        ll n;cin>>n;
        printf("1 %lld\n",n-1);
    }
    return 0;
}

B. CopyCopyCopyCopyCopy

题意:

给你一个长度为n的数组,问将该数组复制n次后得到的最长上升子序列的长度是多少。

思路:

我们记数组中不同元素的个数为sum,因为可以将该数组复制n次,我们可以在第一个数组中取出第一小的元素,在第二个数组中取出第二小的元素,以此类推,长度最大是sum

代码:

map写法 也可以直接用set计算,写map写习惯了

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e6+7;
ll a[maxn];
map<ll,ll>mp;
int main(){
    ll t;cin>>t;
    while(t--){
        ll n;mp.clear();
        cin>>n;
        ll res=0;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            if(mp[a[i]]==0) mp[a[i]]=1,res++;
            //else res++;
        } 
        cout<<res<<endl;
    }
    return 0;
}

C. Ehab and Path-etic MEXs

题意:

给你一棵树,边的权值为0~n-2,问如何分配权值才能使得题意中的MEX最大值尽可能的小

思路:

先来考虑特殊情况,如果所有点的度都小于等于2,说明这棵树就是一条链,这时候怎么赋值都无所谓。

当有个点的度数大于2时,我们把0,1,2分别赋给他的三个边,其余的赋值不重的边就可以了。这时候,所有的路径都不会同时经过权值为0,1,2的边,得到的MEX最大值一定是最小的,此时MEX为2。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+7;
int u[maxn],v[maxn];
int s[maxn];
int main(){
    int n;cin>>n;
    for(int i=1;i<n;i++){
        cin>>u[i]>>v[i];
        s[u[i]]++;s[v[i]]++;
    }
    int root=-1;
    for(int i=1;i<=n;i++){
        if(s[i]>=3){//找度数大于2的点
            root=i;
            break;
        }
    }
    if(root==-1)//一条链
        for(int i=1;i<n;i++) cout<<i-1<<endl;
    else{
        int x=3,cnt=0;
        for(int i=1;i<n;i++){
            if((v[i]==root||u[i]==root)&&cnt<3) cout<<cnt++<<endl;
            else cout<<x++<<endl;
        }
    }
    return 0;
}

D - Ehab the Xorcist

题意:

给你u,v,要求构造一个最短的数组,使得其所有元素异或为u,和为v

思路:

我们可以把异或看成是不进位的加法,这样就可以推出以下几种特殊情况(当时是真没往这想)

(1)当u>v时,一定无解。因为不存在一些数使得不进位的加法的和比进位的加法的和大

(2)当u == v == 0时,答案是0

(3)当u==v!=0时,答案是u,长度为1

再来看普通情况

根据异或的性质x^x=0,所以我们可以知道【u,x,x】满足要求,这时x=(v-u)>>1;这也就要求v-u一定要是偶数,所以当v-u是奇数时也就不能构造了。

然后就是神仙思路了


如果u和x的二进制上,没有一位两个都是1的,那么这时候u^x=u+x

所以可以把u和x合并为u+x,这样就变成了最短长度~


其余几个注意点都在代码里了~

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;//注意数据范围~
const int maxn=1e6+7;
int main(){
    ll u,v;
    cin>>u>>v;
    if(u>v||(v-u)%2) puts("-1");
    else if(u==v){
        if(u==0) puts("0");
        else cout<<"1"<<endl<<u<<endl;
    }
    else{
        ll x=(v-u)>>1;
        //注意优先级
        if((x^u)==x+u) cout<<"2"<<endl<<x+u<<" "<<x<<endl;
        else cout<<"3"<<endl<<u<<" "<<x<<" "<<x<<endl;
    }
    return 0;
}

参考博客:传送门


目录
相关文章
|
9月前
|
索引 Python
使用Python的Pandas库进行数据透视表(pivot table)操作
使用Python Pandas进行数据透视表操作包括:安装Pandas库,导入库,创建或读取数据,如`pd.DataFrame()`或从文件读取;然后使用`pd.pivot_table()`创建透视表,指定数据框、行索引、列索引和值,例如按姓名和科目分组计算平均分;查看结果通过打印数据透视表;最后可使用`to_csv()`等方法保存到文件。这为基础步骤,可按需求调整参数实现更多功能。
391 2
|
Java Linux Go
知识分享之Golang——在Goland中增加保存格式化插件
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。
496 0
知识分享之Golang——在Goland中增加保存格式化插件
|
7月前
|
运维 监控 关系型数据库
阿里云Serverless高可用架构深度评测:构建稳定高效应用的全面指南
随着云计算技术的迅猛发展,Serverless计算作为一种新兴的、以事件驱动的无服务器架构,正在逐渐改变企业构建、部署和管理应用程序的方式。阿里云,作为全球领先的云服务提供商之一,提供了全面的Serverless解决方案,包括PolarDB MySQL Serverless集群和Serverless应用引擎等产品,致力于帮助用户构建高可用、高弹性、低成本的应用系统。本文将深度评测阿里云的Serverless服务,从产品功能、使用体验、部署常见问题、文档与支持的全面性等维度出发,为开发者和企业提供实用的参考。
157 0
|
SQL 安全 程序员
记一次未授权漏洞挖掘
记一次未授权漏洞挖掘
194 0
|
存储 Java
java实现双向循环链表(循环双链表)
线性表是我们最常用的一种数据结构,线性表包含顺序表和链表,顺序表典型应用就是我们常用的ArrayList,链表的典型应用其中就有我们常用的LinkedList。LinkedList他的底层就是使用链表来存储数据元素的。这篇文章用以总结链表中的双向循环链表,为单链表的结点增加一个指向前驱的指针域,单链表就变成了双链表,将双链表的头尾相连,双链表就成了双向循环链表。
308 0
|
新零售 搜索推荐
数智洞察 | 新零售的跃迁趋势:从零售1.0到4.0
编者按: 新零售在几年时间内完成了从一株幼苗到参天大树的成长,而就像所有行业、公司、商业模式的成功都离不开社会与时代的土壤一样,新零售也深深根植在独特的时代背景中,并且从时代趋势中持续汲取生长营养。让我们看看哪些时代背景与经济社会趋势,构成了新零售的生长土壤。 全文约3067字,建议阅读时间9分钟。
435 0
|
算法 数据可视化 计算机视觉
图像处理大作业:基于Seam Carving实现图像的重定位
图像处理大作业:基于Seam Carving实现图像的重定位
304 0
图像处理大作业:基于Seam Carving实现图像的重定位

热门文章

最新文章