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

zyn_
而最终,一切往事都被追忆。搬运于
2025-08-24 22:51:21,当前版本为作者最后更新于2023-10-14 20:07:04,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
P9740 「KDOI-06-J」ION 比赛
题目大意
比赛有 题,第 题满分 ,共有 个测试点,你已经做出 个测试点。这次比赛的 Au 线是 分。你决定死磕一道题目,问对于第 题,至少再做出多少个测试点,你才能达到 Au 线。
如果现在的分数已经达到 Au 线,输出
Already Au.。如果在一道题上,再怎么死磕都不可能达到 Au 线,输出NaN。。
题目分析
如此小的数据范围,直接模拟即可,绝不会 TLE。
首先计算出已得到的分数 ,如果 直接
Already Au.。否则,还需得 分。
对第 题,从 到 枚举多做出的测试点的数量,发现达到 Au 线就输出。如果直到 AC 第 题,都不能达到 Au 线,那么第 行就输出
NaN。然后就做完了。
AC code:
#include<bits/stdc++.h> using namespace std; #define N 10 int n,a[N],b[N],t,sum,p,cnt; int main(){ scanf("%d",&n); for(int i=1;i<=n;++i)scanf("%d%d",&a[i],&b[i]),sum+=(100/a[i]*b[i]); scanf("%d",&t);if(sum>=t){puts("Already Au.");return 0;} for(int i=1;i<=n;++i){ p=sum;cnt=0; while(p<t&&b[i]+cnt<=a[i])++cnt,p+=(100/a[i]); //每多过一个点,增加100/a[i]分。cnt是多过的测试点数量 if(b[i]+cnt==a[i]+1)puts("NaN"); //上面的循环在b[i]+cnt>a[i]时退出 //说明在b[i]+cnt==a[i],即AC第i题时,仍未达到Au线 else printf("%d\n",cnt); } return 0; }彩蛋
比赛开始一分钟时,我瞄着本题的样例看。突然感觉……
没错,样例 就是小粉兔在 NOI2020 中的成绩!(所以这题叫 ION 比赛啊)
还有,样例 中的 Au 线 ,就是 NOI2023 的 Au 线。
,自然是对应 NOI 比赛中的笔试,第一天三题,和第二天三题。
后记
我看到有一些选手在算「还需多少测试点才能达到 Au 线」时使用数学方法,结果不慎写错,挂分。
在数据范围小时,使用简单的模拟,避免挂分,才是最重要的。
- 1
信息
- ID
- 9084
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者