P1325 雷达安装 (贪心)
#include<iostream> #include<algorithm> #include<cmath> using namespace std; struct node { double l; double r; }a[1010]; bool cmp(node x,node y) { return x.r<y.r; } int x[1010],y[1010]; int ans=0; int temp; int main() { int n,d; cin>>n>>d; for(int i=1;i<=n;i++) { cin>>x[i]>>y[i]; } for(int i=1;i<=n;i++) { a[i].l=x[i]-sqrt(d*d-y[i]*y[i]); a[i].r=x[i]+sqrt(d*d-y[i]*y[i]); } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++) { if(i==1) { temp=a[i].r; ans++; } else { if(temp>=a[i].l) { continue; } ans++; temp=a[i].r; } } cout<<ans; return 0; }
这个整体和活动选择很像。。。