- 博客(5)
- 收藏
- 关注
原创 codeforces思维题题解(950 div3 A)
题解:遍历给定的字符串,用桶(哈希表)记录对应字母(ascii码 - ‘A’)的数量,即使1到7对应A到G,随后遍历一遍,如果计数大于等于m,说明题目够了,答案不变。如果计数小于m,说明题目不够,要加上m - cnt[i](cnt[i]表示i对应的字母的计数,1-7的一个数字)。
2024-06-30 16:06:49
318
原创 codeforces思维题题解(937 div4 D)
题解:先预处理1 - 1e5 只有1和0的数,存入一个vector容器中。随后再遍历一次1 - 1e5的数进行判断。可以写一个递归的判断,称满足题目条件的数为好数,具体表示为:如果num = 1,num是好数,即递归的结束条件。如果存在num / i (i为先前处理的二进制十进制数 且 不为1)为好数,则num为好数。题意简化:给一个数n,1 < n < 1e5,问这个数是否可以被每一位都是0 和 1的数(二进制十进制数)相乘表示。将所有结果用bool数组预处理好后,进行多组输入判定并输出即可。
2024-06-30 15:55:56
312
原创 codeforces思维题题解(Edu 165 div2 B)
同时因为1都被移动到了一起,这会导致1都聚集在一起,出现110这样的情况,此时我们要将两个1都移动到0后,所选择的字串长度就会增加,成本为 c1(1的数量) + 1。题意简化:给定一个只有0和1字符串,可以将该选择一个子串进行循环移动,即最后一位字符移动到第一位,其他字符向后移一位,循环移动的成本为该子串的长度。要让所有的1都排在所有的0后面,求最少的成本。由此可以看出来,我们可以从头到尾遍历字符串,时刻记录1的数量,并且在1的数量不为0时,遇到0字符,就让答案加一次成本即可。
2024-06-30 14:58:45
228
原创 codeforces思维题题解(950 div3 C)
但我们会发现m次操作中除了找所需的数外,还有很多不需要的数字,这些数字我们应该怎么处理?不难看出,操作之间是可以覆盖的,例如3次操作1,2,3,我先把一个数变成1,再变成2,再变成3,最终结果就是这个数变成了3,前面1和2的操作的影响就消失了。题解:首先我们注意到,想要让原数组a尽量靠近修改后的数组b,就要在两个数组不同的数字之间做文章,而相同的数字我们就不需要管它们了,因此在录入修改后的数组b时,可以与原数组a的同下标数作对比,如果不同,就创建一个map容器,作为桶(哈希表)来收录修改后的数的所需数量。
2024-06-30 12:39:07
432
原创 codeforces思维题题解(954 div3 D)
但这里有一种特殊情况,如果所有的数都为1,此时我们会默认忽略掉了所有的1,结果为0,但显而易见答案其实不为0,这种情况下这样的做法是错的。因此当出现1时,视为将它与另一个数相乘,不会改变另一个数的结果,也不会对答案产生变化,因此可以直接忽略掉数值为1的数。因此我们可以枚举这个连在一起的数,再看其他的数字是什么情况,得出每一次枚举的答案,再取最小的答案输出。第一是出现0,因为0乘任何数都为0,所以包括连在一起的数在内的所有数,只要有一个数为0,把其他所有数相乘起来,就能得到最小的答案0,直接输出即可。
2024-06-29 17:07:03
395
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人