- 博客(8)
- 收藏
- 关注
原创 Codeforces做题日记:Codeforces Round 921 (Div. 1) A. Did We Get Everything Covered?
那么如何构造counter case呢,我原本的想法是,如果输出是NO,就意味着最后一段肯定缺少了某个字符,那么我构造一段全是这个字符的子串,不就可以了吗,但是仔细想想就会发现漏洞,比如:字符串S是aaaabbbbcccc,n是3,k是3,按照之前的判断算法,直到第一个c出现,才会被划分为第一段,那么第二段就是ccc,在这个里面a,b都没有出现过,但是如果构造aaa或者bbb都是不成功的,下面是代码:(最开始的那个alphabets是我原本解题用另外一种方式时为了方便统计写的,后来的这种算法其实用不到)
2024-08-07 17:19:41
436
原创 Codeforces做题日记:拼尽全力终于是超时了
题目的要求非常简单,理解起来也很简单,很自然就能想到遍历一次,遇到比前一个小的就循环做平方直到比前一个大,但是用屁股也能想到这题不会这么简单就能做完,对一个数不断做平方的增长速度是非常快的,哪怕用double存都会超出范围,甚至都不需要几次操作就爆炸了,而且时间上也肯定过不了,那么我绞尽脑汁想出来了这么一个办法(尽管最后还是超时)(以下都是我当时的具体思考过程,有一些可能并不一定准确)对于一个给定的数组,你可以做如下操作:将某一个数变成它的平方,直到整个数组变成非递减的数组,求最小的操作次数。
2024-07-26 16:41:43
875
原创 Codeforces 做题日记:面向结果最有用的一集E. Novice‘s Mistake
额外说明一下这个nn...n(a-b个n)的意思,n可以是1~100的任何一个数,我们先把n重复a次,然后再在它的末尾删掉b个数,也就是说如果n是两位数或者100,那么最后的结果其实是2*n-b位数或者3*a-b位数,因为b每次只删一个,而重复a次时是将整个n重复。(遍历范围变成1~2600还有一个问题,就是n=1时输出是错误的,因为n=1时a,b只要满足a-b=1都是正确的,所以只遍历到2600显然不对,所以我专门写了一个if用来输入n=1答案)附代码:(相比于答案的简洁代码,我的只能说是臃肿而丑陋)
2024-07-17 17:35:30
373
原创 Codeforces 做题日记:简单的贪心算法 D. Test of Love
实现起来也很简单,定义一个string::iterator p和p2,每次由p2向前探m步(也就是你能跳的距离),如果遇到了L就立马跳过去,如果没有,此时p2所在的位置就是你能跳到的最远位置,那么看一看那边是不是C,如果是就回退直到p2变成W,如果发现p2重新退回到p的位置了,那么就说明前面已经没有可以踩的地方了,那就说明过不去(“前有死亡”),然后如果我们进入的W的格子,那么下一次就只能向前走一步,如此循环直到p到达string.end()我做的算法显然不是最优的解,但是也能过。
2024-07-17 17:08:42
1312
原创 Codeforces 做题日记Round 957 (Div. 3)-G.Ultra-Meow
关于Codeforces中Ultra-Meow题目的做题思路
2024-07-16 14:12:00
1780
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人