UVA 10382 Watering Grass 贪心

来源:互联网 发布:真有外星人吗 知乎 编辑:程序博客网 时间:2024/05/29 15:06

这么经典的贪心的,,

我又败在了书写代码上。。。


或者说我都没有很用心地分析写怎样的代码号。。


收货:

(1)看别人是如何用   i的。。。int i在外部,,这样i 自然就像是static一样定格了, 

(2)别人居然考虑到了细节  就是2*r<w

.


(3)  如果不是自己敲了, 而只是看了别人的代码,还真的没有这些收货。


#include<algorithm>#include<string>#include<cstdio>#include<cstring>#include<iostream>#include<cmath>using namespace std;#define sf scanf#define pf printf#define mem(a,b) memset(a,b,sizeof(a));#define bug1 printf("bug1\n");#define eps 1e-8const int maxn=10005;int n,L,w;struct Node{    double l,r;    bool friend operator <(Node a,Node b){        if(a.l==b.l)return a.r<b.r;        return a.l<b.l;    }}a[maxn];int main(){    while(~sf("%d%d%d",&n,&L,&w)){        int cnt=0;        for(int i=1;i<=n;++i){            double p,r;            sf("%lf%lf",&p,&r);            if(2*r<=w)continue;//细节            a[++cnt].l=p-sqrt(r*r-w*w*0.25);            a[cnt].r=p+sqrt(r*r-w*w*0.25);        }        sort(a+1,a+1+cnt);        double len=0;        int ans=0;int flag=0;        int i=1;//******很好        while(len<L){            double maxl=0;            for(;i<=cnt;++i){                if(a[i].l<=len){                    maxl=max(maxl,a[i].r);                }                if(a[i].l>len)break;            }            if(maxl==0){flag=1;break;}            ans++;len=maxl;        }        if(flag)puts("-1");        else pf("%d\n",ans);    }}


0 0
原创粉丝点击