intabc @ 2024-06-30 15:06:27
如果你WA Subtask1 #1,请将程序中所有变量类型改long long。
by sz_zhangzhiyuan @ 2024-06-30 15:30:12
寻人启事:谁知道我朋友孙艺名和竺鳞暄的好友叫什么,我是张致远.如果谁看见了回答一下我,谢谢各位大佬
by cgxd @ 2024-07-01 15:40:46
long long 不够吧要unsigned long long才够吧(本人亲自试了一下)
by Kete @ 2024-07-03 13:55:18
#include<bits/stdc++.h>
using namespace std;
int n,m;
unsigned long long ans;
int a[1000000+11],b[1000000+11];
int main(){
cin>>n>>m;
for(int i=1; i<=n; i++)cin>>a[i];
for(int i=1; i<=m; i++)cin>>b[i];
sort(a+1,a+n+1);
for(int i=1; i<=m; i++){
int l=0,r=n+1;
while(l<r){
int mid=(l+r)/2;
if(a[mid]<=b[i])l=mid+1;
else r=mid;
}
if(b[i]<=a[1])ans+=a[1]-b[i];
else ans+=min(abs(a[l-1]-b[i]),abs(a[l]-b[i]));
}
cout<<ans;
return 0;
}
我就把第四行的int改成了unsigned long long 没想到Subtask1 #1还过了……
温馨提示:作者在没改以前:Subtask1 #1没过……
by Kete @ 2024-07-03 13:59:21
但……我只改了两个数组的类型
by Moya_Rao @ 2024-07-08 15:22:45
改了也没用啊 @intabc
你看我的代码:
#include<bits/stdc++.h>
using namespace std;
long long n,Q,a[100005],s,l,r,ans1,ans2;
unsigned long long sum;
int main(){
cin>>n>>Q;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+n+1);
while(Q--){
cin>>s;
l=1,r=n;
while(l<=r){
long long mid=(l+r)/2;
if(a[mid]>=s)ans1=mid,r=mid-1;
else l=mid+1;
}
l=1,r=n;
while(l<=r){
long long mid=(l+r)/2;
if(a[mid]<=s)ans2=mid,l=mid+1;
else r=mid-1;
}
sum+=min(abs(a[ans1]-s),abs(s-a[ans2]));
}
cout<<sum;
return 0;
}
测试点情况
WA 了最后一个点哟
求大佬帮我看看,到底哪里错了吧
by clxykx @ 2024-07-10 15:26:21
@Moya_Rao 你这个没考虑 n == 1 的情况 比如: n = 1, m =1, 5 1 结果该为 4 ,但是你输出的是 1