CF99B Help Chef Gerasim 题解
分别对三种情况进行分类讨论。
第一种情况:
-
显然,若 \(\sum^{n}_{i=1} a_i \bmod n \neq 0\),则输出 \(\texttt{Unrecoverable configuration.}\);
-
同时,我们遍历 \(a_{1 \sim n}\),若存在两个以上的 \(a_i\) 满足 \(a_i \neq \sum^{n}_{i=1} a_i \div n\),则也输出 \(\texttt{Unrecoverable configuration.}\)。
第二种情况:
- 若 \(a_{1 \sim n}\) 满足 \(a_1=a_2=...=a_n\),则输出 \(\texttt{Exemplary pages.}\)。
第三种情况:
- 找到 \(\neq \sum^{n}_{i=1} a_i \div n\) 两个数的编号 \(x,y\),记 \(x\) 应该给予 \(y\) 的毫升数 \(a_x-\sum^{n}_{i=1} a_i \div n\) 为 \(m\)(需要保证 \(x>y\)),则输出 \(m \texttt{\ ml. from cup \#} \ y \texttt{\ to cup \#} \ x \texttt{.}\) 即可。注意输出格式。
#include<bits/stdc++.h> using namespace std; int n,a[1031]; int x,y,sum; int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i],sum+=a[i]; //读入 ai 并计算 sum if(sum%n!=0){ cout<<"Unrecoverable configuration."; return 0; } //第一种情况 for(int i=1;i<=n;i++){ if(a[i]!=sum/n&&y){ cout<<"Unrecoverable configuration."; return 0; } //还是第一种情况 else if(a[i]!=sum/n){ y=x,x=i; } //从题解中学来的赋值方法 } if(a[x]<a[y]) swap(x,y); //需要保证 x > y if(!x&&!y){ cout<<"Exemplary pages."; return 0; } //第二种情况 cout<<a[x]-sum/n<<" ml. from cup #"<<y<<" to cup #"<<x<<"."; //第三种情况 return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】