摘要: 洛谷专栏 day -X 因为抵得要看,所以一些奇怪的东西被删除了。 day -N 开始复习。 day -2 lyj 讲了圆方树,不知道会不会考…… day -1 刷模板题。 day 0 继续刷…… 晚上学习可持久化线段树,脑子废了。 听说赛前内卷会减 \(RP\)。 day 1 AM. T1 用一个 阅读全文
posted @ 2024-10-25 20:10 zla_2012 阅读(135) 评论(3) 推荐(1)
摘要: 思路 这道题需要倒序计算。 定义 \(dp_{i,j}=f\) 表示第 \(i\) 轮结束后余数为 \(j\) ,\(f=1\) 时, Takahashi 必胜,否则 Aoki 必胜。 动态转移方程式 令: \(x=dp_{i,(j \times 10 + a_i)\bmod 7}\) \(y=dp 阅读全文
posted @ 2024-10-25 16:17 zla_2012 阅读(21) 评论(0) 推荐(1)
摘要: 解题思路 纯粹的暴力题,赛时脑子抽了没写出来。 我们发现 \(n\) 和 \(K_i\) 的范围都很小,所以考虑暴力模拟。 先用 Floyd 算法求出任意两点之间的最短距离,\(i\) 与 \(j\) 的最短距离存放在 \(a_{i, j}\) 里。 接下来,再枚举每一座桥的方向,里面再枚举经过每一 阅读全文
posted @ 2024-10-25 14:43 zla_2012 阅读(21) 评论(0) 推荐(0)
摘要: 涉及知识点:网络流,拆点。 解题思路 由于企鹅的跳动非常像网络流的流,考虑可以把企鹅的移动过程抽象成一个流网络。 因为有很多冰块上有企鹅,所以建立一个超级源点,把有源点向冰块连一条边,容量为当前冰块上企鹅的数量。 把最终的终点看做汇点,由于本题的汇点不确定,而且数据范围很小,所以可以枚举汇点。 再考 阅读全文
posted @ 2024-10-25 14:42 zla_2012 阅读(46) 评论(0) 推荐(0)
摘要: 涉及知识点:网络流 解题思路 根据直觉,本题的可行流是猪。大致的网络是猪从猪舍流到顾客手里。 建立流网络 由于有多个猪舍和多名顾客,所以原问题需要建立超级源点和超级汇点。 对于超级源点,需要向每一个猪舍连一条容量为猪舍猪的数量的边。 对于超级汇点,需要顾客节点向超级汇点连一条容量为顾客最多买的猪的数 阅读全文
posted @ 2024-10-25 14:42 zla_2012 阅读(19) 评论(0) 推荐(0)
摘要: 涉及知识点:动态规划 解题思路 因为 \(W\) 和 \(H\) 的范围都很大,直接枚举两个车站的位置肯定会时间超限的,所以考虑动态规划。 定义 \(dp_{i, j}\) 表示所有横坐标小于等于 \(i\) 且纵坐标小于等于 \(j\) 的点的最小的 \(a_{i', j'} + c\times 阅读全文
posted @ 2024-10-25 14:42 zla_2012 阅读(27) 评论(0) 推荐(0)
摘要: 解题思路 考虑利用拓扑序逆推答案。 对于每一个单词,显然,只用考虑它的前 \(3\) 个字母和后 \(3\) 个字母。可以对每一种组合都编一个编号。 设当前字母组合为 \(s\),那么编号为 \(mp_s\)。 建立一张图,从每个单词的后 \(3\) 个字母组成的字符串向前 \(3\) 个字母组成的 阅读全文
posted @ 2024-10-25 14:42 zla_2012 阅读(18) 评论(0) 推荐(0)
摘要: 解题思路 由题可知,题目中的算数级数就是我们熟悉的等差数列。 对于 \(i\) 开始的一个最长的等差数列,它可以构成的等差数列的个数是 \(\frac{t \times (t + 1)}{2}\)(\(t\) 为当前等差数列的长度)。 我们又发现这个等差数列的最后一个数可能是下一个等差数列的第一个数 阅读全文
posted @ 2024-10-25 14:42 zla_2012 阅读(38) 评论(0) 推荐(0)
摘要: 涉及知识点:单源最短路。 解题思路 利用拆分的思想。 定义 \(dis_{0, i}\) 代表从 \(s\) 到 \(i\) 的最短路,\(dis_{1, i}\) 代表从 \(t\) 到 \(i\) 的最短路。 如果 \(s\) 到 \(t\) 的最短路已经 \(\le k\) 了,所以无论怎么添 阅读全文
posted @ 2024-10-25 14:41 zla_2012 阅读(71) 评论(0) 推荐(0)
摘要: 涉及知识点:堆 解题思路 利用堆来维护每个能力的最大值。 如果当前的最大值都不属于同一只海狸,就输出。 否则把当重复的元素弹出堆。 如果堆空了还没有找到,说明没有,输出无解。 代码 #include <bits/stdc++.h> #define int long long #define ll _ 阅读全文
posted @ 2024-10-25 14:41 zla_2012 阅读(20) 评论(0) 推荐(0)
摘要: 涉及知识点:构造。 解题思路 题目要求 \(a\) 的长度要最长,所以需要 \(a_1\sim a_i\) 和 \(a_i \sim a_{|a|}\) 最长,于是直接构造一个单调递增和单调递减的序列即可。 由于数据较小,可利用桶通过此题。 注意: \(a_1\sim a_{i-1}\) 与 \(a 阅读全文
posted @ 2024-10-25 14:41 zla_2012 阅读(12) 评论(0) 推荐(0)
摘要: 涉及知识点:字符串,set。 解题思路 首先,如果序列的长度为奇数,是一定不能做到的,所以 \(q\) 个询问直接输出 NO。 如果 \(i\) 为奇数且 \(s_i\) 为 \()\),则将 \(i\) 插入数据结构中。 同理,如果 \(i\) 为偶数且 \(s_i\) 为 \((\),则将 \( 阅读全文
posted @ 2024-10-25 14:41 zla_2012 阅读(20) 评论(0) 推荐(0)
摘要: 解题思路 暴力的方法非常显然意见,可以尝试去优化暴力算法。 由题意可知,将 \(a\) 数组去重是对最终答案没有影响的,所以可以现将 \(a\) 数组去重。 如果数组 \(a\) 去重后就满足了题目的要求,即 \(a\) 数组里的元素个数 \(\le 3\),直接输出从 \(1\) 到 \(a\) 阅读全文
posted @ 2024-10-25 14:41 zla_2012 阅读(17) 评论(0) 推荐(0)
摘要: 涉及知识点:set。 解题思路 为什么要用 set 呢?因为 set 可以去重! 令 \(s1\) 与 \(s2\) 均为 set。 \(|a \cap b|\) 相当于把 \(a\) 数组和 \(b\) 数组的元素放进 \(s1\) 里的长度。 \(|a \cup b|\) 相当于把 \(a\) 阅读全文
posted @ 2024-10-25 14:40 zla_2012 阅读(16) 评论(0) 推荐(0)
摘要: 涉及知识点:动态规划。 解题思路 由于题目要求求方案数,所以考虑动态规划。 定义 \(dp_{i,j}\) 表示 \(i\) 个数,最后一个数为 \(j\) 的方案数。 可以得到转移方程: \[dp_{i, j}=\sum_{k=0}^{2}dp_{i-1,k}\times (|k - j|\le1 阅读全文
posted @ 2024-10-25 11:20 zla_2012 阅读(14) 评论(0) 推荐(0)
摘要: 涉及知识点:字符串处理。 解题思路 记录每个字符出现的第 \(1\) 个位置和最后 \(1\) 个位置,询问时比较大小即可。 代码 #include <bits/stdc++.h> //#define int long long #define ll __int128 #define db doub 阅读全文
posted @ 2024-10-25 11:20 zla_2012 阅读(10) 评论(0) 推荐(0)
摘要: 涉及知识点:set。 解题思路 每次让列表中最大的元素缩小两倍,保证答案最优。 如果当前的元素缩小成 \(0\) 就直接跳出循环,输出这个序列。 由于序列需要支持插入、删除以及找最大值,所以这个序列可以用 set 来维护。 代码 #include <bits/stdc++.h> #define in 阅读全文
posted @ 2024-10-25 11:19 zla_2012 阅读(22) 评论(0) 推荐(0)
摘要: 涉及知识点:图的遍历。 我们观察样例可以发现,染色之后的图是一颗树,而且还是 dfs 树。 题目要求所以路径上的颜色都是交替的,所以直接交替染色即可。 注意:建图的时候需要记录当前边的编号。 代码 #include <bits/stdc++.h> #define int long long #def 阅读全文
posted @ 2024-10-25 11:19 zla_2012 阅读(17) 评论(0) 推荐(0)
摘要: 树链剖分 重链剖分 【问题引入】 问题描述 给定一颗有 \(n\) 个节点、带边权的树,现在有对树进行 \(m\) 个操作,操作有 \(2\) 类: 将节点 \(a\) 到节点 \(b\) 路径上所有边权的值都改为 \(c\); 询问节点 \(a\) 到节点 \(b\) 路径上的最大边权值。 请你写 阅读全文
posted @ 2024-10-25 11:13 zla_2012 阅读(32) 评论(0) 推荐(1)
摘要: 涉及知识点:异或,字符串处理。 解题思路 ‌异或是一种二进制运算,用于比较两个数字的差异。 当两个输入不同时,异或运算的结果为1;当两个输入相同时,结果为0。 现在就可以切掉本题了。 设两个字符串分别为 \(a\),\(b\)。 如果 \(a\) 和 \(b\) 完全相同,输出 Yes。 如果 \( 阅读全文
posted @ 2024-10-25 11:06 zla_2012 阅读(24) 评论(0) 推荐(0)
摘要: 涉及知识点:枚举,STL。 题目大意 给你一个序列,让你选出一些元素,使其构成 fibonacccccci 数列,求数列的最大长度。 解题思路 定义一个桶,\(mp_i\) 代表 \(i\) 这个数在输入序列当中出现的次数。 由于 \(n \le 1000\),所以可以直接暴力枚举 fibonacc 阅读全文
posted @ 2024-10-25 11:06 zla_2012 阅读(12) 评论(0) 推荐(0)
摘要: 题目大意 题目会先给你一个 \(n\) 表示未知数的数量,然后你可以通过输出 ? x y 来询问第 \(x\) 个未知数与第 \(y\) 个未知数的和。最后输出每个未知数的值。 解题思路 对于前 \(3\) 个数,可以利用小学知识直接求出来。 方程为: \[\begin{cases} a_1 + a 阅读全文
posted @ 2024-10-25 11:05 zla_2012 阅读(24) 评论(0) 推荐(0)
摘要: 题目大意 题面写得很清楚,我就不再赘述了。 解题思路 涉及知识点:字符串,构造。 由于所有相邻的 \(0\) 合并完会变成一个 \(0\),所以先贪心地把所有挨在一起的 \(0\) 合并起来,放在一个新的字符串里。 而且题目需要你判断是否最终是否能合并成一个 \(1\),所以 \(1\) 是不需要想 阅读全文
posted @ 2024-10-25 11:05 zla_2012 阅读(15) 评论(0) 推荐(0)
摘要: 题目大意: 给你 \(n\) 条线段,让你删除掉其中的一些线段,使得剩余的线段是偶数且可以两两配对且每组不相交。 解题思路: 正难则反,计算选择多少条可以满足要求。 只有相交的两条线段才可能成为一组,所以枚举两条线段,如果它们相交,直接合并起来。 题目还要求每组线段不相交,所以直接计算合并后的线段最 阅读全文
posted @ 2024-10-25 11:03 zla_2012 阅读(17) 评论(0) 推荐(0)
摘要: 题目大意 给你一张地图,机器人在左上角,目标在右下角,地图中有一些石头,每一个单位时间石头向上移动一格。机器人可以往上、下、右三个方向移动,求机器人走到终点的最短时间。 思路 石头肯定不能像题目描述一样动的。 可以考虑让石头不动,机器人相对石头运动。 设机器人当前的位置是 \((i, j)\)。 上 阅读全文
posted @ 2024-10-25 11:03 zla_2012 阅读(33) 评论(0) 推荐(0)
摘要: 题目大意 给你四个正方形的边长,让你求组成大正方形的边长的最小值。 解题思路 假设最总答案是 \(x + y\),如果还存在 \(a + b > x + y\) 则一定有两个正方形重叠起来,与答案矛盾,所以答案为: \[\max\{a + b, a + c, a + d, b + c, b + d, 阅读全文
posted @ 2024-10-25 11:03 zla_2012 阅读(16) 评论(0) 推荐(0)