随笔分类 -  题解

蒟蒻的题解
摘要:Polyomino 题解 Meaning 给定三个字符矩阵,求它们能不能拼在一起变成一个 $4 \times 4$ 的全部是 # 的矩阵。 Solution 大模拟。说简单也不简单,很复杂;但是说难呢,又不难。 思路:搜索每一个矩阵的状态。 0x001 旋转矩阵 一个字符矩阵,考虑顺时针旋转 $90 阅读全文
posted @ 2023-10-03 13:54 rksm2333 阅读(28) 评论(0) 推荐(0)
摘要:Festival 题解 Meaning 给定 $N$ 和 $M$,还有 $M$ 个正整数 $a_1 \sim a_n$,对于每个 $i \le n$,求出 $a$ 中第一个大于等于 $i$ 的整数和 $i$ 的差。 Solution 题目保证 $a$ 数组单增,所以就可以用二分函数 lower_bo 阅读全文
posted @ 2023-10-03 13:29 rksm2333 阅读(42) 评论(0) 推荐(0)
摘要:321-like Searcher 题解 题意简述 给一个正整数 $K$,求出第 $K$ 个从左到右每个数位依次严格递减的数。 思路 可以去参考一下 P1218。 很容易想到 dfs。枚举首位数字,然后构造一个 $10$ 位的从左到右每个数位依次严格递减的数。 计算一下可以得出:最多有 $1022$ 阅读全文
posted @ 2023-09-24 17:26 rksm2333 阅读(43) 评论(0) 推荐(0)
摘要:[ABC321D] Set Menu 题解 题意简述 给定 $N$ 个整数 $a_1 \sim a_n$ 和 $M$ 个整数 $b_1 \sim b_m$ 还有一个常数 $P$,每两个整数的和是 $\min\{sum,P\}$,求出所有数之和。 思路 对于每个 $a_i$,可以在 $b$ 数组里面找 阅读全文
posted @ 2023-09-24 17:12 rksm2333 阅读(29) 评论(0) 推荐(0)
摘要:Relative Position 题解 题目保证不矛盾,就可以直接 vector 建图,然后 dfs 一遍,边权为 $(w_x,w_y)$ 表示坐标的差,从 $u=1$ 开始搜索,设点 $u,v$ 有一条无向边,$v_x = u_x + w_x,v_y = u_y + w_y$,最后如果没有被标记 阅读全文
posted @ 2023-09-17 13:48 rksm2333 阅读(22) 评论(0) 推荐(0)
摘要:RGB Substring (hard version) 题解 思路 首先观察得出:字符串 $s$ 的长度为 $k$ 子串为 RGBRGBRGB...... 的子串,这个子串只有三种可能:RGBRGBRGB......,GBRGBRGBR......,BGBRGBRG......。 所以自然可以想出 阅读全文
posted @ 2023-09-15 18:52 rksm2333 阅读(15) 评论(0) 推荐(0)
摘要:Promising String (easy version) 题解 Promising String (easy version) 题目传送门 思路 求区间内 + 比 - 多的个数。考虑 $n \le 2000$,可以得出一个 $O(n^2)$ 的算法:两个指针枚举左端点和右端点,前缀和 $O(1 阅读全文
posted @ 2023-09-15 18:37 rksm2333 阅读(23) 评论(0) 推荐(0)
摘要:题解 题意简述 给定 $n$ 个数,求这 $n$ 个数中有多少个二元组 $(x,y)$ 满足其中每一个数都是 $m$ 的倍数。 思路 前缀和,$(x,y)$ 内每一个数 $\bmod \ m = 0$,可以用 $(sum_y - sum_{x - 1}) \bmod \ m = 0$ 表示。但是这题 阅读全文
posted @ 2023-09-06 20:03 rksm2333 阅读(24) 评论(0) 推荐(0)
摘要:题解 思路 不用关心每个数的每一位是什么、哪几位相同,我们只需记录每个数出现了哪几个数字,可以使用类似于状态压缩的思想记录每个数的状压形式,比如一个数为 $(4)_{10}$,那么他的状态压缩形式为 $(00001)_2$。 当两个数在状态压缩表示下有一位相同,我们就认为这两个数是一对,每个二进制数 阅读全文
posted @ 2023-09-05 18:07 rksm2333 阅读(12) 评论(0) 推荐(0)
摘要:题目传送门 题解 这一题 $n,m$ 范围都不大,可以枚举 $1 \sim m$ 中的每个 $i$,修改 $t$ 的值后进行判断。 需要注意:最后要输出一个换行符(我因为这个 WA 了不知道多少发)。 AC Code #include<iostream> using namespace std; c 阅读全文
posted @ 2023-09-03 19:31 rksm2333 阅读(17) 评论(0) 推荐(0)
摘要:题目传送门 题解 对于每次操作,只需要修改两个数,自然会想到 dfs 枚举每次操作修改哪两个数,但是题目不允许你这么做,因为时间复杂度是 $2^n$,而 $n \le 10^5$,直接写会炸掉。 但是我们可以使用一种叫做《搜索剪枝》的神奇东西。 这题的剪枝是一种可行性剪枝,判断每个数是否合法,如果不 阅读全文
posted @ 2023-09-03 19:10 rksm2333 阅读(21) 评论(0) 推荐(0)
摘要:题解 思路 不用关心每个数的每一位是什么、哪几位相同,我们只需记录每个数出现了哪几个数字,可以使用类似于状态压缩的思想记录每个数的状压形式,比如一个数为 $(4)_{10}$,那么他的状态压缩形式为 $(00001)_2$。 当两个数在状态压缩表示下有一位相同,我们就认为这两个数是一对,每个二进制数 阅读全文
posted @ 2023-08-31 14:00 rksm2333 阅读(21) 评论(0) 推荐(0)