随笔分类 -  C++算法 / 模拟

模拟
摘要:本题做法 模拟,two-pointers。 思路 首先因为题目中的项链是一个环形,而在环形上面处理问题是比较麻烦的,所以我们需要将环形转化为一条直线。我们可以将整个字符串复制一遍放在末尾,然后遍历开头为 \(i=1,2,\cdots, n\) 的项链(即第 \(i\sim i+n-1\) 个珠子)就 阅读全文
posted @ 2025-08-28 14:47 2789617221guo 阅读(7) 评论(0) 推荐(0)
摘要:本题做法 队列(queue)和结构体。 思路 我们一开始最容易想到的方法就是使用一个动态数组 vector 来存储数据,但是这样操作光是一次操作 1 的 \(c\) 达到极限数据 \(10^9\) 就会直接超时,时间复杂度为 \(O(c)\)。我们需要想一些优化思路。 定义结构体类型 node 代表 阅读全文
posted @ 2025-07-07 11:25 2789617221guo 阅读(26) 评论(0) 推荐(0)
摘要:本题做法 前缀和思想、模拟和贪心。 思路 定义一个数组 \(pre[i]\) 表示油价数组 \(a\) 中 \(a[1]\sim a[i]\) 中的最小油价,递推公式为 \(pre[i]=\min\{pre[i-1], a[i]\}(i>1),pre[1]=a[1]\)。遍历距离数组 \(v\) 的 阅读全文
posted @ 2025-06-24 20:22 2789617221guo 阅读(89) 评论(0) 推荐(0)
摘要:本题做法 DFS+剪枝。 思路 \(30pt\):朴素 DFS 定义 DFS 函数为:void dfs(int x,int y,int t),其中 \(x\) 和 \(y\) 为当前搜索的坐标,\(t\) 代表当前要走第几步。 DFS 函数主体内每次都根据当前方向一直走,直到走到墙壁或尽头,则退出函 阅读全文
posted @ 2025-04-21 19:23 2789617221guo 阅读(8) 评论(0) 推荐(0)
摘要:本题做法 二分,贪心。 思路 二分答案,每次使用 \(check\) 函数检验。 \(check\) 函数:定义 2 个变量 \(now\) 和 \(nxt\),分别代表当前快乐值以及下一块要吃的巧克力。从 1 遍历到 \(d\),每次先将 \(now\) 除以 2,若 \(now<mid\),则一 阅读全文
posted @ 2025-04-09 13:33 2789617221guo 阅读(47) 评论(0) 推荐(0)
摘要:本题做法 BFS。 思路 本题其实难就难在传送门如何存储。我的做法是使用 3 个 map 存储传送门,一个 map 叫做 \(exist\)(map<char,bool>),代表传送门 \(c\) 是否存在(就是有没有输入过了),是为了后面的存储判断做准备;第二个 map 叫做 \(lastdoor 阅读全文
posted @ 2025-03-13 20:14 2789617221guo 阅读(47) 评论(0) 推荐(0)
摘要:题目传送门。 思路 可以使用递归来解此题。 我们发现,当我们把第 \(n\) 和 \(n+1\) 个棋子移动到第 \(2\times n+1\) 和 \(2\times n+2\) 的空位上,再把第 \(2\times n-1\) 和 \(2\times n\) 个棋子移动到第 \(n\) 和 \( 阅读全文
posted @ 2025-02-20 18:58 2789617221guo 阅读(44) 评论(0) 推荐(0)
摘要:洛谷P1010 [NOIP 1998 普及组] 幂次方 题解 题目传送门。 思路 使用一个函数 \(dfs\) 作为递归函数,传入一个参数 \(n\) 表示要分解 2 次幂的数。如果 \(n=1\),直接输出 \(2(0)\);如果 \(n=2\),输出 \(2\)。随后输出 \(2\),使用一个变 阅读全文
posted @ 2025-02-20 13:43 2789617221guo 阅读(65) 评论(0) 推荐(0)
摘要:洛谷P1786 帮贡排序 题解 题目传送门。 思路 使用结构体定义类型 person 表示一个人,结构体内成员变量需包含名字、职位、帮贡、等级、输入顺序(即ID),用 2 次 sort 排序将 person 数组排序。 第一次排序:cmp1 cmp1 是第一次排序时的自定义比较函数(用法如:sort 阅读全文
posted @ 2025-02-17 19:18 2789617221guo 阅读(33) 评论(0) 推荐(0)
摘要:洛谷P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two 题解 题目传送门。 思路 使用简单的模拟思想来模拟Farmer John和2头牛的移动过程,唯一的难点在于如何判断是否永远无法抓到2头牛。 这个难点可以使用一个简单的六维bool型数组来判断,若在某一时间点,2个 阅读全文
posted @ 2025-02-17 13:39 2789617221guo 阅读(91) 评论(0) 推荐(0)
摘要:洛谷P4924 [1007] 魔法少女小Scarlet 题解 题目传送门。 思路 通过模拟几次顺时针和逆时针的转换,不难发现每次顺时针旋转后,第\(i\)行的内容往往就与原来的第\(i\)列内容有关,如下表: 1 2 3 4 5 6 7 8 9 顺时针旋转后: 7 4 1 8 5 2 9 6 3 同 阅读全文
posted @ 2025-02-17 13:12 2789617221guo 阅读(59) 评论(0) 推荐(0)
摘要:P1014[NOIP 1999 普及组] Cantor 表 题解 题目 题目传送门。 题解 思路 这是一道有意思的经典递推题目。 通过肉眼观察和枚举样例理解,不难发现,第\(x\)条“/”斜线上有\(x\)项元素,当\(x\mod2=0\)时,第\(i\)项\(a_i\)/\(b_i\)中的分子\( 阅读全文
posted @ 2025-02-09 22:07 2789617221guo 阅读(59) 评论(0) 推荐(0)