2019 NWERC
E Expeditious Cubing
题意:
最终成绩为五个成绩去掉最好和最差两个成绩剩下三个成绩的平均数。
输入四个成绩和赢得比赛需要的最小最终成绩,
求他第五次成绩最差是多少时能赢得比赛,或者无论如何都能赢得比赛,或不可能赢得比赛。
代码:
#include <bits/stdc++.h> using namespace std; #define sep 1e-5 int cmp(double k){ if(k>sep) return 1; else if(k<-sep) return -1; return 0; } int main() { double a[6]; for(int i=0;i<5;i++){ cin>>a[i]; } sort(a,a+4); double ans; ans=a[0]+a[1]+a[2]; if(cmp(3*a[4]-ans)==-1){ cout<<"impossible"<<endl; return 0; } ans=a[1]+a[2]+a[3]; if(cmp(3*a[4]-ans)>=0){ cout<<"infinite"<<endl; return 0; } ans=a[4]*3-a[1]-a[2]; printf("%.2lf",ans); return 0; }
I-Inverted Deck
题意:
给出n个数,若能交换其中的一段数序列使之能从小到大排列。
输出改变的左端点和右端点的下标值;否则输出-1;
思路:
代码:
#include <bits/stdc++.h> using namespace std; const int N = 1e6 +10; int a[N]; int b[N]; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; b[i]=a[i]; } sort(b+1,b+n+1); int flag = 0; int l=0; int r=0; for(int i=1;i<=n;i++){ if(a[i]!=b[i]){ l=i; break; } } for(int i=n;i>=1;i--) {if(a[i]!=b[i]){ r=i; break; } } for(int i=l;i<r;i++){ if(a[i]<a[i+1]) flag=1; } if(!l&&!r) cout<<"1 1"<<endl; else if(!flag&&l&&r){ cout<<l<<" "<<r<<endl; } else cout<<"impossible"<<endl; return 0; }
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/15548407.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步