UVA 10382Watering Grass贪心

xiaoxiao2021-02-27  561

这么经典的贪心的,,

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

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

收货:

(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-8 const 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); } }

转载请注明原文地址: https://www.6miu.com/read-396.html

最新回复(0)