随笔分类 -  题解

一些OJ的题解
摘要:思路分析 分析样例: 见红线,长宽各为 2,存在格点;黄线长 2 宽 3,没有格点。 考虑延长黄线使得长 4 宽 6,发现有格点。思考格点,如果长和宽都可以被分成 \(p\times l\) 的格式,则存在格点。那么,就能想出: 推论 1:对于 \((0 \ , \ 0)\) 和 \((x \ , 阅读全文
posted @ 2024-08-05 20:49 IOIAK_wanguan 阅读(42) 评论(0) 推荐(0)
摘要:思路分析 分析样例: == TTBT BTTBTB TTT BTTB -> TTBT TBBTTB TTT BTTB -> TTBT TBTBBT TTT BTTB -> TTBT TBTBBT TTT TBBT 1 2 3 4-- 观察区块 2,发现 BTTB 进行操作后与右边的 TB 再次构成 阅读全文
posted @ 2024-08-05 19:35 IOIAK_wanguan 阅读(47) 评论(0) 推荐(0)
摘要:思路分析 分析样例 1: 3 1 3 2 原数组被分成 1 和 3 2 两部分,将 2 移到左边即可。 我们设左边部分的和为 \(s1\),右边为 \(s2\),可以发现对于任何分割方式,只有满足 \(s1 \pm x=s2 \mp x\) 才可以继续讨论答案是否成立。 推论 1:由于 \(x \i 阅读全文
posted @ 2024-08-03 19:16 IOIAK_wanguan 阅读(36) 评论(0) 推荐(0)
摘要:正文 对于每个选择题,都有两种状态,因此总状态数为 \(2^n\)。 请注意初始所有选择题都不选也是一个状态,不计入贡献,因此答案为 \(2^n-1\)。 代码: #include<iostream> using namespace std; int main(){ long long n; cin 阅读全文
posted @ 2023-10-22 22:11 IOIAK_wanguan 阅读(31) 评论(0) 推荐(0)
摘要:正文 这是样例 1 第 1 组数据的图。 让我们观察一下,路径 1->6、1->7、2->6、2->7 是可行的,所以答案为 4。 上述路径中好像点 4 没有贡献? 再看看样例 1 第 2 组数据的图。 发现点 1 和点 4 相互之间存在其他路径,无需经过点 \(a\) 和点 \(b\)。 综上,我 阅读全文
posted @ 2023-10-03 09:27 IOIAK_wanguan 阅读(72) 评论(0) 推荐(0)
摘要:## 正文 开个数组 $last_k$ 统计 $a_{i,j}$ 最后买彩票的时间,再开一排桶 $day_t$ 记录该天最后买彩票的有哪些人(即:有 $p$ 满足 $last_p=t$ 的集合)。 将 $last_k$ 放入 $day_t$ 中,判断 $day_t$ 中是否存在空桶,若有则无解(因为 阅读全文
posted @ 2023-08-14 22:02 IOIAK_wanguan 阅读(44) 评论(0) 推荐(0)
摘要:## 正文 在讲解之前,先来几种简单情况: 让 $n=1$ 转变成 $m=0$,只需要让 $n \land 0$ 即可; 让 $n=0$ 转变成 $m=1$,只需要让 $n \lor 1$ 即可。 将 $n$ 扩展成更大的。对于 $n$ 二进制的每一位数,只需要按上述情况处理即可,而由于可以对任意数 阅读全文
posted @ 2023-08-11 22:17 IOIAK_wanguan 阅读(151) 评论(0) 推荐(0)
摘要:写在前面:这是蒟蒻交的第一篇绿题题解(~~大祭~~),因为线性做法比较难想,本篇会着重讲述用 RMQ 问题求解,并尽可能用~~清晰明了~~的图片和~~简易~~的文字讲明白。 ## 正文 **最坏时间复杂度:$\mathcal{O}(\sum n+\log \sum n)$** 在求解之前,先让我们想 阅读全文
posted @ 2023-07-31 12:58 IOIAK_wanguan 阅读(173) 评论(0) 推荐(0)
摘要:写在前面:本题蒟蒻给出两种做法,一种乱搞贪心(只是目前能过,若能被 Hack 请和我说),一种正解二分。 ## 正文 1 **最坏时间复杂度:$\mathcal{O}(n+\log V)(V=10^9)$** 这个做法是很简单的,在此不多讲。只需要二分超频电压 `mid` 即可,若当前 `mid` 阅读全文
posted @ 2023-07-21 21:22 IOIAK_wanguan 阅读(145) 评论(0) 推荐(0)
摘要:## 正文 **最坏时间复杂度:$\mathcal{O}(\lvert S\rvert)$** 本题十分简单,但请注意**两个条件要同时满足**。 因为要求分割的次数越少越好,所以只要连续的辅音字母长度不大于 2 就不需要分割。 由于辅音字母太多,只需要标记元音字母即可。 ```cpp #inclu 阅读全文
posted @ 2023-04-29 16:38 IOIAK_wanguan 阅读(39) 评论(0) 推荐(0)
摘要:正文 最坏时间复杂度:$\mathcal{O}(n)$ 真不愧是签到题,差点没签上。。。 我相信题意各位肯定很理解了,非常简单,但如何解决就是个问题。 首先考虑朴素解法,建立一个求最长连续子序列的函数 $F$,如果用双指针的话,可以优化到 $\mathcal{O}(n)$;然后是枚举每个 $a_i$ 阅读全文
posted @ 2023-03-15 21:26 IOIAK_wanguan 阅读(275) 评论(0) 推荐(0)
摘要:正文 算法:贪心 首先挑代价最小的 \(a_i\),最后得到的数字越长越好。 其次可能 \(v\) 还会有剩余,从高位到低位,尝试用更大的数字代替原本的数字。 其实就是贪心。 #include<iostream> #define int long long #define fr(x,j) for(i 阅读全文
posted @ 2023-02-15 17:41 IOIAK_wanguan 阅读(59) 评论(0) 推荐(0)
摘要:正文 设数组 $c_{x,y,i,j}$ 代表 $(x,y)$ 位置的大格子中 $(i,j)$ 位置的小格子。 很显然,输入中字符的输入顺序是要调整的,实际的顺序是 $x,i,y,j$。 对于输入的 $x_0,y_0$,只要对 3 取模(若整除则结果为 3)即可得到它对应的大格子的位置。 详见代码: 阅读全文
posted @ 2023-01-24 17:12 IOIAK_wanguan 阅读(78) 评论(0) 推荐(0)
摘要:## 正文 **时间复杂度:$\mathcal{O}(\lvert S\rvert+q)$** 找规律的题。 我们先来研究三组数据: - `abcd`,答案是 2; - `aa`,答案是 1; - `ccffab`,答案是 2。 以下称将一个子串按题意每个字符双倍的操作为**完成**。 第一组数据, 阅读全文
posted @ 2023-01-07 20:45 IOIAK_wanguan 阅读(72) 评论(0) 推荐(0)
摘要:正文 妥妥的模拟,当然这边有个易错的地方:最后合并出来的所有类型球数只要大于等于这种类型的目标球数就可以合成。 我们设 $g$,对于每一种类型的球,如果它的现有球数(即 $k\in{a,b,c}$)大于等于它的目标球数(即 $t\in{x,y,z}$),那么 $g\leftarrow g+\left 阅读全文
posted @ 2023-01-02 15:55 IOIAK_wanguan 阅读(32) 评论(0) 推荐(0)
摘要:正文 很显然啊,这是在考一个叫连通块的东东,于是~~蒟蒻的~~我马上想到了连通块必备:并查集。 如果一个块四边连通了其它的块,那么合并这两个块。 当然,并查集要用二维的: typedef pair<int,int> pii; pii f[1005][1005]; void init(){//初始化并 阅读全文
posted @ 2022-12-27 19:51 IOIAK_wanguan 阅读(51) 评论(0) 推荐(0)
摘要:## 题意 给定 $n$ 个数,保证 $n \mid 3$,要将这 $n$ 个数分配到 $\dfrac{n}{3}$ 个三元组,有 $m$ 个要求 $a,b$,每个要求表示 $a,b$ 要在同一个三元组里,求最后的分组,若无解则输出 `-1`。 ## 正文 **准备知识:并查集** **最坏时间复杂 阅读全文
posted @ 2022-12-16 23:02 IOIAK_wanguan 阅读(38) 评论(0) 推荐(0)
摘要:## 正文 **最坏时间复杂度:$\mathcal{O}(l^3)$** 由于 $1\leq l\leq 100$,$\mathcal{O}(l^3)$ 可以过。 输入字符阵,枚举 $i,j$ 指向二维数组中的字符,向八个方向暴力搜索。 可以定义一个方向数组,再定义一个查找函数,这样可以减少码量,方 阅读全文
posted @ 2022-11-23 21:02 IOIAK_wanguan 阅读(26) 评论(0) 推荐(0)
摘要:正文 将原式 $a_i+a_j=2^p$ 转化为 $a_j=2^p-a_i$,对于,每个 $a_i$,枚举 $p$,可以有效地降低时间复杂度。 设 $num\leftarrow 0$,若 $2^p-a_i$ 存在相等的 $a_j$,则 $num\leftarrow num+1$,最后输出 $n-nu 阅读全文
posted @ 2022-11-12 18:33 IOIAK_wanguan 阅读(69) 评论(0) 推荐(0)
摘要:## 正文 **准备知识:快速幂** 考虑快速幂(~~其实本题暴力都能过,谁让我想那么多,害了自己~~),这里不做具体介绍,已贴网址。 对于每次快速幂前,先检查 $a$ 以及快速幂中累积的 $ans$ 是否超过题中给定范围,若超过,结束程序,输出 `-1`。 注意一下,由于是在每次乘方前进行了一次判 阅读全文
posted @ 2022-11-06 19:32 IOIAK_wanguan 阅读(130) 评论(0) 推荐(0)