第一次线上正式比赛突发情况真多
先是机房网炸了
然后编译器炸了
最后只有一个小时来写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;
}