摘要: T1 令 \(dp_{i,j}\) 表示卖出区间 \([i,j]\) 能获得的最大价值。 显然答案为 \(dp_{1,n}\)。 因为只能卖 \(i\) / \(j\),所以有转移: \[dp_{i,j}=\max(dp_{i+1,j}+v_i \times (n-len+1),dp_{i,j-1} 阅读全文
posted @ 2024-03-09 22:01 _XOFqwq 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解模拟、枚举算法。 例题 T1 简单模拟题。 利用 scanf/cin 以 int 形式读入分和秒,并令秒循环累加,逢 \(60\) 归 \(0\) 并向分进 \(1\),分则是逢 \(24\) 归 \(0\)。 在循环的过程中若分秒合起来是回文数字,则退出循环,按照题目格式输出当前时间。 阅读全文
posted @ 2024-03-09 12:50 _XOFqwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解 vector、map 两个 STL 容器。 知识点: 首先,引入两种数组的区别: 静态数组,指提前声明需要多少内存的数组,是连续的; 而动态数组则是在插入元素时临时指定存储空间,不要求连续。 STL vector 是一个动态数组,下标默认从 \(0\) 开始。它支持的操作如下: 定义: 阅读全文
posted @ 2024-03-09 12:49 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解二分查找。 知识点 二分查找: 思想:分治。 使用场景:在一个有序序列中,反复查找不同目标。 时间复杂度:\(O(n \log n)\)。 实现: 对数列排序; 确定二分边界(通常为 L=最小下标-1,R=最大下标+1); 伪代码: int L=左边界-1,R=右边界+1; while( 阅读全文
posted @ 2024-03-09 12:49 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 因为 \(n\) 个三角形有重叠部分,所以我们可以倒序处理每个三角形,并对其进行分类讨论: 若当前三角形编号为 \(n\),则直接将总面积加上 \(\dfrac{d \times h}{2}\)。 否则,再次分出两种情况: 若当前三角形的 \(y_i + h > y_{i+1}\)(即编号为 \(i 阅读全文
posted @ 2024-03-09 12:49 _XOFqwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解二分答案。 知识点 使用场景: 最小值最大化,或最大值最小化。 在限制条件下找最值。 与二分查找的区别: L、R 均为答案,而非下标。 输出: 最大化输出 L,反之输出 R。 例题 T1 二分 \(M\) 的值,边界为 \(L=-1,R=\max{\{a_i\}}\)。每次枚举到一个 \ 阅读全文
posted @ 2024-03-09 12:31 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解二分答案的进阶。 例题 T1 二分需要的秒数,在 check 函数中对于每件衣服,若其在 \(x\) 秒内无法自然晒干,则使用烘干机,并令 \(sum\) 加上使用烘干机的秒数,最后判断 \(sum\) 是否 \(\le x\) 即可。 \(Trick\):二分边界需要按数据范围尽可能开 阅读全文
posted @ 2024-03-09 12:31 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 模拟赛。 寄。 T1 对于每次询问,二分查找数组中对应值的原下标即可,因此需要用结构体存储原始数据和原始下标。这当然是比较麻烦的做法。 另一种做法则是开一个 map 替代桶来存储数组中每个元素的下标,对于每个询问输出即可。 另外值得注意的是,本题默认询问之间相互独立。 时间复杂度均为 \(O(q \ 阅读全文
posted @ 2024-03-09 12:30 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解深度优先搜索 \(\text{DFS}\)。 知识点 种类: 全排列。可以想象为填格子。 去重全排列,即组合。 时间复杂度均为 \(O(n!)\)。 \(\text{DFS}\) 题的特征: 求方案总数 / 最值。 数据范围极小(一般 \(n \le 20\))。 无法直接暴力枚举(因为 阅读全文
posted @ 2024-03-09 12:30 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 由于题目具有十分明显的单调性(若 \(x\) 局能满足要求,则 \(>x\) 局一定能满足;若 \(x\) 局无法满足要求,则 \(<x\) 局也无法满足),因此我们考虑进行二分答案。 二分所需要的局数 \(x\),设所有人想玩的总局数为 \(S\),由题意可得 \(S=\sum^{n}_{i=1} 阅读全文
posted @ 2024-03-09 12:30 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解的与上期相同。 例题 T1 上课的时候调这个题感觉要吐了 \(qwq\)。。。 首先读入 \(n\) 行字符串,可以采取忽略中间无关单词的方式来直接读取 \(X\) 和 \(Y\)。 将所有名字存入 \(a\) 数组,对 \(a\) 数组按字典序排序后就可以开始 \(\text{DFS} 阅读全文
posted @ 2024-03-09 12:29 _XOFqwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 模拟赛掉大分(悲 T1 板子,不讲。 T2 首先很明显这题是个去重全排列。 和模板的区别就是加了一个 \(sum\) 参数记录目前已经放了几个苹果。 当 \(x=n+1\) 时若 \(sum=m\),则更新答案。 同时加入一个剪枝:若在搜索过程中 \(sum>m\),则直接 return 结束搜索。 阅读全文
posted @ 2024-03-09 12:29 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 分别对三种情况进行分类讨论。 第一种情况: 显然,若 \(\sum^{n}_{i=1} a_i \bmod n \neq 0\),则输出 \(\texttt{Unrecoverable configuration.}\); 同时,我们遍历 \(a_{1 \sim n}\),若存在两个以上的 \(a_ 阅读全文
posted @ 2024-03-09 12:28 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解进阶 \(\text{DFS}\)。 知识点 \(\text{DFS}\) 求解连通块问题: 定义:若一个点集中的所有点都能互达,且与集合外的点无法互达,则称此点集为一个连通块。 考查方式:求连通块数量 / 大小 / 周长。 例题 T1 在 \(\text{DFS}\) 函数中传入参数 阅读全文
posted @ 2024-03-09 12:28 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解与上期相同内容(雾。 例题 T1 在整个矩阵外加一圈 \(0\),使得包围圈外的 \(0\) 形成一整个连通块。求出这个连通块并标记为 \(1\),然后输出即可。 #include<bits/stdc++.h> using namespace std; int n; int dx[]={ 阅读全文
posted @ 2024-03-09 12:27 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解一维前缀和技巧。 知识点 我们令 \(a_i\) 表示原数组的第 \(i\) 个元素,则 \(sum_i\) 表示 \(a_i\) 前 \(i\) 个元素之和,即: \[sum_i=\sum^{i}_{j=1} a_j \]我们知道,\(a\) 数组前 \(i\) 个元素的和 \(=\) 阅读全文
posted @ 2024-03-09 12:27 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解二维前缀和。 知识点 我们令 \(a_{i,j}\) 表示原数组,则 \(sum_{i,j}\) 为 \(a\) 的二维前缀和数组。 根据容斥原理,得到递推式: \[sum_{i,j}=sum_{i-1,j}+sum_{i,j-1}-sum_{i-1,j-1}+a_{i,j} \] 二维 阅读全文
posted @ 2024-03-09 12:27 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解差分技巧。 知识点 我们令原数组为 \(a_i\),则当且仅当 \(d_i=a_i-a_{i-1}\) 时,我们称 \(d_i\) 是 \(a_i\) 的差分数组。 特别的,\(d_1=0\),\(d_{n+1}=-n\)。 差分数组 \(d_i\) 有以下三个性质: \(d_i\) 的 阅读全文
posted @ 2024-03-09 12:26 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 模拟赛爆炸祭。 T1 把所有连通块依次求出,若某个连通块的数量已经出现过,则说明它与以前的连通块属于同一星系,直接将星系大小加上连通块大小并取 \(\max\);否则将星系数量 \(+1\)。 #include<bits/stdc++.h> #define int long long using n 阅读全文
posted @ 2024-03-09 12:26 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 题意 给定 \(2\) 组字符串,每组 \(n\) 个,每个字符串包含 \(m\) 个字符。 我们称一个三元组 \((i,j,k)\) 是合法的,当且仅当第二组的每个字符串中下标为 \((i,j,k)\) 的字符拼成的字符串与第一组的每个字符串中下标为 \((i,j,k)\) 的字符拼成的字符串均不 阅读全文
posted @ 2024-03-09 12:26 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