![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
玩转上号CF“游戏”
话不多说,萌新上号CF
Angindem
"我明白自己并不是多优秀,只是想在这世界的夹缝中生存着。"
展开
-
E. Mishap in Club
数学贪心模拟思路,由于不知道在俱乐部的人数和在外面的人数,又要尽可能少的人数,那么定义两个变量,一个是里面的人数 in = 0,外面的人数 out = 0,然后根据记录变化,尽可能的少,进去的,可以是 外面进去的,出来的,可以是在里面的出来的,然后里面和外面的人数总的相加,就是尽可能少的人数。原创 2023-10-02 20:50:29 · 148 阅读 · 0 评论 -
C. Best Binary String
根据题意, 题目意思是 ‘?’ 字符 该替换何值,使得原字符串,最少操作 翻转任意区间,成升序字符串。有多个答案,打印任意一个即可。这里有多个答案,是因为,替换 ‘?’ 不同的字符,有相同的操作数,所以打印任意一个答案。 这是一个贪心题,我们根据题意,我们应该联想到,当原字符串中第一个字符是 ‘?’ 时,我们要最少操作数,就是不操作它这个字符,即刚开始碰到 '?' 时我们应该替换成 '0',使得它不被操作,当碰到不是 '?' 的时候,就记录相应的值。但是后面的该如何改变呢?要最少操作数,我们原创 2023-10-02 15:11:19 · 263 阅读 · 0 评论 -
B. Comparison String
由题意,条件是又因为要使用尽可能少的数字,这是一道贪心题,所以我们可以知道,当遇到符号相同的时候,肯定只能使用新的数字,即 使用的数字数量积累,累加 ++cnt,然后ans 取我们尽可能使用的数字数量 ans = max(ans,cnt)当遇到不同的符号的时候,我们可以用之前使用过的数字,避免数字数量的累加,即重回刚开始的数字, cnt = 1 数字积累量重置原创 2023-10-01 16:07:38 · 216 阅读 · 0 评论 -
A. Sequence with Digits
暴力模拟题,看这数据范围,有些人可能会被唬住,以为是高精度或者容易超时,实际上,long long 型最多可以存储10^18次方,刚刚掐住这个数据范围点,所以我们直接用 long long 存储最后暴力模拟一遍即可,这里 ai 是 10^18次方,而我们需要取到当前位数最小的和最大的,我们可以将 ai 转换为字符串遍历一遍,就是 最多 循环 18 次,就可以取到相应的值,所以不用担心超时的。当我们取到 minx = 0 的时候,后面的 k 都是当前的 ai 了.原创 2023-09-30 22:07:50 · 464 阅读 · 0 评论 -
C. MEX Repetition
从题目和样例中,我们可以知道,从一个数组中,按照包括0的自然数的顺序查找确实的一个顺序,然后按从左到右进行交换。想法和思路弄清楚后,暴力模拟肯定是不行的了,数据范围过大,k的数据范围是 1e9, n 的数据范围是 1e5,在加上 t 的数据范围 1e5,如果纯暴力,按照最坏的情况,时间复杂度大概是 10 的19次方。所以基本不可能的。 我们可以看一下样例,可以发现一个规律,那就是第一次缺少的包括0的自然数 x ,在输出样例中,会去掉前面或者后面,然后将该 x 放置前面或者后面。我们可以猜测,并原创 2023-09-30 11:21:52 · 1239 阅读 · 0 评论 -
C2. Powering the Hero (hard version)
贪心思维题,这道题要求的是一张一张的凑卡牌,凑到的是力量赋值卡就存储好,抽到 0 就是英雄卡,当我们存储中有力量赋值卡,就将该力量赋值给该英雄,并获得该英雄的战力,求最佳操作获得的最大战力总和是多少。 我们将每次抽到的力量赋值卡存储的时候,遇到英雄卡,就赋值给最大存储即可,而赋值卡值最小的放到后面,倘若遇到了英雄卡,也会将该最小力量赋值卡赋值给英雄的,倘若没遇到,相当于弃用掉。 所以我们用个优先队列存储并赋值即可。原创 2023-09-29 14:36:12 · 198 阅读 · 0 评论 -
A. Trust Nobody
这道题也是个思维题,关键在于这种问题是有多个答案的,所以我们输出其中一种答案即可,也可能无法确定的,就要输出 -1。 题目意思是,给出 n 个人,n 个人说有 aj 个人撒谎,问可以确定的可能撒谎人数是多少,如果无法确定,输出 -1。 我们假设共有 n 种情况,分别可能有 i (0原创 2023-09-28 12:51:09 · 1456 阅读 · 0 评论 -
C. Card Game
这里的题意就是, 当我们 i 取奇数的时候,可以获得该奇数 i 的值,并去掉当前卡牌。 当我们 i 取偶数的时候,去掉当前卡牌。 这里我们去掉当前卡牌后,后面的卡牌下标 i 就会变化,后面的 i 的奇偶性就会变化。 所以当我们一个一个从后面开始取数的时候,就可以巧妙的避开这些变化,之后就是贪心操作。原创 2023-09-27 20:59:27 · 191 阅读 · 0 评论 -
B. Sets and Union
这里题目的意思是,要求合并尽可能多的集合,使它的集合大小最大,但是不能等于全部集合的合并。 这里由于题目所给的范围较小,所以我们可以暴力枚举,其次,里面也有贪心的成分,这里我们换个思路,我们通过总的集合,根据总的集合中的某个元素,枚举不存在该元素的集合,并合并,就是不等于全部集合的合并,取个合并后的集合个数 max,就是答案。原创 2023-09-27 17:49:06 · 1933 阅读 · 0 评论 -
C. Make it Alternating
数学组合问题,在这里中要求 ans1 和ans2 两个答案,其中 ans1 表示最少操作次数,这是最容易求的,难点在 ans2 ,这里 ans2 是组合求总数的问题。其次,我们记录操作数,所求的答案它们的初始化,也是需要考虑的地方。第二个答案就是一个组合数学 1 2 还有 2 1 是两种不同的情况然后部分不同的情况也会造成总的也会有不同的情况比如 [12 12] [21 12] [12 21] [1 1 2 2] 等等等等原创 2023-09-27 09:42:06 · 209 阅读 · 0 评论 -
B. 2D Traveling
根据题目意思,有三种情况, 第一种 起点以及终点都在 大城市 k 内,那么它们之间的票价就是 0 第二种 起点和终点都不在大城市内,那么我们先计算起点到终点之间的票价,再分别从大城市范围的诚实点中找到票价最低点,然后比较我们中间路径最短点的票价与我们直接起点到终点之间的票价,就是我们最低票价 第三种 起点与终点,任意一个是在大城市内,在这里,我们找到不在大城市内的往大城市范围的城市点中找到最短票价,与我们直接起点到终点之间的票价,就是我们最低票价。原创 2023-09-12 13:36:00 · 93 阅读 · 0 评论 -
D. Prefix Permutation Sums
数学问题,根据前缀和与 排列1 ~ n 之间的关系来推导。最后提交:原创 2023-09-14 13:40:45 · 71 阅读 · 0 评论 -
D1. Too Many Segments (easy version)
这里数据范围是 200,所以我们完全可以暴力遍历每一个点是否在该区间内,这里需要注意的是,可以通过差分的方式达到区间总和的变化,所以要学会掌握好差分。原创 2023-09-07 21:53:46 · 143 阅读 · 0 评论 -
C. Assembly via Minimums
数学思维题,构造算法,这里我们从样例中可以知道,可能的 数组 a 最后一个元素一定是最大的,其次,根据数学的思维,找出性质,当 一个 数列从小到达的排序能构造出 像 序列 b 的元素,其中我们要注意限制的可能序列 a 的个数 最后提交:原创 2023-09-05 14:55:24 · 158 阅读 · 0 评论 -
B. Sequence Game
找规律,思维题。我们查看 a 和 b 之间的关系可以知道,a[i - 1] a[i] 的时候我们要插入一个比 a[i] 还要小的值。最后提交:原创 2023-09-04 21:15:43 · 106 阅读 · 0 评论 -
C. To Add or Not to Add
贪心题目,化分离数为块。这里要注意的是 需要进行的排序以及操作的过程是什么样子的。 感觉那些操作数的问题都是 需要进行排序,然后 根据排序后的数值之差就是操作次数, (i - j + 1) (类似题目: 交换字符)最后 乘以 a[i] 就是将 a[i] 作为目标,然后 - sum 是判断操作次数是否符合规定的操作次数 k 。 如果不符合那么 丢弃前面的选择的元素,所以 j++ 最后提交:原创 2023-09-04 14:19:24 · 121 阅读 · 0 评论 -
A. Increasing and Decreasing
思维题,这里我们看一下规律,我们已知a(1),a(n) ,又因为 数列b 应该是递减的,而观察规律可知 ,数列b递减过程中,等差累加, 所以当我们 a(1) 到 a(n) 之间可用的数字如果小于 这些等差之和的话,一定没有满足的数组a,特判直接输出 -1.最后,模拟构造一遍数组,输出即可。原创 2023-09-02 11:39:48 · 157 阅读 · 0 评论 -
A. Channel
给出 目的人数n看到通告的数量,初始人数m上线的数量,通知系统上线q条消息,‘-’表示有人下线,‘+’表示有人上线。请输出是否可以有 n 个人看到消息,有输出 YES,可能有 输出 MAYBE,没有输出NO; 思维题,模拟变化过程,这里注意的是,通知消息中,会存在某一时刻最好的结果,达到 目标n 个人看到消息,所以特判YES,以及一开始全部人看到消息又要特判YES,最后 理想情况加上初始上线人数 m,如果 >= n 了,那么有可能全部看到了,否则没有。最后提交:原创 2023-09-01 11:07:55 · 127 阅读 · 0 评论 -
E1. Array and Segments (Easy version)
。原创 2023-08-29 17:00:30 · 47 阅读 · 0 评论 -
C. Nice Garland
题目是要在一个字符它的前面两个和后面两个字符不能与它本身有相同的字符。即 范围在 3 之内的字符串不能有相同的字符。 由于,我们前面两个和后面两个字符不能与它本身有相同的字符,所以可以得出,它将会是个一直重复相同的一段子串。即 读入的时候它的下标 pos % 3 即可获得答案,又因为它们3不同字符,可以组合成 6 种情况,分别是 所以我们枚举一遍所有答案,然后找到最小操作数即可。最后提交:原创 2023-09-02 13:49:36 · 322 阅读 · 0 评论 -
B. Divisors of Two Integers
给出 一个列表数组,这个列表数组中,是两个正整数 x 和 y 的约数将它们放在了一块,请找出这两个 x 和 y 的值分别是多少。 这道题很有意思,就单纯的思维题。从给的样例我们可以知道,一定有一个最大的数作为 x 或者 y,所以我们把 这个最大的约数弄出来之后,再把剩下的数中的最大数一定就是 y 或者 x。最后提交:原创 2023-08-28 22:06:26 · 38 阅读 · 0 评论 -
F. 3SUM
这道题很好玩,找出任意 三个元素,相加有没有结果个位数为 3 的三个元素这里我们三重循环个位数 0~9相加即可,输入的时候统计每个元素的相应的个位数,该个位数共有多少个,然后暴力枚举一遍可以了代码详解如下: 最后提交:原创 2023-08-27 16:45:11 · 39 阅读 · 0 评论 -
E. Binary Deque
思路: 双指针,思维可模拟的题,这题目的意思是 只删除前面和后面,我们应该联想到 子序列这里需要特判两个情况,最后难点就是在维护子序列的情况;代码详解如下: 最后提交:原创 2023-08-27 15:38:40 · 73 阅读 · 0 评论 -
B. All Distinct
这道题很好玩,单纯思维题,我们找一下规律,题目要求咱们 通过删除 两个元素 来达到符合 不能有 i < j && a[i] == a[j] 并且选择删除的时候,尽量使得数组最长在这里我们看一下规律,我们可以发现,通过删除之后,剩下的元素一定是 单独唯一的,并且删除的时候,我们的删除次数一定是 偶数代码详解如下:最后提交:原创 2023-08-24 19:23:08 · 46 阅读 · 0 评论 -
F. Eating Candies
思维题,模拟操作,在这里我们只要找到符合前面某个下标之前的总和等于后面开始往前遍历的总和,即可得出答案,有点像双指针算法,这里我们利用相减的特性,当它们吃糖果,吃到相等总和的时候,相差是 0 ,所以我们记录好相差是 0 的两个下标,然后取个 答案 ans max 就可以得到吃的最多糖果总数量。原创 2023-08-17 16:16:37 · 68 阅读 · 0 评论 -
E. Special Elements
然后利用 连续 的特征性质,遍历每个数组 元素 作为起点 往后累加,一旦大于该元素 停止累加,然后查找我们 连续累加 所得的对应结果,我们 a 数组里有没有出现过,累加答案即可。思维题,这里关键是 连续 这个方面,我们可以先统计一下 a 数组相应的元素有多少个。原创 2023-08-17 12:38:24 · 54 阅读 · 0 评论 -
C. Yet Another Permutation Problem
思维,找规律题,看样例,就是当前的一个数是后面一个数的两倍。原创 2023-08-16 15:20:14 · 194 阅读 · 0 评论 -
B. Good Arrays
所以我们可以想一个思路就是,让 a 中不同元素之间位置调换作为 b 数组,然后判断对应的下标元素是否相同即可,对这个思路扩展,如果暴力肯定会 TLE。在这里,我们是可以使用 a数组 中的元素的,只是要求我们 b 数组的元素下标所对应的 a 数组元素不能相等,它们的元素总和相等。所以我们可以从 sum 入手,将它们的每个元素偏差一下的累加,如果大于等于零,说明可以进行调换元素位置或者添加一些新的元素的。原创 2023-08-12 14:21:31 · 84 阅读 · 0 评论 -
B. Same Parity Summands
这里我们 每个元素除以 2 余数相同,就是奇偶性一致,又因为 它们当中元素肯定跟我们的 n 因子成倍数关系,所以我们可以从 分解因子 进行突破,构造出来就可以了。在这里,题目意思是 n 是 k 个元素的总和,每个元素它们的奇偶性一致,并且它们除以2余数相同。这是一道思维题,构造算法。原创 2023-08-12 01:57:09 · 60 阅读 · 0 评论 -
E. Scuza(二分)
这里我们 需要记录每个台阶相应位置的 总高度, 也就是求出 前缀和 ,之后我们还要存储好到达所对应高度坐标中的 Tim 所需要的跨越高度是多少,并记录到满足该条件后对应的前缀和下标是多少。这里是,二分的题目,题目的意思是有一个 数组a 是阶梯高度,数组 b 是Tim 可以跨上阶梯的高度,问Tim对应的可跨上阶梯的总 最高的 高度是多少,也有一点贪心思想。因为我们往后都是需要前面要满足的高度,也就是说 我们后面的要到达后面的阶梯高度,需要满足前面阶梯Tim跨越的高度。这里还要注意用 long long。原创 2023-08-11 23:19:28 · 84 阅读 · 0 评论 -
D. Coprime(掐时间复杂度点,思维题,贪心)
又因为 这里元素数据范围是 1000 即(10^3)这里我们再进行两层循环 时间复杂度是 10^6 加上我们的 __gcd ()时间复杂度O(log min(a,b)),最坏情况nlog min(a,b),测试样例 1原创 2023-08-11 12:50:59 · 74 阅读 · 0 评论 -
F. We Were Both Children
然后找到对应的 坐标累加有多少只青蛙跳到这,然后取出 最多青蛙在同一坐标数量,就是我们捕获到的最多青蛙。所以我一开始一直用 vector 和 数组 啥的,一直 TLE 不知道为啥 (;这里就是暴力模拟一遍,不同的是,要用 umap 来模拟每只青蛙跳跃在 n 范围内。原创 2023-08-10 22:00:21 · 88 阅读 · 0 评论 -
E. The Lakes
BFS 或者 DFS 走一遍,这里都是只用一次数值,所以我们每当取完这个数值之后,都可以赋值为 0 ,就可以边走边初始化的操作,我就是没想到这个一直 TLE (;原创 2023-08-10 15:47:59 · 67 阅读 · 0 评论 -
D. Gold Rush
思路:这道题很有意思的,题目意思要我们从 一堆 n 个黄金中,按照分成的任意堆,按照两堆两堆分成的时候,另一堆应该是 另一堆的一倍。原创 2023-08-11 12:53:52 · 38 阅读 · 0 评论 -
D. Balanced Round
这里是贪心排序,我们可以先从小到大排好序,使它们的差值尽可能的缩小,如何再遍历一遍找出符合 两个数之间差原创 2023-08-09 23:12:01 · 146 阅读 · 0 评论 -
C. Tiles Comeback
题目意思,是 k 是至少铺路的长度,这里是找出前面第一个元素所铺的路 和最后一个元素所铺的路之和要满足 k 的倍数,可以换个思维,让它们 >= k 也会称为 k 的倍数,因为也有可能加上中间的一些没有涂颜色的路,而这里有两种情况。第二种: 不同的时候,我们要先找到前面元素数量满足>=k ,再找 最后元素数量是否 >= k。第一种: 前后元素相同的,所以我们只要 这个元素的总和 >= k。单纯思维题,还是得要多练练,查看规律,原创 2023-08-08 22:49:43 · 53 阅读 · 0 评论 -
A. Escalator Conversations
就是题意有点难理解,还得需要多练练,题目的意思就是 找出有多少个人和小弗高度差在步数可以走动的台阶高度之内的。即 abs(h - peoh[i]) < k * m ,又因为我们 高度差是符合 我们走动的步数之间的,即 abs(h - peoh[i]) % k == 0 就可以了。这里其实直接模拟即可。原创 2023-08-08 22:09:09 · 34 阅读 · 0 评论 -
(笔记)小白入门CF 多组测试样例新发现,2题
然后我们聊天喊话都要将消息发给这个房间的所有人,所以我们需要统计我们添加了多少人,这里有多组测试样例,刚开始我是因为。这道题需要理解其中意思,然后纯模拟,题目意思是,有三个命令 +,-,喊话。这样去读取字符串,会遇到空格就停止读入的,然后新发现。所以根据题意,我们模拟一下就可以通过了。这样照样可以应付多组测试样例。原创 2023-08-03 22:36:58 · 106 阅读 · 0 评论