thesadbee @ 2024-03-27 17:55:31
我在本地跑样例是正确的,也全部开了long long,请问为什么会全WA啊 求助各位大牛
#include <bits/stdc++.h>
using namespace std;
long long sch[100005];
long long stu[100005];
long long a,b,r,mid,sum;
long long l=0;
long long wit(long long i,long long r){
long long p=abs(sch[i]-stu[r]);
return p;
}
long long chag(long long i){
r=a-1;
while(l<r){
mid=(l+r)/2;
if(wit(l,i)>wit(r,i)){
l=mid+1;
}
else{
r=mid;
}
}
return l;
}
int main(){
scanf("%d %d",&a,&b);
for(long long i=0;i<a;i++){
scanf("%d",&sch[i]);
}
for(long long i=0;i<b;i++){
scanf("%d",&stu[i]);
}
sort(sch,sch+a);
sort(stu,stu+b);
for(long long i=0;i<b;i++){
long long t=chag(i);
sum+=wit(t,i);
}
printf("%d",sum);
}
by thesadbee @ 2024-03-27 22:35:18
如果有相同经历的同学可以考虑把手写二分换成STL函数,手写这种高精度的工作实在是不适合本蒟蒻
本帖结,如果有人以后会涉足到这里的话麻烦留言教我一下怎么能把灰名变成白的,灰名蒟蒻下载不了数据
#include <bits/stdc++.h>
using namespace std;
long long sch[100005];
long long stu[100005];
long long a,b,r,sum;
long long wit(long long i,long long r){
if(i==0){
long long p=abs(sch[i]-stu[r]);
return (p);
}
long long p=abs(sch[i]-stu[r]);
long long q=abs(sch[i-1]-stu[r]);
return min(p,q);
}
long long chag(long long i){
r=lower_bound(sch,sch+a-1,stu[i])-sch;
return r;
}
int main(){
cin>>a>>b;
for(long long i=0;i<a;i++){
cin>>sch[i];
}
for(long long i=0;i<b;i++){
cin>>stu[i];
}
sort(sch,sch+a);
sort(stu,stu+b);
for(long long i=0;i<b;i++){
long long t=chag(i);
sum+=wit(t,i);
}
cout<<sum;
}
by YQJ1024 @ 2024-03-30 09:33:31
不是哪来的白名
by Retana @ 2024-04-25 16:42:11
你不是已经蓝名了吗,灰名就走到这题tql