2022牛客多校加赛
M Maimai DX 2077
题意:
有五种得分,满分是最高分的累积和。给定每种音符的出现次数和的分情况,如果没有miss每对于一种特殊音符可以加额外分,请输出最终得分 / 满分的百分比。
思路:
根据题意模拟即可
代码:
#include<bits/stdc++.h>
using namespace std;
long double a,b,c,d,e;
long double an,bn,a0,b0;
int main(){
for(int i=1;i<=4;i++){
scanf("%llf%llf%llf%llf%llf",&a,&b,&c,&d,&e);
if(i==1) {
an+=a+b+c*0.8+d*0.5;
a0+=(a+b+c+d+e)*1;
}
else if(i==2) {
an+=(a+b)*2+c*1.6+d;
a0+=(a+b+c+d+e)*2;
}
else if(i==3) {
an+=(a+b)*3+c*2.4+d*1.5;
a0+=(a+b+c+d+e)*3;
}
else if(i==4) {
an+=(a+b)*5+c*2.5+d*2;
bn+=a+0.5*b+0.4*c+0.3*d;
a0+=(a+b+c+d+e)*5;
b0+=(a+b+c+d+e)*1;
}
}
long double ans=an/a0+bn/b0*0.01;
ans=ans*100;
printf("%.10llf\n",ans);
}
E Everyone is bot
题意:
有n个人排成一列准备复读,对于第 i 个人如果他是所有人中第 j 个复读的,那么他就会获得a[i][j]瓶冰红茶,但是假如这个j恰好是倒数第p个复读的,他就不会获得冰红茶甚至要给出154瓶冰红茶。在每个人都最大化自己获得的冰红茶的前提下,计算出每个人最终会获得的冰红茶数量。
思路:
注意到恰好倒数第p个人,会得到负数的冰红茶,这是所有人所避免的。发现n-p之后的人都不能复读,此时考虑n-p个人的情况下的,倒数第p个人。
最终复读人数就是 个人,其余都不能复读