Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
30334 | LYLAKIOIAKIOI | 【S】T3 | C++ | 解答错误 | 0 | 1 MS | 276 KB | 1217 | 2024-06-23 18:31:55 |
#include<bits/stdc++.h> using namespace std; int pc(int x){ int res=0; while(x){ if(x&1) res++; x>>=1; }return res; } int n,k; int x[1550],y[1550]; int ax[1550],ay[1550]; int dis(int xa,int xb,int ya,int yb){ return abs(xa-xb)+abs(ya-yb); } void slv1(){ int ans=1e9; for(int i=-10;i<=10;i++){ for(int j=-10;j<=10;j++){ for(int st=0;st<=(1<<n)-1;st++){ if(pc(st)<k) continue; int stt=st,temp=0; for(int id=1;id<=n;id++){ int op=stt&1; stt>>=1; if(op) temp+=dis(i,x[id],j,y[id]); }ans=min(ans,temp); } } }cout<<ans; }void slv2(){ for(int i=1;i<=n;i++) ax[i]=x[i],ay[i]=y[i]; sort(ax+1,ax+n+1);sort(ay+1,ay+n+1); int dx=ax[(1+n)/2],dy=ay[(1+n)/2]; int ans=0; for(int i=1;i<=n;i++){ ans+=dis(x[i],dx,y[i],dy); }cout<<ans; } int main(){ int V; cin>>n>>k; for(int i=1;i<=n;i++){ cin>>x[i]>>y[i]; V=max(max(abs(x[i]),abs(y[i])),V); } if(n<=7&&V<=10) slv1(); else if(n==k) slv2(); return 0; }