Codeforces Round #698 (Div. 2)A-D题解

Codeforces Round #698 (Div. 2)(A ~ F)6题全,超高质量题解)【每日亿题】2021/2/4 整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录【每日亿题2/4】Codeforces Round #698 (Div. 2)(A ~ F)6题全,超高质量题解)A - Nezzar and Colorful BallsB - Nezzar and Lucky NumberC - Nezzar and Symmetric ArrayD - Nezzar and BoardE - Nezzar and Binary StringF - Nezzar 阅读详情

比赛链接:https://codeforces.com/contest/1478

A题
贪心

题意:
给定长度为n的递增的整数数列,问对每个数字都染上一种颜色,使得每个颜色的数字拿出来都是单调递增的。
问最少需要几种颜色。

本来这个问题是个LIS问题,然而给定的数列已经递增的了。就变成了一个沙比题
对于每个数字来说,如果它出现了cas次,由于单一颜色的数字是严格单调递增的,所以这个cas个数字都要被染上不同的颜色。
所有数字的出现次数cas,取最大的那个就是答案。

#include<bits/stdc++.h>
#define ll long long
#define INF 0x7f7f7f7f //2139062143
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

int main()
{
    IOS
    int t;
    cin>>t;
    while(t--)
    {
        int n;cin>>n;
        int num[107];
        int ans=0;
        int cas=0;//cas保存到当前位置位置,当前这个数出现了几次
        for(int i=0;i<n;i++)
        {
            cin>>num[i];
            if(i&&num[i]==num[i-1]) cas++;
            else cas=1;
            ans=max(ans,cas);
        }
        cout<<ans<<endl;
    }
}

B题
构造,贪心,暴力

题意:
给定一个一位正整数d。
然后给定若干正整数ai,询问ai是否能用若干个十进制表示下至少有一位包含d的整数相加得到。

这里先推得一个简单的结论,如果ai>=10d的话,ai必定能按照上述要求得到。
首先如果ai<=10d+9,那ai自身就带了一个d,因此直接可以用单个ai相加得到。
如果ai>10d+9,那么ai可以表示成(10d+x)+(y+d),其中x的十位为0,y的个位为0,由于ai>10d+9,
故(10d+x)+(y+d)>10d+9即x+y>9-d,即x+y为一个整数z。
x的十位不能为0,y的个位不能为0,那么我们把z的十位丢给y,个位丢给x,其他位随意分配给x和y都可。故必定存在满足要求的10d+x和y+d。

当ai<10d的时候,这时我们已经不可能在除了个位外的地方放置整数d了。
我们直接枚举十位选择了什么数字记为k,判断ai-10k是否能被d整除即可。

#include<bits/stdc++.h>
#define ll long long
#define INF 0x7f7f7f7f //2139062143
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

int main()
{
    IOS
    int t;
    cin>>t;
    while(t--)
    {
        int n,d;cin>>n>>d;
        while(n--)
        {
            int x;cin>>x;
            if(x>=d*10) cout<<"YES"<<endl;
            else
            {
                bool flag=0;
                for(int i=0;i<10;i++)//暴力枚举十位用了什么数字
                {
                    int temp=i*10;
                    if(x>temp&&(x-temp)%d==0) flag=1;//如果能整除则存在
                }
                if(flag) cout<<"YES"<<endl;
                else cout<<"NO"<<endl;
            }
        }
    }
}

C题
相关tag:数学

题意:
给定一个正整数n,给定2n个两两不相同的整数,其中每一个整数它的相反数都必定包含在这2n个整数里。每个值与其它2n-1个数的差的绝对值累加起来,记作x。
现在给定这2n个整数的x,让你判断这2n个x是否是合理的,也就是说能否找到一组2n个两两不相同的整数,可以得到给定的这2n个x。

我们如果把这2n个数全部放到数轴上(代码实现时需要排序)。我们只看原点右侧的部分,以x1点为标准。
从x1点移动到x2点,这一段的左侧有5个点,右侧有3个点,每移动一个长度单位,左侧的点的距离和+5,右侧点的距离和-3,总距离和+2。因此x1点移动到x2点所增加的总距离就为2×\times×d2。
可以继续推广,从xi点到xi+1点,其距离为di,则总距离增加量为2i×\times×di,也就是说这两点的总距离的差值,需要能被2i整除(且不为0)。
在这里插入图片描述
由此我们可以计算出x2,x3…xn到x1的距离,并借由此计算出x1与原点的距离(同样要满足可整除,且不小于等于0),从而判断是否存在解。

