社区讨论

谜之RE

UVA10382UVA10382 Watering Grass参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mi7ur8cj
此快照首次捕获于
2025/11/21 03:56
4 个月前
此快照最后确认于
2025/11/21 03:56
4 个月前
查看原帖
RT,LOJ上AC了,Uva上却RE
评测链接
希望好心大佬能够帮我看看为何RE,本蒟蒻感激不尽
调到绝望QAQ
C
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std;
const double inf=1000000.0;
struct node{
    int x,r;
    inline bool operator < (const node &other)const{
        return r>other.r;
    }
}a[1000010];
struct point{
    double l,r;
    inline bool operator < (const point &other)const{
        return r==other.r?l<other.l:r<other.r;
    }
}b[1000010];
int main(){
	freopen("g.in","r",stdin);
	freopen("g.out","w",stdout);
	int n,l,w,ok=0;
	while(cin>>n>>l>>w){
        if(ok) cout<<endl;
		ok=1;
        for(register int i=1;i<=n;++i)
            cin>>a[i].x>>a[i].r;
        sort(a+1,a+1+n);
        for(register int i=1;i<=n;++i){
            if((a[i].r*2)<w){
                n=i-1;
                break;
            }
            double k=sqrt(double(a[i].r)*a[i].r-double(w)*w/4);
            b[i].l=double(a[i].x)-k;
            b[i].r=double(a[i].x)+k;
        }
        sort(b+1,b+1+n);
        if(b[n].r<l){
            cout<<-1;
            continue;
        }
        int j,tag=0,ans=1;
        double mn=inf;
        for(register int i=n;i;--i)
            if(b[i].r>=l){
                if(b[i].l<mn){
                    mn=b[i].l;
                    tag=i;
                }
            }
        j=tag;
        if(b[j].l<0){
            cout<<ans;
            continue;
        }
        while(1){
            tag=0;mn=inf;
            for(register int i=j-1;i;--i)
                if(b[i].r>=b[j].l&&b[j].l>=b[i].l){
                    if(b[i].l<mn){
                        mn=b[i].l;
                        tag=i;
                    }
                }
            if(!tag) break;
            j=tag;
            ++ans;
            if(b[j].l<=0) break;
        }
        if(b[j].l>0) cout<<-1;
        else cout<<ans;
    }
    return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...