| 比赛 |
?板子大赛 |
评测结果 |
WWWWWW |
| 题目名称 |
喷水装置 |
最终得分 |
0 |
| 用户昵称 |
小福鑫 |
运行时间 |
0.226 s |
| 代码语言 |
C++ |
内存使用 |
3.88 MiB |
| 提交时间 |
2026-01-17 13:01:43 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int T,n,f,ans;
double l,w,x,r,q,p;
struct e{
double l,r;
}a[1000001];
bool cmp(e x,e y){
if(x.l==y.l){
return x.r>y.r;
}
return x.l<y.l;
}
void init(){
f=1;
q=p=0;
ans=1;
}
int main() {
freopen("sprinkler.in","r",stdin);
freopen("sprinkler.out","w",stdout);
cin>>T;
while(T--){
init();
cin>>n>>l>>w;
w/=2.0;
for(int i=1;i<=n;i++){
cin>>x>>r;
if(r*r-w*w<0)continue;
a[i].l=x-sqrt(r*r-w*w);
a[i].r=x+sqrt(r*r-w*w);
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
if(a[i].l<=q){
p=max(p,a[i].r);
}
else{
ans++;
q=p;
if(a[i].l>q){
f=0;
}
p=max(p,a[i].r);
}
}
if(!f||p<l){
cout<<"-1"<<endl;
}
else{
cout<<ans<<endl;
}
}
return 0;
}