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

chenyuan3
https://www.luogu.com.cn/article/21efws0f搬运于
2025-08-24 23:12:18,当前版本为作者最后更新于2025-04-10 19:03:18,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
思路:设 为获得当前奖项的最后一名。
- 上界:显然是获得该奖项的最低分;
- 下界:分情况讨论:
观察样例发现当 时答案为 和 ;- 显然罚时不能是负数,所以当 时通过数只能变高为 ,罚时取最大,考虑所有题都在 分钟通过,且交满了 发提交,除了最后一发通过以外,其它都计算罚时。故最大的罚时为 $299(x_{i+1}+1)+[9000−(x_{i+1}+1)]×20=180000+279(x_{i+1}+1)$。
代码:(AC 记录)
#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll maxn = 1e5 + 10; ll a, b, c, d, p[maxn], t[maxn]; void work(ll n) // 用于输出 n 为这一奖项的最后一名的上界与下界 { cout << p[n] << ' ' << t[n] << ' '; if (t[n + 1] > 0) { cout << p[n + 1] << ' ' << t[n + 1] - 1 << endl; } else { cout << p[n + 1] + 1 << ' ' << 180000 + (p[n + 1] + 1) * 279 << endl; } } void solve() { cin >> a >> b >> c >> d; for (ll i = 1; i <= a + b + c + d; i++) { cin >> p[i] >> t[i]; } work(a); work(a + b); work(a + b + c); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); // ll t; cin >> t; while (t--) solve(); return 0; }
- 1
信息
- ID
- 11790
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者