题解+建议降黄
2025-02-23 18:54:33
发布于:北京
3阅读
0回复
0点赞
货舱选址做过吧。
取中位数就好了。
大胆一点,直接把货舱选址拓展到二维上用就过了。
代码也是非常好写。
思维EZ+代码EZ
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
#define db double
struct node{
db x,y;
};
bool cmpa(const node &a,const node &b){
return a.x<b.x;
}
bool cmpb(const node &a,const node &b){
return a.y<b.y;
}
int n,cnt;
db x,y,ansx,ansy,ans;
int e[5005];
node a[50005];
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>e[i];
for(int i=1;i<=n;i++){
cin>>x>>y;
for(int j=1;j<=e[i];j++) a[++cnt]={x,y};
}
sort(a+1,a+1+cnt,cmpa);
ansx=a[1+cnt>>1].x;
sort(a+1,a+1+cnt,cmpb);
ansy=a[1+cnt>>1].y;
for(int i=1;i<=cnt;i++) ans+=abs(a[i].x-ansx)+abs(a[i].y-ansy);
printf("%.5lf",ans);
return 0;
}
时间复杂度:能过。
这里空空如也
有帮助,赞一个