CodeM - 4

<div class="subject-content js-question-main"><div class="subject-question">n 个小区排成一列,编号为从 0 到 n-1 。一开始,美团外卖员在第0号小区,目标为位于第 n-1 个小区的配送站。<br>
给定两个整数数列 a[0]~a[n-1] 和 b[0]~b[n-1] ,在每个小区 i 里你有两种选择:<br>
1) 选择a:向前 a[i] 个小区。<br>
2) 选择b:向前 b[i] 个小区。<br>
<br>
把每步的选择写成一个关于字符 ‘a’ 和 ‘b’
的字符串。求到达小区n-1的方案中,字典序最小的字符串。如果做出某个选择时,你跳出了这n个小区的范围,则这个选择不合法。 <br>
? 当没有合法的选择序列时,输出 “No solution!”。<br>
? 当字典序最小的字符串无限长时,输出 “Infinity!”。<br>
? 否则,输出这个选择字符串。<br>
<br>
字典序定义如下:串s和串t,如果串 s 字典序比串 t 小,则<br>
? 存在整数 i ≥ -1,使得?j,0 ≤ j ≤ i,满足s[j] = t[j] 且 s[i+1] &lt; t[i+1]。<br>
? 其中,空字符 &lt; ‘a’ &lt; ‘b’。<br><h5><b>输入描述:</b></h5><pre>输入有 3 行。<br>
第一行输入一个整数 n (1 ≤ n ≤ 10^5)。<br>
第二行输入 n 个整数,分别表示 a[i] 。<br>
第三行输入 n 个整数,分别表示 b[i] 。<br>
?n ≤ a[i], b[i] ≤ n</pre><br><br><h5><b>输出描述:</b></h5><pre>输出一行字符串表示答案。</pre><br><h5><b>输入例子:</b></h5><pre>7
5 -3 6 5 -5 -1 6
-6 1 4 -2 0 -2 0</pre><br><h5><b>输出例子:</b></h5><pre>abbbb</pre></div></div>

时间: 2024-10-25 01:31:04

CodeM - 4的相关文章

美团CodeM资格赛第二题

锦标赛 时间限制:1秒 空间限制:32768K 组委会正在为美团点评CodeM大赛的决赛设计新赛制. 比赛有 n 个人参加(其中 n 为2的幂),每个参赛者根据资格赛和预赛.复赛的成绩,会有不同的积分.比赛采取锦标赛赛制,分轮次进行,设某一轮有 m 个人参加,那么参赛者会被分为 m/2 组,每组恰好 2 人,m/2 组的人分别厮杀.我们假定积分高的人肯定获胜,若积分一样,则随机产生获胜者.获胜者获得参加下一轮的资格,输的人被淘汰.重复这个过程,直至决出冠军. 现在请问,参赛者小美最多可以活到第几

CodeM资格赛2

题目描述 组委会正在为美团点评CodeM大赛的决赛设计新赛制. 比赛有 n 个人参加(其中 n 为2的幂),每个参赛者根据资格赛和预赛.复赛的成绩,会有不同的积分.比赛采取锦标赛赛制,分轮次进行,设某一轮有 m 个人参加,那么参赛者会被分为 m/2 组,每组恰好 2 人,m/2 组的人分别厮杀.我们假定积分高的人肯定获胜,若积分一样,则随机产生获胜者.获胜者获得参加下一轮的资格,输的人被淘汰.重复这个过程,直至决出冠军. 现在请问,参赛者小美最多可以活到第几轮(初始为第0轮)? 输入描述: 第一

LibreOJ #6191. 「美团 CodeM 复赛」配对游戏

二次联通门 : LibreOJ #6191. 「美团 CodeM 复赛」配对游戏 /* LibreOJ #6191. 「美团 CodeM 复赛」配对游戏 概率dp 不是很懂为什么这样做... */ #include <cstdio> #include <iostream> const int BUF = 12312312; char Buf[BUF], *buf = Buf; inline void read (int &now) { for (now = 0; !isdi

【CodeM初赛B轮】F 期望DP

