合集-C++题解
洛谷P1028 [NOIP 2001 普及组] 数的计算 题解
摘要:P1028 [NOIP 2001 普及组] 数的计算 题目描述 给出正整数 \(n\),要求按如下方式构造数列: 只有一个数 \(n\) 的数列是一个合法的数列。 在一个合法的数列的末尾加入一个正整数,但是这个正整数不能超过该数列最后一项的一半,可以得到一个新的合法数列。 请你求出,一共有多少个合法
洛谷P1464 Function 题解
摘要:Function 题目描述 对于一个递归函数 \(w(a,b,c)\) 如果 \(a \le 0\) 或 \(b \le 0\) 或 \(c \le 0\) 就返回值 \(1\)。 如果 \(a>20\) 或 \(b>20\) 或 \(c>20\) 就返回 \(w(20,20,20)\) 如果 \(
洛谷P2440 木材加工 题解
摘要:木材加工 题目描述 木材厂有 \(n\) 根原木,现在想把这些木头切割成 \(k\) 段长度均为 \(l\) 的小段木头(木头有可能有剩余)。 当然,我们希望得到的小段木头越长越好,请求出 \(l\) 的最大值。 木头长度的单位是 \(\text{cm}\),原木的长度都是正整数,我们要求切割得到的
洛谷P2678 [NOIP 2015 提高组] 跳石头 题解
摘要:[NOIP 2015 提高组] 跳石头 题目描述 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 \(N\) 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步
洛谷P1314 [NOIP 2011 提高组] 聪明的质监员 题解
摘要:洛谷P1314 [NOIP 2011 提高组] 聪明的质监员 题解 题目 题目传送门。 题解 思路 这题可以使用前缀和优化+二分答案法求解。 首先读入\(m\)组区间,左右端点分别存放到数组\(left_i\)和\(right_i\)中。二分查找\(W\),左边界\(l\)和右边界\(r\)初始值分
洛谷P1083 [NOIP 2012 提高组] 借教室 题解
摘要:P1083 [NOIP 2012 提高组] 借教室 题解 题目 题目传送门。 题解 思路 这一题可以使用差分优化+二分答案法做。 二分查找一个值\(x\),代表前\(x\)个订单是否满足条件,每次在循环中调用一个函数\(check(int\ x)\),用于检测前\(x\)个订单是否可以满足。 \(c
洛谷P1902 刺杀大使 题解
摘要:P1902 刺杀大使 题解 题目 题目传送门。 题解 思路 这一题我们可以使用二分答案+BFS的解法。 我们二分整个部队受到的伤害最小值\(x\),每次使用\(check(int\ x)\)函数用于检验是否可以在最小值为\(x\)的情况下到达第\(n\)行。 随后就是BFS的板子了,从(1,1)开始
洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树 题解
摘要:洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树 题解 题目传送门。 思路 我们可以使用二分答案法。 二分查找砍树的高度\(H\),每次使用\(check(long\ long\ x)\)函数用于检测在\(x\)米高度时是否可以砍到\(m\)米以上的木头。 \(check\)
洛谷P2280 [HNOI2003] 激光炸弹 题解
摘要:P2280 [HNOI2003] 激光炸弹 题解 题目 题目传送门。 题解 思路 这题是一道标准的二维前缀和模板题。 用\(s_{i,j}\)表示数组\(a\)从\(a_{1,1}\)到\(a_{i,j}\)的矩形内所有数值的和。我们在读入\(x,y,v\)后存起来,随后处理数据到前缀和数组内。 然
洛谷P8218 【深进1.例1】求区间和 题解
摘要:P8218 【深进1.例1】求区间和 题解 题目 题目传送门。 题解 思路 这题是一道一维前缀和模板题,使用数组\(s\)作为前缀和数组,\(s_i\)表示数值数组\(a\)中\(a_1\)到\(a_i\)的所有数值的和。求数组\(a\)中第\(l\)项到第\(r\)项的区间和就可以用\(s_r-s
洛谷 P1719 最大加权矩形 题解
摘要:P1719 最大加权矩形 题解 题目 题目传送门。 题解 思路 这题是一道二维前缀和的经典题目(可以说是模板题了)。 使用数组\(s\)表示数组\(a\)的二维前缀和,\(s_{i,j}\)表示\(a_{1,1}\)到\(a_{i,j}\)的和。需要求\(a_{i,j}\)到\(a_{k,l}\)的
洛谷 P2367 语文成绩 题解
摘要:P2367 语文成绩 题解 题目 题目传送门。 题解 思路 这题是一道经典的差分题。 使用一个数组\(c\)表示\(a\)的差分数组,\(c_i=a_i-a_{i-1}\)。当要修改第\(x\)到\(y\)同学的成绩时,只需要在\(c\)中的\(c_{x}+z\)和\(c_{y+1}-z\)就可以了
洛谷P1387 最大正方形 题解
摘要:P1387 最大正方形 题解 题目 题目传送门。 题解 思路 这题可以使用二维前缀和解。(不懂什么是二维前缀和或者不会基本公式的可以先去网上搜一下,这篇文章不会讲基础的哦) 使用\(s\)存\(a\)的二维前缀和,枚举正方形的左上端点,再在内部枚举一个\(p\)代表正方形长度,从\(mxl\)(即当
洛谷P1014[NOIP 1999 普及组] Cantor 表 题解
摘要:P1014[NOIP 1999 普及组] Cantor 表 题解 题目 题目传送门。 题解 思路 这是一道有意思的经典递推题目。 通过肉眼观察和枚举样例理解,不难发现,第\(x\)条“/”斜线上有\(x\)项元素,当\(x\mod2=0\)时,第\(i\)项\(a_i\)/\(b_i\)中的分子\(
洛谷P1563 [NOIP 2016 提高组] 玩具谜题 题解
摘要:洛谷P1563 [NOIP 2016 提高组] 玩具谜题 题解 题目传送门。 思路 这题就是一道简单的小模拟题,唯一需要注意的是序号-1为顺时针数,+1为逆时针数。 代码 #include <bits/stdc++.h> #define endl '\n' using namespace std;
洛谷P4924 [1007] 魔法少女小Scarlet 题解
摘要:洛谷P4924 [1007] 魔法少女小Scarlet 题解 题目传送门。 思路 通过模拟几次顺时针和逆时针的转换,不难发现每次顺时针旋转后,第\(i\)行的内容往往就与原来的第\(i\)列内容有关,如下表: 1 2 3 4 5 6 7 8 9 顺时针旋转后: 7 4 1 8 5 2 9 6 3 同
洛谷P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two 题解
摘要:洛谷P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two 题解 题目传送门。 思路 使用简单的模拟思想来模拟Farmer John和2头牛的移动过程,唯一的难点在于如何判断是否永远无法抓到2头牛。 这个难点可以使用一个简单的六维bool型数组来判断,若在某一时间点,2个
洛谷P1786 帮贡排序 题解
摘要:洛谷P1786 帮贡排序 题解 题目传送门。 思路 使用结构体定义类型 person 表示一个人,结构体内成员变量需包含名字、职位、帮贡、等级、输入顺序(即ID),用 2 次 sort 排序将 person 数组排序。 第一次排序:cmp1 cmp1 是第一次排序时的自定义比较函数(用法如:sort
洛谷P1990 覆盖墙壁 题解
摘要:洛谷P1990 覆盖墙壁 题解 题目传送门。 本题是一道非常好的递推题,请认真阅读,争取不看代码自己写出答案。 思路 我们可以设 \(f_i\) 为覆盖 \(2\times i\) 的所有覆盖方案。显然,边界条件 \(f_0\)(即没有列了,不用覆盖)和 \(f_1\)(只有 1 列,即一个 \(\
洛谷P1010 [NOIP 1998 普及组] 幂次方 题解
摘要:洛谷P1010 [NOIP 1998 普及组] 幂次方 题解 题目传送门。 思路 使用一个函数 \(dfs\) 作为递归函数,传入一个参数 \(n\) 表示要分解 2 次幂的数。如果 \(n=1\),直接输出 \(2(0)\);如果 \(n=2\),输出 \(2\)。随后输出 \(2\),使用一个变