第一次线上比赛突发情况真多 先是机房网炸了 然后编译器炸了 最后只有一个小时来写T1 想了一想 码了个模拟就交了 测试先是A了 然而我并不知道这就是测试数据 于是查就交了 然后测完发现Wa了 最后发现是判断错了 if(ansa<ansb)完全没有意义 所以说应该是 if(ansa-pb<ansb-pa) 只有在收益小的时候在尝试去增加ansa or ansb 然后改了一下就A了 郁闷.......
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <iomanip>
using namespace std;
int n,pa=1,pb=1;
double a[100001],b[100001],ans=0,ansa,ansb;
bool cmp(double aa,double bb){return aa>bb;}
int main()
{
cin>>n; for (int i=1;i<=n;i++) {cin>>a[i]; a[i]--;}
for (int i=1;i<=n;i++) {cin>>b[i]; b[i]--;}
sort(a+1,a+n+1,cmp); sort(b+1,b+n+1,cmp);
ansa=a[1]; ansb=b[1]; ans=max(ans,min(ansa-pb,ansb-pa));
while (pa<n && pb<n)
{
if (ansa-pb<ansb-pa)
{
pa++;
ansa+=a[pa];
ans=max(ans,min(ansb-pa,ansa-pb));
}
else
{
pb++;
ansb+=b[pb];
ans=max(ans,min(ansa-pb,ansb-pa));
}
}
printf("%.4f",ans);
return 0;
}