2024 ICPC EC final游记+BEFL题解

文章讲述了在编程竞赛中的三个题目,涉及罗马数字划分策略、构建满足特定条件的无向图以及优化排列的方法。解题技巧包括贪心法、计数、分类讨论和模拟等。

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

B题. Roman Master

题意

给定一个只含大写I和大写V的字符串,需要寻找一个划分策略,使得划分之后的每个子串是罗马数字,且连续组合而成的数字最小

例如 IVIIVII划分为IV,II,VII,组合而成的数字为427

串长<=1e5,多组数据

题解

从后往前划分,尽量划分更长的罗马数字,这样可以让前面组合出来的数字位数更少,如果最后一位是V,则尽量找IV的组合,如果最后一位是I,则尽量组合III,如果前面还有V,则最好组合VIII,以此类推。

例如VIIIIIV,则先划分出IV,然后是III,再是VI,最后答案是634。

E题. Colorful Graph

题意

n种颜色的点,每种点有ai个,构造一张简单无向图(可以不连通),满足同色的点之间的最短距离大于等于d(无向图边权默认为1)

1<=n<=5e5,1<=d<=n,1<=ai<=1e9,sum(ai)<=1e9

题解

如果d等于1,那么直接所有的点一起做一个完全图即可。

如果d大于1,每种颜色的点各取一个,做一个无向完全图,这样肯定边数最大。

例如1 1 3 3 5 5 5,则可以构成1张点数为7的完全图,2张点数为5的完全图,2张点数为3的完全图

由于时间复杂度的限制,我们需要按点数对完全图分组,一组一组的计算就可以了。

但是在d=2的情况时,这些无向完全图之间还可以连一些边。

简单推一下式子:

设已构成的完全图总数为N,已构成完全图使用的点数sum,

设当前完全图组的完全图数为M,当前完全图组的一个完全图的点数m

ans+=完全图内边数:m*(m-1)/2 *M  +  完全图间边数

完全图间边数=(sum-N)*  M*m

(因为是前面的完全图颜色集包含后面的完全图颜色集,所以当前完全图中的每一个点的颜色,一定会在之前的每一个完全图中出现,只要不连接相同颜色的点,就可以保证)

+完全图组之间的边数

完全图组之间的边数=M*(M-1)/2*m*(m-1)

最后累加起来就是答案了。

F题. Dot Product

题意

给出一个1~n的排列,只能交换相邻两个位置的数,请问需要至少交换多少次,才能让排列满足以下条件:

记当前排列为{ai},产生的序列{i*ai}为不下降序列

1<=n<=5e5,多组数据

题解

首先发现若排列为1~n顺序排列,则{i*ai}一定满足条件

当只交换两个相邻的数时,该排列也满足条件

但是,如果交换过的两个数,再次与另外相邻的数发生交换时,排列就一定不会满足条件

例如初始序列(i-1)*(i-1),i*i,(i+1)*(i+1)

交换前两个数(i-1)*i,i*(i-1),(i+1)*(i+1)

再换后两个数(i-1)*i,i*(i+1),(i+1)*(i-1)(此时后两个数大小关系已经不满足条件)

发现这个性质后,说明最后的序列一定是一个顺序排列只发生不重复交换后的排列

接下来就是构造一个策略,来以最少的步数达到目标排列。

记录每个数字当前的位置,每次查询当前未处理的最小的两个数字i、i+1的位置,如果i在i+1位置之前,则把i放到位置i,完成处理i。否则,将i+1放到位置i,i放到位置i+1,完成处理i、i+1。

实现方式可以使用树状数组单点删除+查询位置。

L题. Binary vs Ternary

题意

给定两个01串A、B,定义一次操作为,选定A中的一个子串,将其二进制视为三进制,然后将该三进制代表的数转化为二进制,替换原来的子串,有多种方案可以达到目的,只需要输出其中一种,需要判断无解情况。

例子1100100选中11,11在三进制下表示4,转换为二进制为100,则原串变为10000100。

1<=|A|、|B|<=64,多组数据

题解

构造题。

无解情况简单,1位数无法变成多位数,多位数无法变成一位数,一位数到一位数单独判断即可。

可以发现若初始串为11,则11->100,再选中10,100->110,这样我们就在保持11不变的情况下在末尾生成了一个0,若再多做一步11->100->110->111,就可以在末尾生成一个1

直到B串第三位都可以按上述方法生成。

由于A、B两个串都没有前导0,第一位一定为1,第二位为0时,把11变为100,再收缩00即可变为10;第二位为1时,保持11不变即可完成构造。

所以说11生万物(三生万物)

之后我们就需要把A变换为11,首先可以消除前导0,那么A串就变为了111……111000……000

然后将前面的11从后向前依次变为100,消除所有的非开头1,A串变成10000……0000

然后收缩后面的0,变成10,再变成11,完成构造。

游记

Day 0

热身赛被劝退,赶紧回酒店洗头转运

Day 1

开题队友做B,贪心wa了一发,找到反例就A了

然后看E,是个简单贪心+计数题,推推式子,1A

然后队友写K题,1A

然后是F,推了半天性质,想了半天策略,发现是分类讨论+树状数组,队友写,1A

