06 2023 档案
摘要:题目描述 多米诺骨牌由上下 22 个方块组成,每个方块中有 1∼61∼6 个点。现有排成行的上方块中点数之和记为 S1,下方块中点数之和记为 S2,它们的差为 ∣S1−S2∣。如图,S1=6+1+1+1=9,S2=1+5+3+2=11,∣S1−S2∣=2。每个多米诺骨牌可以旋转180°,
阅读全文
摘要:P4141 消失之物 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 有些背包问题需要我们对背包问题有较深刻的理解,背包问题中的递推属于这一类,详细掌握了背包问题的状态转移过程才能做出来。 下面便是一道涉及状态转移过程逆推的题目,这道题的逆推主要体现在解题过程而非在答案中体现: 题
阅读全文
摘要:P2066 机器分配 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 有一类背包问题,它不仅让你求出最优解,还有求你输出选择方案(选择过程), 下面便是这样一道例题: 题目描述 总公司拥有高效设备 M 台,准备分给下属的 N 个分公司。各分公司若获得这些设备,可以为国家提供一定的盈
阅读全文
摘要:P1509 找啊找啊找GF - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 有一种背包问题,他不仅问你最大价值,还会问你最大价值的时候花费的时间最小是多少(当然,不一定是最小时间,这只是举个例子) 下面便是一道这样的例题: 题目描述 sqybi 现在看中了 n 个 MM,我们不妨把
阅读全文
摘要:P2946 [USACO09MAR] Cow Frisbee Team S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 老唐最近迷上了飞盘,约翰想和他一起玩,于是打算从他家的 N 头奶牛中选出一支队伍。 每只奶牛的能力为整数,第 i 头奶牛的能力为Ri 。飞盘队的队
阅读全文
摘要:01背包 #include<iostream> #include<set> #include<vector> #include<algorithm> #include<string> #include<cstring> #include<queue> #include<map> using name
阅读全文
摘要:这几道题对广搜的代码能力提升很会有帮助 P1126 机器人搬重物 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运物品。机器人的形状是一个直径1.61.6米的球。在试验阶段,机器人被用于在一个储藏室中搬运货物。储藏室是一个 N×M 的网格,有些格子为不可移动的障碍。机器人的中心总是在格点上,
阅读全文
摘要:素数筛有多种实现方法,以下是常见的几种素数筛选算法: 1. 埃拉托斯特尼筛法(埃氏筛法):从小到大遍历每个数,如果当前数为素数,则将其所有倍数标记为合数。这种方法适用于小范围的素数筛选。 2. 线性筛法:结合了埃氏筛法和欧拉筛法的优点,通过线性方式遍历筛选,只标记每个合数一次,同时能够记录素数。 3
阅读全文
摘要:dfs是时间复杂度很高的算法,如果题目多次询问而我们每次询问都进行一次完整的dfs大概率是要超时的。所以我们要记忆化搜索,做标记,这里就要有一个好做标记的方法了:这里我介绍一种按询问次数做标记的方法。 题目描述 有一个仅由数字 00 与 11 组成的n×n 格迷宫。若你位于一格 00 上,那么你可以
阅读全文
摘要:题目描述 博艾市将要举行一场汽车拉力比赛。 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N ≤500),每个单元格的海拔范围在0到10^9之间。 其中一些单元格被定义为路标。组织者希望给整个路线指定一个难度系数D,这样参赛选手从任一路标到达别的路标所经过的路径上相邻单元格的海拔高
阅读全文
摘要:欧几里得算法,又叫辗转相除法,我更愿意叫辗转相除法,因为这更能体现他的原理 求a和b的最大公因数 我们假设 a% b == c1; b% c1 == c2; c1 % c2 == c3; c2 % c3 == 0; 那么存在整数x1 c2 == x1 * c3; 则 c1 = x2 * c2 + c
阅读全文
摘要:题目描述 我们Aqours的成员共有N+1人,他们会列成一队。 他们的唱功以A[0]到A[N]表示,A[i](0≤i≤N)均给出。 学园都市的机器可以改变队列中连续多个成员的唱功值,并将其加上一个数Z,当然当Z是负数的时候就变成减去了。 我打算一共使用这个机器Q次,每次把第X到第Y号(1≤X,Y≤1
阅读全文
摘要:组合算法:二进制枚举 #include <iostream> #include <vector> // 二进制枚举函数 void binaryEnumeration(const std::vector<int>& set) { int n = set.size(); // 枚举集合的所有子集 for
阅读全文
摘要:快读 "快读"是一种优化输入操作的技巧,旨在提高输入效率。在C++中,通常使用scanf或cin进行输入,但对于大规模的输入数据,这些方法可能会导致运行时间过长。快读是一种替代方法,它使用getchar函数来逐字符读取输入,并将字符转换为对应的数字。 快读的基本原理是利用getchar函数逐字符读取
阅读全文