[CodeM初赛B轮]F 题目大意:有n个景点,m条无向边,经过每条边的时间需要的时间是l,在每个景点游览花费的时间是t,游览完每个景点可以获得的满意度是h.你的总时间为k,起初你等概率的选择游览一个景点,然后每次等概率的前往一个相邻的景点游览,当你剩余时间不够游览一个相邻的景点时就结束游览.问所获得的满意度的期望值.(本题强行询问两次~) n<=100,总时间<=500 题解:显然的期望DP啊,不过本题的细节比较多,我这里只说一些细节吧~ 用f[i][j]表示游览完景点i,还剩时间j,所获得

CodeM美团点评编程竞赛资格赛题

最近看到牛课网美团一个编程竞赛,想着做做看,结果一写就是两天..真是写不动了啊.话不多说,下面开始我的题解. 题目大致还是比较考察思维和代码能力(因为自己代码能力较弱,才会觉得比较考察代码能力吧= =!),难度由简到难变化也比较适中,有签到题.有算法实现,当然也有稍稍一点代码量的题.感谢美团点评,提供一套合适的题目~ 音乐研究 题目描述 美团外卖的品牌代言人袋鼠先生最近正在进行音乐研究.他有两段音频,每段音频是一个表示音高的序列.现在袋鼠先生想要在第二段音频中找出与第一段音频最相近的部分.具体地

【CodeM初赛B轮】A 贪心

[CodeM初赛B轮]A 题目大意:给你一棵树,起初所有点都是白色的,你每次都能选择一个白点i,将这个点i到根路径上的所有到i的距离<k[i]的点都染成黑色(根和i也算,已经被染成黑色的点还是黑色).问最少需要染多少次才能将所有点都变黑. n<=100000 题解:显然贪心啊,但是我一开始居然写了树剖... 因为叶子节点是一定要染的,所以我们可以将所有点按DFS序排序,从后往前染.记录vis[i],表示之前已经将所有到i的距离<=vis[i]的点染成了黑色:再维护mx[i],表示之前染过

「题解」「美团 CodeM 资格赛」跳格子

目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞定,最后无奈 \(90pts\) . 然而 \(T2\) 想到很多很奇怪的做法,结果正解在 \(28min\) 之内做出... 结果 \(T3\) 是本人最不擅长的伪期望,直接跳过,啥都没得. 来水一发 \(T1\) 的题解... 题目描述 点这里 考场思路 其实并没有什么十分特别的思路,就是一通乱

CodeM 2017美团点评编程大赛资格赛

音乐研究 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 美团外卖的品牌代言人袋鼠先生最近正在进行音乐研究.他有两段音频,每段音频是一个表示音高的序列.现在袋鼠先生想要在第二段音频中找出与第一段音频最相近的部分. 具体地说,就是在第二段音频中找到一个长度和第一段音频相等且是连续的子序列,使得它们的 difference 最小.两段等长音频的 difference 定义为:difference = SUM(a[i] - b[i])2 (1 ≤ i ≤ n),

CodeM美团点评编程大赛初赛B轮 黑白树【DFS深搜+暴力】

[编程题] 黑白树 时间限制:1秒 空间限制:32768K 一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1.树上每个节点i对应一个值k[i].每个点都有一个颜色,初始的时候所有点都是白色的. 你需要通过一系列操作使得最终每个点变成黑色.每次操作需要选择一个节点i,i必须是白色的,然后i到根的链上(包括节点i与根)所有与节点i距离小于k[i]的点都会变黑,已经是黑的点保持为黑.问最少使用几次操作能把整棵树变黑. 输入描述: 第一行一个整数n (1 ≤ n ≤ 10^5) 接下来n-1

CodeM资格赛1

题目描述 美团外卖的品牌代言人袋鼠先生最近正在进行音乐研究.他有两段音频,每段音频是一个表示音高的序列.现在袋鼠先生想要在第二段音频中找出与第一段音频最相近的部分. 具体地说,就是在第二段音频中找到一个长度和第一段音频相等且是连续的子序列,使得它们的 difference 最小.两段等长音频的 difference 定义为:difference = SUM(a[i] - b[i])2 (1 ≤ i ≤ n),其中SUM()表示求和 其中 n 表示序列长度,a[i], b[i]分别表示两段音频的音