再看L题,发现是构造+模拟,写了半个小时,1A

封榜后看J题,交互题,发现就是模拟dfs,走到父节点就回退,走完当前节点的边就回溯,但是一直超出步数,一直wa到比赛结束

后来跟cy,gzf大佬讨论,发现是少加了一个剪枝

这波是痛失银牌和3000元奖金

然后去了华为座谈会,点心很好吃,讲的都是耳熟能详的华为业绩和发展前景,印象最深刻的是一个技术主席上来讲了半个小时的JIT优化技术。

Day 2

满满的行程表 7:40起床

上午华为挑战赛,发现不会做,直接交了大暴力,出现了奇奇怪怪的错误爆零了,然后连续交了11发,工作人员看不下去了,最后两分钟跟我说我怎么一直在交热身赛的代码,乐死了2333333,然后最后一分钟交上去了,最后376分,200+名三等奖都没有

体验极差,xxx退钱!

下午跟hjx坐了一个小时地铁,去米哈游 朝 圣参观,很兴奋,但是只开放一楼,芙芙的七天神像还没修好(都不够我看的),十几分钟就逛完了,展出的东西好少。不过是免费参观,不亏。

晚上又坐了一个小时地铁去 正 太 广 场正大广场参加华为之夜,看到了东方明珠,还有高耸入云的建筑,出地铁站的瞬间就被震撼到了,感叹这才是真正的上海!

华为之夜两个小时,180+80+10+2个奖,800个人,愣是一个没中,纯纯罚坐两个小时,而且去的时候去还吃过晚饭了,看着满桌子的菜一口都吃不下了,但愿下次运气好一点(但愿下次还能参加2333333)

<think>嗯,用户想要找2024ICPC昆明邀请赛的题目解析,但根据提供的引用内容,现有的资料只覆盖到2022年昆明的题目,比如引用[1]提到2020、2021年的ICPC和CCPC题目,以及引用[4]详细解析了2022昆明站的G题。不过用户询问的是2024年的,这可能还没有公开的解析,或者可能还没有举办。需要先确认是否存在2024年的比赛信息,或者是否用户可能记错了年份?比如,2024年的比赛可能尚未举行,或者相关信息还未被整理发布。 首先,检查提供的引用内容,发现最新的昆明站信息是2022年的,引用[4]讨论的是2022昆明G题。用户提到的2024年可能是个错误,或者他们希望提前获取信息。但通常比赛结束后才会有解析,所以需要告知用户目前没有相关资料,并建议他们关注官方渠道或后续的社区分享。同时,可以推荐现有的2022年昆明题解作为参考,帮助用户了解题型和考点,比如动态规划、期望计算等常见问题。 另外,用户可能对如何准备比赛感兴趣,可以建议他们分析历年题目类型,比如引用[1]提到的区域赛常考题型,或者引用[3]中提到的训练经验。需要确保回答准确,避免提供不存在的资源,同时提供有用的替代信息,帮助用户找到最近的可用资料。</think>关于2024ICPC昆明邀请赛题目解析,目前尚未有官方或主流平台发布完整的题目解析报告。根据历史信息推测,ICPC区域赛的题目解析通常会在赛后由参赛队伍、算法社区或教练团队逐步整理发布。以下是可参考的备赛建议和现有资源: --- ### 一、近期ICPC题型趋势参考 1. **动态规划与组合数学** 如2022年昆明站G题考察了**概率期望与递推关系**,需掌握马尔可夫链、状态转移方程的建立[^4] $$E = \sum_{i=1}^n \left( \frac{p_i}{1-p_i} \cdot \sum_{j \neq i} \frac{p_j}{1-p_i} \right)$$ 此类问题常需分析极限状态下的数学期望。 2. **数据结构优化** 近年区域赛常出现需要**线段树/树状数组维护区间性质**的题目,例如区间最值、历史版本查询等。 3. **图论与网络流** 包括最小割建模、分层图最短路等高级技巧,如2021年沈阳站曾出现网络流与二分答案结合的题目[^2]。 --- ### 二、获取解析的途径建议 1. **官方渠道** 关注ICPC官网及昆明站承办院校的赛事公告,解析可能通过**赛后题解报告会**发布。 2. **算法社区** - **Codeforces**:搜索标签`[ICPC Kunming 2024]` - **知乎/掘金**:技术博主常撰写详细题解(例:2022年G题推导过程) 3. **训练平台** 尝试在**Codeforces Gym**或**牛客竞赛**题库中查找昆明站模拟赛题。 --- ### 三、历届昆明站真题参考 若需练习类似题型,可参考2022年昆明站题目: - **G题(豆子操作期望)**:结合概率论与递推,需推导稳定状态下的位置关系 - **B题(几何构造)**:通过坐标系变换简化多边形切割问题 ```python # 示例:概率期望计算的代码框架 def calculate_expected_value(probabilities): n = len(probabilities) expected = 0.0 for i in range(n): pi = probabilities[i] term = pi / (1 - pi) if pi != 1 else 0 sum_other = sum(pj / (1 - pi) for j, pj in enumerate(probabilities) if j != i) expected += term * sum_other return expected ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值