记人生第四次参加CodeForces比赛

Codeforces Round #798 (Div. 2) 

Saturday, June 11, 2022 at 00:35UTC+8

库兹涅科夫喜欢艺术、诗歌和音乐。以及由小写英文字母组成的字符串。 最近,Kuznecov 发现了两个长度分别为 n 和 m 的字符串 a 和 b。它们由小写英文字母组成,两个字符串中都不包含任何字符。 让另一个字符串 c 最初为空。 Kuznecov 可以执行以下两种类型的操作: 从字符串 a 中选择任意一个字符,将其从 a 中删除,并将其添加到 c 的末尾。 从字符串 b 中选择任意一个字符,将其从 b 中删除,并将其添加到 c 的末尾。 但是,他不能连续做超过 k 个相同类型的操作。他必须执行操作,直到 a 或 b 变为空。在他完成后,c 的字典最小可能值是多少? 当且仅当以下条件之一成立时,字符串 x 在字典上小于字符串 y: x 是 y 的前缀,但 x≠y; 在 x 和 y 不同的第一个位置,字符串 x 有一个字母在字母表中出现的时间比 y 中的相应字母更早。 输入 输入数据中有几个测试用例。第一行包含一个整数 t (1≤t≤100)——测试用例的数量。接下来是测试用例描述。 每个测试用例的第一行包含三个整数 n、m 和 k (1≤n,m,k≤100) — 来自语句的参数。 每个测试用例的第二行包含长度为 n 的字符串 a。 每个测试用例的第三行包含长度为 m 的字符串 b。 字符串仅包含小写英文字母。保证没有符号同时出现在 a 和 b 中。 输出 在每个测试用例中,输出一个字符串 c——问题的答案。

今天就弄这道题。

Monocarp 是一个住在 Byteland 的小男孩,他热爱编程。 最近,他发现了一个长度为 n 的排列。他必须想出一个神秘的排列。它必须是一个新的排列,以便在每个位置上都不同于旧的排列。 更正式地说,如果旧的排列是 p1,p2,...,pn 而新的排列是 q1,q2,...,qn 它必须持有 p1≠q1,p2≠q2,…,pn≠qn。 Monocarp 害怕字典上的大排列。你能帮他找到字典上最小的神秘排列吗? 输入 输入数据中有几个测试用例。第一行包含一个整数 t (1≤t≤200)——测试用例的数量。接下来是测试用例描述。 每个测试用例的第一行包含一个正整数 n (1≤n≤1000) — 排列的长度。 每个测试用例的第二行包含 n 个不同的正整数 p1,p2,…,pn (1≤pi≤n)。保证 p 是一个排列,即。 e.对于所有 i≠j,pi≠pj。 保证所有测试用例中 n 的总和不超过 1000。 输出 对于每个测试用例,输出 n 个正整数——字典序上最小的神秘排列。如果不存在这样的排列,则输出 -1。 在第一个测试用例中,可能的神秘排列是 [2,3,1] 和 [3,1,2]。两者中的较小的是[2,3,1]。 在第二个测试用例中,[1,2,3,4,5] 是字典上最小的排列,它也是神秘的。 在第三个测试用例中,可能的神秘排列是 [1,2,4,3], [1,4,2,3], [1,4,3,2], [3,1,4,2], [3 ,2,4,1]、[3,4,2,1]、[4,1,2,3]、[4,1,3,2] 和 [4,3,2,1]。最小的是 [1,2,4,3]。

算了还是弄这道题。

我母亲回来了,我有些难以思考这道题。但无论如何我既然来打了这场比赛,我就得把他好好打下去。哪怕我的大脑已经充满了抑郁的回忆,我不能接受自己把时间荒废过去。

我们来看这道题。我的思路是:先快排求出他的升序,

她说再给我十分钟。哪怕只有一分钟,我也不会荒废过去。

然后再考虑是否满足题目所说的条件。若不满足,则与他后面的那一项交换。但是不排除某些情况,比如2,3,3,就是-1。因此这样的方式未免过于暴力,非常行不通。

但是我没有时间了,暴力我也把他打了。

爆零了。

rating加了41。还好。

zex告诉我真正的思路是:对于每p[i],求出满足条件的最小q[i]。矛盾只可能再最后出现,这时便交换最后两个q。若n==1,无解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值