P2827 NOIP2016 提高组 蚯蚓
P2827 NOIP2016 提高组 蚯蚓 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
事实上,本题疑似所有题解和 lyd 蓝书上的证明均有误,本篇题解将给出一个严谨的单调性正确性证明。
一眼看上去容易想到
那么我们每秒可以不实际给每个元素
循环
- 取出集合最大值
,得到其真实值 ; - 切
为 和 两部分; - 将
, 放回集合( 是上面等效的结果, 是要把真实值改为偏移值放回集合)。
发现我们从大到小取
严格证明一下。命题:对于
证明:
注意这里的证明很容易出现伪证,具体请见 https://www.luogu.com.cn/paste/c4jthmhz,这也是几乎所有题解错误的地方,这里不展开了。
因此我们考虑维护 A,B,C 三个队列,初始时队列 A 从大(队头)到小(队尾)保存原始
考虑
我们假设某一秒,我们切开了一个数
对于第一条:
对于第二条:
因此在上述做法的基础上,配合一下
时间复杂度
#include <bits/stdc++.h>
inline int read() {
int x = 0;
bool f = true;
char ch = getchar();
for (; !isdigit(ch); ch = getchar())
if (ch == '-')
f = false;
for (; isdigit(ch); ch = getchar())
x = (x << 1) + (x << 3) + ch - '0';
return f ? x : (~(x - 1));
}
const int maxn = (int)1e5 + 5;
const int mininf = 0xc0c0c0c0;
int a[maxn];
std :: queue <int> qw[4];
typedef std :: pair <int, int> pii;
int main() {
int n = read(), m = read(), q = read(), u = read(), v = read(), t = read();
for (int i = 1; i <= n; ++i)
a[i] = read();
std :: sort(a + 1, a + n + 1, std :: greater <int> ());
for (int i = 1; i <= n; ++i)
qw[1].push(a[i]);
for (int i = 0; i < m; ++i) {
pii p = std :: max({std :: make_pair(qw[1].empty() ? mininf : qw[1].front(), 1),
std :: make_pair(qw[2].empty() ? mininf : qw[2].front(), 2),
std :: make_pair(qw[3].empty() ? mininf : qw[3].front(), 3)});
int x = p.first + q * i, j = p.second;
qw[j].pop();
int b = 1ll * x * u / v, c = x - b;
qw[2].push(b - q - q * i);
qw[3].push(c - q - q * i);
if (i % t == t - 1)
printf("%d ", x);
}
puts("");
for (int i = 1; i <= n + m; ++i) {
pii p = std :: max({std :: make_pair(qw[1].empty() ? mininf : qw[1].front(), 1),
std :: make_pair(qw[2].empty() ? mininf : qw[2].front(), 2),
std :: make_pair(qw[3].empty() ? mininf : qw[3].front(), 3)});
int x = p.first, j = p.second;
qw[j].pop();
if (i % t == 0)
printf("%d ", x + q * m);
}
puts("");
return 0;
}
如果觉得本篇题解写得好,请不要忘记点赞,让这篇具有正确性证明的题解减少对后人的误导,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】