随笔分类 - 杂题乱刷2
摘要:场切了,写篇题解纪念一下。 题目链接 CF1365G Secure Password 解题思路 首先有个非常显然的次数为 \(2 \times \log n\) 次的做法,就是我们根据二进制逐位考虑即可,那么为什么次数要乘上 \(2\) 呢,因为你在求出答案时,需要通过 \(0,1\) 两种不同的数
阅读全文
摘要:简单题。 题目链接 CF862D Mahmoud and Ehab and the binary string 解题思路 首先我们可以发现,字符串的第一个字母不是 \(1\) 就是 \(0\),因此我们可以容易花费 \(2\) 次询问来找到数字 \(0\) 或数字 \(1\) 所在的一个位置。 然后
阅读全文
摘要:怎么题解区里都没有随机化的题解啊 /jy。 于是就有了这篇题解。 题目链接 CF862C Mahmoud and Ehab and the xor 解题思路 思路非常简单。 首先容易发现在 \(n = 1\) 时,直接构造一个 \(x\) 这个数即可。 其次我们考虑 \(n = 2\) 的情况,由于
阅读全文
摘要:题目链接 CF1360H 解题思路 发现你可以十分高效的统计小于等于 \(x\) 的合法的数字数量。 并且你可以发现,当 \(x\) 递增时,合法的数字数量是不递减的,因此合法的数字数量是具有单调性的。 于是可以进行二分答案。 那么如何进行 check 呢?我们先将不可选用的二进制数字给转化成数字,
阅读全文
摘要:题目链接 K-beautiful Strings CF1493C 解题思路 首先,如果原字符串是合法的直接输出原字符串即可。 然后我们考虑一个最简单的暴力,你枚举第一个你构造的字符串比原串大的字符的位置,再枚举这个字符,然后后面的肯定是从后往前贪心放即可,在此不再赘述。 这样的复杂度是 \(O(|S
阅读全文
摘要:duel 到的。 题目链接 CF1567D 解题思路 发现在越高的数位上,你获取的利益就会越大。 因此你肯定是每次将尽可能多的数分到最高的数位上是最优的。 但是你会发现,有可能你这样分数位后后面的数就分不到权值了,你只需要保证去掉当前分掉的权值之后,剩下可以分的权值不小于还剩下没分到的数字数量即可。
阅读全文
摘要:vp 到的。 题目链接 CF1183E Subsequences (eazy version) CF1183H Subsequences (hard version) 解题思路 考虑动态规划。 设 \(dp_{i,j}\) 表示考虑到字符串前 \(i\) 个字符中选取的字符长度为 \(j\) 的不同
阅读全文
摘要:题目链接 CF1486C1 CF1486C2 解题思路 提供一个比较显然的思路。 我们发现我们可以先求出整体的最小值,然后设整体最小值所在的位置为 \(id\),则我们可以通过 \(1\) 次询问 \([1,id]\) 来求出最大值的位置是在 \([1,id)\) 还是在 \((id,n]\)。然后
阅读全文
摘要:题目链接 at_abc365_f 解题思路 根号分治。 首先有一个显然的贪心,就是能往右走,是一定要往右走的,而剩下的情况,若我们在最高点的上面,那么一直往下走直到可以往右走是最优的,若我们在最低点的下面,那么一直往上走直到可以往右走是最优的。 于是我们就有了 \(O(nq)\) 的做法。 设阙值为
阅读全文
摘要:题目链接 CF1996F 解题思路 考虑二分。 我们发现,我们肯定是拿此时的价值最大的物品。 因此,当所有的物品再拿一次后会小于等于 \(x\) 时拿走的物品数量,在 \(x\) 缩小时,答案是单调不减的。 因此,我们可以令二分当所有的物品再拿一次后会小于等于 \(x\) 时的物品总价值是多少,注意
阅读全文
摘要:vp 到的。 题目链接 CF1889A Qingshan Loves Strings 2 解题思路 我们考虑从头到尾依次判断情况。 维护两个指针 \(l,r\) 来依次比较,直到有 \(a_l = a_r\)。 这种情况根据题目所述是不合法的,因此我们需要依次分讨一下两种情况: \(a_l = a_
阅读全文
摘要:duel 到的。 题目链接 CF1513C Add One (luogu) CF1513C Add One (codeforces) 解题思路 我们发现,初始数列中的每个数字变为 \(10\) 必定只需要至多 \(10\) 次,于是我们可以直接预处理出 \(10\) 这个数字经过 \(i\) 次变化
阅读全文
摘要:题目链接 P3107 [USACO14OPEN] Odometer S 解题思路 数位 dp 模板。 令某个数的特殊数字为在一个数字中至少出现过一半的数位的数字。 首先我们可以依次拆分数位来枚举当某个数位为特殊数字时来进行数位 dp,状态为 \(dp_{last,len,num,sum,\_1,\_
阅读全文
摘要:题目链接 abc363f 解题思路 注意到一个数的因数只有 \(O(\sqrt{n})\) 个,且此题中的表达式是需要为回文的,因此我们可以先预处理出所有自身乘倒过来的这个数的乘积为 \(n\) 的因数的数。 然后就是爆搜了,由于我们已经预处理过,因此直接搜索可行的数即可,注意,可行的数数位中不含零
阅读全文
摘要:题目链接 abc363d 解题思路 比较无脑的思路。 你考虑到,你只需要确定前半部分的数字也就可以构造出后面的部分使此数字回文。 于是可以进行数位 dp 来进行计数 \(1 \sim n\) 中有几个回文数,再二分答案即可。 状态大概是 \(dp_{x,0/1}\) 表示考虑到前 \(x\) 为目前
阅读全文
摘要:题目链接 CF1615C Menorah (luogu) CF1615C Menorah (codeforces) 解题思路 这题有三个重要的性质: 在同一个点做两次操作与不在这个点做操作是等价的。 给两个不同的点做操作等价于交换这两个点。 给一个字符串做偶数次操作,这个字符串的 \(0\) 的数量
阅读全文
摘要:duel 到的。 题目链接 CF1015D Walking Between Houses 解题思路 一道细节题。 思路很简单,肯定是一开始能走的越多越好,因此就有一种较好实现的方案,先每次走 \(n - 1\) 格,但由于每次至少要走一格,因此如果不够走了就把能走的都走掉,之后全走 \(1\) 步即
阅读全文
摘要:duel 到的。 题目链接 CF727D 解题思路 首先只能选一个尺码的人直接给就是了,这样我们就只用考虑选两个尺码的人了。 因为两个尺码的人适合的两个尺码是相邻的,因此我们直接从小到大按照有两个尺码的人排序,再将剩下的衣服大小从小到大排序,然后依次给就可以了。 这里我用了桶排,时间复杂度 \(O(
阅读全文
摘要:duel 到的。 题目链接 CF727D (luogu) CF727D (codeforces) 解题思路 首先只能选一个尺码的人直接给就是了,这样我们就只用考虑选两个尺码的人了。 因为适合穿两个尺码衣服的人的适合穿的两个尺码是相邻的,因此我们直接从小到大按照有两个尺码的人排序,再将剩下的衣服大小从
阅读全文
摘要:题目链接 CF402D Upgrading Array (luogu) CF402D Upgrading Array (codeforces) 解题思路 首先你会发现你一旦在第 \(i\) 个位置上做了一次操作后,那么你之后所有在第 \(j(i \le j)\) 个位置做的操作都是无效的,因为此时该
阅读全文

浙公网安备 33010602011771号