Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
30335 LYLAKIOIAKIOI 【S】T3 C++ 解答错误 20 1 MS 280 KB 1299 2024-06-23 18:33:26

Tests(4/8):


#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(){ //freopen("dating.in","r",stdin); //freopen("dating.out","w",stdout); int V=0; 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; }


测评信息: