1 条题解
-
0
自动搬运
来自洛谷,原作者为

Unordered_OIer
**搬运于
2025-08-24 22:29:53,当前版本为作者最后更新于2021-03-20 18:50:48,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
P7441 题解
这道题的思维难度还是有的。
Description
给定两个整数 和一个正整数 ,生成了一个长度为 的序列 ,满足:
$$C_i=\begin{cases} x \times i & x \times i \leq K\\-K & \text{otherwise}\end{cases} $$$$E_i=\begin{cases} y \times i & y \times i \leq K\\-K & \text{otherwise}\end{cases} $$需要选择 对 满足 ,选择一次后所选择的 都不可再用,问 的最大值。
一共有 组这样的数据
Solution
观察一下数据范围,,所以单次询问算法复杂度肯定是 级别的,于是考虑数学。
首先这个 长度是假的,因为负数 负数一定不会 ,所以有效的 分别有 $\left\lfloor \dfrac{K}{x} \right\rfloor,\left\lfloor \dfrac{K}{y} \right\rfloor$ 个。
观察样例,基本猜出答案为 $\min(\left\lfloor \dfrac{K}{x} \right\rfloor,\left\lfloor \dfrac{K}{y} \right\rfloor)$,也就是说,对于有效长度更小的序列,每一个值都一定都能够找到另一个序列上的值使和 ,且这些值可以不重复。
下面给出一个略证,我们把序列 的长度设为 ,序列 的长度设为 :
- 当 :
因为 ,所以 。
则对于 来说,它要匹配到的 使得 ,则必须满足 ,为了使答案最优,需要尽量取 ,为了方便表达,我们令 ,此时 。
继续考虑 ,我们知道 ,,则 ,所以 也一定 。
所以对于所有的 ,都一定 。那么前 个 就全部可以匹配到相应的 。
此时会剩下一些 ,这些 都一定比之前的 大;此时还会剩下一些 ,这些 也都比之前的 大。所以在剩下的所有序列元素中,任意选择 匹配都会满足要求。
而又因为 ,所以剩下的 都一定可以匹配到 ,且匹配完还有剩余。
两部分相结合,则得到结论: 都能成功匹配。
-
当 ,与上述情况相同。
-
当 :
此时 ,则 ,即 ,其他情况类似,所以这时也是能全部成功匹配的。
综上,答案就是 $\min(\left\lfloor \dfrac{K}{x} \right\rfloor,\left\lfloor \dfrac{K}{y} \right\rfloor)$。
还有一个要注意的点是 时,一个序列全部为 ,此时如果 是无解,而 时序列的最后一项匹配另一个序列的任意一项即为唯一满足条件的解。 类似。
所以就可以写程序了,总复杂度 。
Code
ll T,x,y,k; int main(){ T=read(); while(T--){ x=read(),y=read(),k=read(); if(x==0&&y==0){ writeln(0); continue; } if(x==0)writeln(k%y==0?1:0); else if(y==0)writeln(k%x==0?1:0); else writeln(min(k/x,k/y)); } return 0; }后记
这道题好像劝退了不少人,但是我觉得没那么难(
最后还是祝洛谷月赛越来越好。
- 1
信息
- ID
- 6482
- 时间
- 500ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者