#include<bits/stdc++.h>
#define ll long long
#define INF 0x7f7f7f7f //2139062143
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const int maxn=1e5+7;

ll num[2*maxn];
ll now=0;

int main()
{
    IOS
    int t;
    cin>>t;
    while(t--)
    {
        int n;cin>>n;n*=2;
        for(int i=0;i<n;i++) cin>>num[i];
        sort(num,num+n);
        bool flag=1;
        int now=0;
        for(int i=1;i<n;i+=2)
        {
            if(num[i]!=num[i-1]) flag=0;//需要对应相等
            num[now++]=num[i];//只需要保留一半的数就够了
        }
        ll sum=0;//记录不计算 x轴正轴上,从左往右看(下面的点都这么看)的第1个点,在不计算自身到原点这段距离的情况下其他点产生的距离和
        for(int i=1;i<now;i++)//now即n/2,最开始的n值
        {
            ll mod=i*2;//从第i个点移动到第i+1个点,每移动一个长度会增加2i的总距离
            ll dis=num[i]-num[i-1];
            if(dis==0||dis%mod) {flag=0;break;}//如果无法整除增加的长度或者点重合了都是不满足的情况
            else sum+=dis/mod*2*(now-i);//当前这一段会被计算2*(now-i)次
        }
        sum=num[0]-sum;//依靠剩余的sum值计算第一个点和原点的距离
        if(sum%n||sum<n) flag=0;//该距离会被计算2n(这里的n在最开始已经*2了)次,因此要被2n整除且距离不为0
        if(flag) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
}

D题
相关tag:数学,结论

题意:
给定n个整数xi。
每次操作你可以在原有的整数里挑选两个数x和y,把2x-y的值加入到这些整数里。
问是否能在若干次操作后,得到整数k。

这里需要注意到,每次操作是2x-y。
多次计算之后的数用原有的xi表示,可以表示为k1×\times×x1+k2×\times×x2+…kn×\times×xn。
我们把k1+k2+…+kn算出来记为K。
最开始的时候,xi的K值都为1。
经过一次2x-y的运算后,得到的数K值仍然为1,因为1 ×\times× 2-1=1。
也就是说如果我们当前的数的K值如果都为1,经过2x-y操作后的得到的新数的K也仍为1。

利用归纳法可以得到,我们得到的数的K值只能为1。
那么也就是说,我们能表示的数是由某一个xi,加上任意系数组合的 x两两之间的差值得到的。
这某一个xi我们可以枚举。
而后面任意系数组合的 x两两之间的差值,他们的最大公约数gcd是他们可以被分割得到的最小绝对值的数。也就是说他们能表示的数,只有gcd的整数倍。
我们可以通过计算这些数差值的最大公约数,得到这个最小块。

#include<bits/stdc++.h>
#define ll long long
#define INF 0x7f7f7f7f //2139062143
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const int maxn=2e5+7;

ll num[maxn];
int n;
ll k;

ll gcd(ll a,ll b)
{
    return b?gcd(b,a%b):a;
}

int main()
{
    IOS
    int t;
    cin>>t;
    while(t--)
    {
        cin>>n>>k;
        bool flag=0;
        for(int i=0;i<n;i++)
        {
            cin>>num[i];
            if(num[i]==k) flag=1;//如果输入的值已经是k了就没必要进行后续部分
        }
        if(!flag)
        {
            vector<ll>cas;
            for(int i=1;i<n;i++) cas.push_back(abs(num[i]-num[i-1]));//相邻两个数之间的差值
            for(int i=1;i<cas.size();i++) cas[0]=gcd(cas[0],cas[i]);//求取差值的最大公约数
            //即利用所给的这些数作差,任意组合后能得到的最小一块的值是多少
            for(int i=0;i<n;i++)
            {
                ll temp=k-num[i];//枚举除了差值之外,多余的那一个数是哪一个
                if(temp%cas[0]==0) flag=1;
            }
        }
        if(flag) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
}
Codeforces Round #698 (Div. 2) D. Nezzar and Board(一步步推出来,超级清晰,不猜结论,看不懂来打我 ~ 好题 ) 一步步推出来,超级清晰,不猜结论,看不懂来打我 ~ 每一步都有详细的解释,超级清楚简单! 阅读详情

相关推荐

海康工业相机SDK+OpenCV实战:图像采集与Mat格式转换优化指南

本文深入探讨了如何高效利用海康工业相机SDK与OpenCV进行图像采集与处理。重点解析了从相机RawData到OpenCV Mat格式转换的核心优化技巧,包括像素格式匹配、内存零拷贝管理以及彩色图像BGR/RGB转换,旨在解决工业应用中常见的性能瓶颈与内存问题,构建稳定高效的图像处理流程。

weixin_29192211的博客 108

第十三届蓝桥杯大赛软件赛省赛 C/C++ 【数的拆分】

【问题描述】 给定 T 个正整数 ai,分别问每个 ai 能否表示为 x1y1*x2y2的形式,其中 x1, x2为正整数,y1, y2 为大于等于 2 的正整数。 【输入格式】 输入第一行包含一个整数 T 表示询问次数。 接下来 T 行,每行包含一个正整数 ai 。 【输出格式】 对于每次询问, 如果 ai 能够表示为题目描述的形式则输出 yes,否则输出 no 。 【样例输入】 7 2 6 12 4 8 24 72 【样例输出】 no no no yes yes no yes 【评测用例规模与约定】 对

m0_59746092的博客 2171

Redis【实战篇】---- 分布式锁-redission

重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,那么此时如果是不可重入的,不就死锁了吗?所以可重入锁他的主要意义是防止死锁,我们的synchronized和Lock锁都是可重入的。不可重试:是指目前的分布式只能尝试一次,我们认为合理的情况是:当线程在获得锁失败后,他应该能再次尝试获得锁。

是微风,是晚霞,是无可替代 1万+

基础数论算法刷题笔记

数论的题目,首先分析题目的意思,分解成数论相关的模型接着,思路往自己学过的数论知识上靠——质因子、质数、最大公约数辗转相除法、辗转相乘法、公因数。

qq_61786525的博客 1223

什么是三极管推挽电路

当没有信号输入时,电源通过PNP三极管EB间的二极管,然后通过NPN三极管BE间而二极管到地,这时这两个三极管都是导通的,三极管很容易由于电流过大而损坏。当输入信号为VCC时,上面的三极管导通,下面的三极管截止,输出信号为VCC-0.7V,这个0.7V就是上面NPN三极管BE间的导通压降。比如上面的三极管导通,那么输出电压就是输入电压减去0.7V,所以下面的PNP三极管由于基极电压大于发射极电压,是不会导通的。这是一个三极管推挽电路,上面是一个NPN的三极管,下面是一个PNP的三极管。

谢谢关注“小鱼教你模数电”,各平台同号 3371

自研半导体Fab缺陷分析系统:从Klarf解析到Defect Map可视化的实战替代方案

本文分享了自研半导体Fab缺陷分析系统的实战经验,重点解析了Klarf文件格式与坐标系转换的核心技术,并详细介绍了从数据解析到Defect Map可视化的完整实现路径。该系统旨在为成本敏感或追求技术自主的团队提供一套功能完备的Klarity Defect平替方案,有效降低对昂贵商业软件的依赖,实现缺陷数据的自主分析与可视化。

y7z8a的博客 707

LQ0019 数的拆分【素数】

题目描述 给定T个正整数a,分别问每个ai能否表示为x1^y1^·x2^y2^的形式。 其中x1、x2为正整数,y1、y2为大于等于2的正整数。 输入格式 输入第一行包含一个整数T,表示询问次数。 接下来T行,每行一个正整数ai。 10% 的评测用例,1 ≤ T ≤ 200,ai ≤ 10^9; 30% 的评测用例,1 ≤ T ≤ 300,ai ≤ 10^18; 60% 的评测用例,1 ≤ T ≤ 10000,ai ≤ 10^18;

海岛Blog 1175

【实战教程】BMAD-METHOD 入门教程:用 AI 组建你的“七人开发团队”

简单说,BMAD-METHOD 就像一个会自己运转的“AI 软件公司”。它不是某个单一应用,而是一种AI 工作流方法论—— 把一个项目拆解成多个角色(产品、架构、前后端、测试、运维等),每个角色由一个 AI 智能体负责协作,就像你真的在带一个 7 人团队。GitHub 项目地址 👉目前 Star 数已经达到了恐怖的 20k,可见这套方法的影响力不小。BMAD-METHOD 的核心理念不是“生成代码”,而是“自动化协作”。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1624

Codeforces Round #698 (Div. 2) D. Nezzar and Board

D. Nezzar and Board 题目链接: http://codeforces.com/contest/1478/problem/D Description Input Output 题意 给一个数列,a1a_1a1​,a2a_2a2​,a3a_3a3​…ana_nan​ , 每一次操作定义为,从已有的数字中随意选一个数字作为x,再选一个数字作为y,两个数字可以相同,然后向数列中加入2*x - y 这个数字,选中的数字仍然在数列中。 可以操作任意次,问是否能凑出k。 题解: 首先考虑最终组成的

lajiyuan的博客 2668

数据结构之博弈树搜索(深度优先搜索)

数据结构之博弈树搜索(深度优先搜索)

LucianaiB的博客 1523

ISOLAR Autosar BSW 配置 之 Com

Autosar ISOLAR Bsw Configuration 之 Com

qq_42262743的博客 453

Codeforces Round #698 (Div. 2) A~F

A. Nezzar and Colorful Balls 题目传送门: A. Nezzar and Colorful Balls 思路: 水题,找到最多有多少个数是形同的即可。 AC Code #include<bits/stdc++.h> using namespace std; int a[105]; int main() { int t; scanf("%d",&t); while(t--) { int n; scan

稚始稚终的博客 1321

xtop:multi_driven_net与incomplete_timing_cell fail reason 分析

man multi_driven_net”可以得知,这个问题是multi driven结构引起的,使用命令“get_failed_pins -reason multi_driven_net”,获取violation pin。“man incomplete_timing_cell”可以得知,这个fail reason的原因是缺少timing library cell,检查并补全后这个错误就显示了。这里选择的解决方法是修改lib文件,把inout改成input,重新lib2idb。通过这种方法解决了问题。

m0_61544122的博客 566

Codeforces Round #698 (Div. 2)部分题解(A,B,C,D)

oj: CodeForces 叙述采用倒叙。 D. Nezzar and Board oj: CodeForces 还在写,稍等片刻 C. Nezzar and Symmetric Array oj: CodeForces 题意 aaa 数组是一个由 2n2n2n 个互不相同的整数组成的数组,且每个 aia_iai​ 都能找到一个 aja_jaj​ 满足 ai=−aja_i=-a_jai​=−aj​。ddd 数组是 di=∑j=12n∣ai−aj∣d_i=∑^{2n}_{j=1}|a_i−a_j.

画船听雨眠 1716

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Codeforces Round #698 (Div. 2)-C. Nezzar and Symmetric Array-题解

目录C. Nezzar and Symmetric Array题目大意解题思路首先原数组中,一个数的差值和 与 这个数的相反数的差值和 是相同的。这就需要 *条件一* 差值和们 成对出现因±差值和相同,故先只研究正值这就需要 *条件二* 差值和都为偶数并且由此,我们可以分别计算出每一个原来的数。*条件三* 原来的数是整数(可以整除)*条件四* 原来的数各不相同这就需要 *条件五* 计算过程中的数都是正数总结AC代码结语 C. Nezzar and Symmetric Array 题目大意 原来有2n个数,

<font color="Pink">Tisfy的博客</font> 2万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Codeforces Round #698 (Div. 2) - B. Nezzar and Lucky Number 题解

Codeforces Round #698 (Div. 2)-B. Nezzar and Lucky Number 传送门 Time Limit: 1 second Memory Limit: 512 megabytes Problem Description Nezzar’s favorite digit among 1,…,91,\ldots,91,…,9 is ddd. He calls a positive integer lucky if ddd occurs at least once in i

<font color="Pink">Tisfy的博客</font> 2万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Codeforces Round #698 (Div.2) A,B,C,D,E

Codeforces Round #698 Div.2 A,B,C,DA - Nezzar and Colorful BallsCodeB - Nezzar and Lucky NumberCodeC - Nezzar and Symmetric ArrayCodeD - Nezzar and BoardCode A - Nezzar and Colorful Balls 输出序列中出现最多次数的个数。 Code #include "bits/stdc++.h" using namespace std;

狙击美佐的博客 485

[Codeforces Round #698 (Div. 2)] A-F题解

[Codeforces Round #698 (Div. 2)] A-F题解 A.Nezzar and Colorful Balls 思路: 贪心,等价求众数的次数 #include<bits/stdc++.h> #define lson p<<1,l,mid #define rson p<<1|1,mid+1,r #define ls p<<1 #define rs p<<1|1 using namespace std; typedef long

weixin_45539557的博客 327

Codeforces Round #698 (Div. 2)A,B,C,D,F

Codeforces Round #698 (Div. 2)前四题 A - Nezzar and Colorful Balls 题意 有 nnn 个球,第 iii 个球上的序号是 aia_iai​ ,保证对任意 aia_iai​ 都有 ai≤ai+1a_i \leq a_{i+1}ai​≤ai+1​ 。现在你要给球涂上颜色,保证在球按照颜色分开后,每种颜色的球序号从小到大是严格递增的,也就是只考虑某种颜色的球的情况下,对相邻的 aia_iai​、aja_jaj​,均有 ai<ai+1a_i \lt

tcy今天长胖了吗的博客 264

Codeforces Round #698 (Div. 2)

文章目录Codeforces Round #698 (Div. 2)A. Nezzar and Colorful BallsB. Nezzar and Lucky NumberC. Nezzar and Symmetric ArrayD. Nezzar and BoardE. Nezzar and Binary StringF. Nezzar and Nice Beatmap Codeforces Round #698 (Div. 2) A. Nezzar and Colorful Balls 题意: 给定

m0_49959202的博客 182

Codeforces Round #698 D. 裴蜀定理(数论)

Codeforces Round #698 D. 裴蜀定理 https://codeforces.com/contest/1478/problem/D 题意:有n个互不相同的数字在黑板上,多次重复如下操作:选取黑板上任意两个数x,y,(可以相同),将 2x-y 放回黑板上,(x,y依然存在),问经过无数次上述操作后,黑板上是否存在数字 k ? 思路: ​ 1:由观察可知,2x-y , 2(2x-y) - y, 2x-(2x-y) … 都有一个规律:系数和总是为 1 ​ 所以答案的标

m0_50796573的博客 320

补: Codeforces Round #698 (Div. 2)

补: Codeforces Round #698 (Div. 2) 喵喵喵,比赛太呆了!!! A题交错文件WA了一次,B题居然错在了一个小点上,错失了上大分的机会。 QwQ,下次一定! 文章目录补: Codeforces Round #698 (Div. 2)A - Nezzar and Colorful BallsB - Nezzar and Lucky Number A - Nezzar and Colorful Balls 求最长重复序列的长度。 #include<bits/stdc++

m0_51990674的博客 344

Codeforces Round #698 (Div. 2) A-E解题报告与解法证明

Codeforces Round #698 (Div. 2) A-E解题报告与解法证明 题目解法总体概括 A Nezzar and Colorful Balls #include <bits/stdc++.h> using namespace std; const int N = 110; int a[N], f[N]; int main() { int t; cin >> t; while (t -- ) { static int

weixin_45573921的博客 230

Codeforces Round #698 (Div. 2)全部题解

题目链接:https://codeforces.com/contest/1478 文章目录A.Nezzar and Colorful BallsB.Nezzar and Lucky NumberC.Nezzar and Symmetric ArrayD.Nezzar and BoardE.Nezzar and Binary StringF.Nezzar and Nice Beatmap A.Nezzar and Colorful Balls 贪心 题目大意为给数列中的数字上色,使得相同颜色的数字组成的序列位

qq_50808324的博客 685
上一篇: Codeforces Round #697 (Div. 3)A-G题解
下一篇: 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛(同步赛)全题解
StandNotAlone
博客等级 码龄7年 338粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值