Codeforces Round #215 (Div. 1)(A,B,C)

本文详细分析了在比赛中遇到的A、B、C三个问题,深入探讨了解题过程中的关键点与错误之处。特别强调了A题的边界条件、B题的序列匹配技巧以及C题的图论应用。同时反思个人能力的不足,并提出改进策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次比赛做得很差,1题垫底,主要A题没考虑len <= 2 都是YES, 检查了半小时,B题写得太匆忙,有个小问题,结果挂了,总结一句话:我还是弱的很。

code:https://github.com/9974/Codeforces/tree/master/215div1

A 注意len <= 2 都是YES, 其它情况检查x,y, z的个数就可以了。

B 问题可以变为 某个序列b与另一个序列a的子序列 rearrang后匹配的个数有几个

首先离散化一下,再让sum[i]表示在序列b中每个数的个数,我们再用一个变量cnt表示没有匹配上的个数, 扫一遍序列a,因为每次只加入一个数,自然修改的sum也只有一个, 修改前后对cnt进行维护一下, 当cnt = 0时就说明已经匹配上了。

C感觉像图论问题,当选的种类n为奇数时,我们发现每个点的度为偶数(n-1),所以肯定能找出一个欧拉回路(欧拉回路所用的点最小),因为每个点的度都相等,根据对称性,我们可以选某个欧拉回路满足题目的构造,且用的点最少,总点数为(n-1)*n/2+1。  当选的种类n为偶数时,我们先找一个最大的欧拉回路, 剩下的点的度数都为1, 然后每个点都与另外某个点没有连过边, 新建这n个点,两两连边, 总点数为 (n-2)*n/2 + n    =    n*n/2。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值