Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
137844 吴松韬 空间定位2 C++ 解答错误 0 0 MS 256 KB 1672 2024-03-12 16:43:13

Tests(0/4):


#include<bits/stdc++.h> using namespace std; int m,n,w,h; int t; struct Location{ double r; double x; double left; double right; double length; int fin; }l[10005]; int find(double R,double L,int t,double W){ double maxl=0,maxr=0; int id; if(t==n and !(R>=W and L<=0)){ return 0; } if(R>=W and L<=0){ return t; }else if(R>=W){ for(int i=1;i<=n;i++){ if(l[i].fin){ double lc=L-l[i].left; if(lc>maxl){ id=i; maxl=lc; } } } t++; L=L-maxl; l[id].fin=0; find(R,L,t,W); }else if(L<=0){ for(int i=1;i<=n;i++){ if(l[i].fin){ double rc=l[i].right-R; if(rc>maxr){ id=i; maxr=rc; } } } t++; R=R+maxr; l[id].fin=0; find(R,L,t,W); }else{ for(int i=1;i<=n;i++){ if(l[i].fin){ double rc=l[i].right-R; double lc=L-l[i].left; if(lc+rc>maxr+maxl){ id=i; maxl=lc; maxr=rc; } } } t++; R=R+maxr; L=L+maxl; l[id].fin=0; find(R,L,t,W); } } double G(double a,int b){ double c=b; c/=2; if(a<=c){ return 0; }else{ return sqrt(pow(a,2)-pow(c,2)); } } bool wdnmd(Location x,Location y){ if(x.length>y.length){ return true; }else{ return false; } } int main(){ cin>>m; for(int i=1;i<=m;i++){ cin>>n>>w>>h; for(int j=1;j<=n;j++){ cin>>l[j].x>>l[j].r; l[j].left=l[j].x-G(l[j].r,h); l[j].right=l[j].x+G(l[j].r,h); l[j].length=2*G(l[j].r,h); l[j].fin=1; } t=0; sort(l+1,l+1+n,wdnmd); l[i].fin=0; cout<<find(l[i].left,l[i].right,t,w)<<endl; // for(int k=1;k<=n;k++){ // cout<<l[k].left<<endl; // } } }


测评信息: