NOIP20240816
NOIP20240816
T1 解方程
-
题意:给定非负整数 \(n\),需要找到两个正整数 \(x\) 和 \(y\),使得 \(x^2 - y^2 = n\)。。
-
题解:由题可知 \((x+y)(x−y)=n\),可以得出:\(x+y\) 与 \(x−y\) 奇偶性相同。
于是,可以将 \(n\) 的奇偶性进行划分:
-
\(n\) 为奇数,
当 \((x+y),(x−y)\) 各为 \(1,n\) 时成立。
-
\(n\) 为偶数,\(x=n\div2\),
若 \(x\) 为奇数为
No
(无法划分成奇偶性相同的两块);若 \(x\) 为偶数则为
Yes
。
注意:当 \(n=0,1,4\) 时需要特判!
T2 毕业相册
- 题意:将潘奕帆分组,使得每组的潘奕帆数量不超过三个,并且每组都符合以下规则:
- 如果组内有两个潘奕帆,两个潘奕帆之间的高度差不得超过 \(20\) cm。
- 如果组内有三个潘奕帆,最高和最矮的高度差不得超过 \(10\) cm。
- 目标是将所有潘奕帆分组,使得组数尽可能少。
- 题解:简单的
dp
- 代码
T3 DQY 的礼物
- 题意:给定四根正整数长度的魔法棍 \(a,b,c,d\),可以将它们拆分成若干根长度相等的棍子,问能组成的最大矩形的长宽分别是多少?如果有多个可能的答案,输出其中一个即可。
- 题解:分为五种情况讨论
- 通过打断一根棍子获得所有四个侧面。
- 每一面都从一根棍子获得。
- 从一根棍子获得两个侧面,从第二根棍子获得两个侧面。
- 从一根棍子获得三面,从第二根棍子获得一面。
- 一根棍子可得到两个侧面,另外两个棍子可得到另外两个侧面。
- 使用
__int128
。
- 代码
T4 DQY 的探险
- 题意:
- 有一个大小为 \(n \times m\) 的矩阵,每个格子上有一个能力值 \(a_{i,j}(1 \leq a_{i,j} \leq 10^9)\)。
- 你从左上角 \((1,1)\) 出发,只能往下或往右移动,最终到达右下角 \((n,m)\),路径上的能力值会累加。
- 对手可以选择一个除左上角和右下角外的任意格子,将其封锁(即该格子不能经过)。
- 你的目标是在对手采取最优策略封锁格子后,找到一条路径,使得累加的能力值最大化。
- 题解:预处理出从左上到右下的,在预处理出右下到左上的 ,枚举每一条左斜线,去掉最大的点,选择第二大的点,统计答案即可。
- 代码
T5 hby 的毁灭攻击
-
题意:给定一个 $ r \times c $ 的矩阵,矩阵中的某个格子最初被召唤了潘奕帆(初始位置为 \((x, y)\)),每秒钟潘奕帆会向其相邻的格子扩散。求整个矩阵被潘奕帆全部充满所需要的时间。
-
不会,思路是二分加线段树加扫描线。