随笔分类 - 题解
摘要:题面传送门 解决思路 搜索标签启发我们可以用 $\text{BFS}$ 切掉这题。 用数组存储当前的状态,每次交换相邻的数得到新的状态,同时记录次数。当第二次找到目标状态时,就得到答案了。 考虑到可能多次得到相同答案但用的次数不同,不太好用标记剪枝(可能得不到答案),但由于本题数据较水,不优化也可以
阅读全文
摘要:题面传送门 解决思路 首先可以发现,一段长度为 $n+1$ 的连续相同字母合并所需的最小代价为 $1\times 1+2\times1+3\times 1\dots+n\times 1$(一个一个合并),构成了一个等差数列。 而当多段连续相同的字母组合在一起时,例如 $\text{aaaaacccy
阅读全文
摘要:题面传送门 解决思路 讲一下 $\text{VP}$ 时的思路。 首先想到,只要能将棋盘中红色或蓝色部分全部填成同一个数,那么剩下的就不会受限了(可行有两个,限制只有一个): 但考虑到交互库可能有点坑,比如第一个给了 $1$,你钦定了红色块全填 $2$,但后面他可能一直给 $2$ 。这样的话,你只能
阅读全文
摘要:题面传送门 解决思路 本题数据范围较小,可以使用模拟退火算法(随机化)。 顾名思义,模拟退火就是一个类似于降温的过程。先设置一个较大的初温,每次随机改变状态,若使答案更优,则采取更优答案,否则根据其与当前最优答案的差值,一定概率保留这个较不优的答案。这时为了防止答案陷入局部最优的情况: 比如下图,陷
阅读全文
摘要:题面传送门 解决思路 题目中虽然说是无根树,但我们可以钦定这棵树的根为节点 $1$,方便构造,这是不 影响结果的。 以下记给定的三段长度为 $a,b,c$。 先考虑无解的情况。 首先,给出的三个距离,任意两者之和必须大于等于第三者,否则显然无解。 其次,用到的边数不能 $\ge n$。 最后,两个节
阅读全文
摘要:题面传送门 解决思路: 首先考虑到,一个点最终的情况只有三种可能:不被染色,被行染色,被列染色。 若一个点同时被行、列染色多次,显示出的是最后一次被染色的结果。所以我们可以使用结构体,对每一行、每一列记录下其最后一次被染色的颜色和时间。因为同行或同列反复染只有最后一次有影响,所以后来的直接覆盖之前的
阅读全文
摘要:题面传送门 解决思路 本题是找最长路的图上问题,所以先考虑如何建图。 首先把每一个字母转化为数字,然后对于每一个点枚举四个方向,如果有下一个字母,就向那个点建一条边,可以用 $vector$ 存图比较方便。用数字标号,只需要判断 $t_{x2,y2}=(t_{x1,y1}+1)\mod 4$ 是否成
阅读全文
摘要:题目传送门 位运算 设题目中序列 $w_1,w_1 & w_2,w_1 & w_2 & w_3,\dots,w_1 & w_2 & \dots & w_n$ 为序列 $A$。 因为是数字一个一个 $&$ 到之前的结果上,所以可以知道 $A$ 序列单调不增。 ~~从给出的样例中发现,似乎没有答案超过
阅读全文
摘要:题面传送门 好题。 主要思路和另一位巨佬差不多,详细讲一下判断的部分。 解决思路: 首先考虑本题与拓扑排序有和关系。可以想到,某些棍子的先后移动顺序是有限制的。比如: 这里红色的必须比蓝色的先移动,因为它们在 $x$ 轴的投影有重叠,蓝色在上,会被红色卡住。 所以,棍子两两之间可能存在限制关系,这就
阅读全文
摘要:题面传送门 解决思路: DP 与拓扑结合。$f_{i,j}$ 表示到 $i$ 位置 $j$ 的最大次数。 将 $a \sim z$ 转成数字 $0\sim 25$ ,方便存储。 考虑转移。这一部分其他题解讲的很详细了,也很好理解。对于二十六个字母($j$): 若是当前节点,则 $f_{tmp,j}=
阅读全文
摘要:题面传送门 其实这题根本不用搜索,有耐心即可。 可以发现,在 $n\times m$ 范围内扫,可能合法的只有以下四种情况,其中蓝色代表示是 *,红色表示不能是 *,其中黄色五角星表示当前 $i,j$ 的位置。 所以只要把 * 标记为 $1$,全图扫一遍,发现合法就给它变 $0$,看最后有没有 $1
阅读全文
摘要:题面传送门 解决思路 首先容易得知,两个字符串中 $b$(或 $a$) 的个数为偶数时,一定有解。为奇数则一定无解。 其次考虑怎么交换。对照样例三: in: 8 babbaabb abababaa out: 3 2 6 1 3 7 8 发现,每一对交换的字符有共同点: 要不是串一都为 $a$,串二都
阅读全文
摘要:题面传送门 解决思路 首先,我们让 Megan 先走,因为他可以留下传送门。可以得知,不管怎么走,他到达终点所耗费的能量一定是 $n+m-2$ 。 然后,Stanley 走时就可以利用传送门。考虑怎样布置传送门可以使 Stanley 走的路最短。这时只要分情况讨论即可。若 $m\ge n$,就会出现
阅读全文
摘要:题面传送门 本蒟蒻想练习一下并查集,所以是找并查集标签来这里的。写题解加深理解。 解决思路 自然,看到区间修改之类很容易想到线段树,~~但本蒟蒻线段树会写挂~~,所以这里就讲比较简单的并查集思路。 并查集的核心是 $\text{find}$ 函数。$\text{find}$ 函数的目的是找到一个节点
阅读全文
摘要:题面传送门 解决思路 看到 $10^{18}$ 的范围,我们可以想到二分答案。只要对于每一个二分出的答案进行 $check$ ,如果可行就往比它小的半边找,不可行就往比它大的半边找。 以下是 $check$ 的过程(以不可行返回 $true$ 为例): bool check(long long x)
阅读全文
摘要:题面传送门 解决思路 首先我们可以得出,$ a $ $&$ $ x $ $=$ $ a $ $&$ $ x $ $&$ $ x $。由此得知,同一个 $a$ 反复 $&$ $x$ 是没有意义的。所以我们得到,答案仅可能是以下几种情况: $ans = 0$ ,即有相同的数字,不需要操作。 $ans =
阅读全文
摘要:题面传送门 题目描述 有 $n$ 个数 $a_i$ 请你从中至少选出一个数,使它们的乘积最大 解决思路 对于正数,对答案一定有贡献(正数越乘越大),所以输入正数时直接输出即可。 对于负数,如果负数的个数 $f$ 是偶数,负负得正,可以全部输出。如果负数的个数 $f$ 为奇数,那么就输出绝对值较大的
阅读全文