社区讨论
求本题贪心做法 hack
AT_abc327_e[ABC327E] Maximize Rating参与者 3已保存回复 11
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 11 条
- 当前快照
- 1 份
- 快照标识符
- @mdmhcwhn
- 此快照首次捕获于
- 2025/07/28 10:19 7 个月前
- 此快照最后确认于
- 2025/11/04 06:29 4 个月前
rt
枚举参加的比赛场次数,每次从剩余的 perf 中选取最靠前的最大值,并选择,并计算对应 rating。
感觉在 确定时,只需要最大化前面的式子即可。但为什么 WA 呢?
或者给出反例也可。
代码:
CPP#include<bits/stdc++.h>
using namespace std;
typedef long double var;
int n;
int s[5005];
var perf[5005];
var k;
var sumk;
var rating;
var marating=-114514;
int main(){
ios::sync_with_stdio(0);
cin>>n;
for(int i=1;i<=n;++i) cin>>s[i];
for(int i=1;i<=n;++i){
int maxp=0,maxj;
for(int j=1;j<=n;++j){
if(s[j]>maxp) maxp=s[j],maxj=j;
}
perf[maxj]=s[maxj],s[maxj]=0;
k=1,rating=0,sumk=0;
for(int j=n;j>=1;--j){
if(perf[j]){
rating+=perf[j]*k,sumk+=k;
k*=0.9;
}
}
rating=rating/sumk-1200./sqrtl(i);
marating=max(rating,marating);
}
cout<<fixed<<setprecision(16)<<marating<<endl;
return 0;
}
回复
共 11 条回复,欢迎继续交流。
正在加载回复...