uva10382Watering Grass
来源:互联网 发布:昆仑数据科技面试 编辑:程序博客网 时间:2024/04/30 11:58
简单贪心,差一点就一a了。
就是最小覆盖问题的变种,只不过这里左端点和右端点是圆和strip的长的交点。
少写了个条件i<N,re一次。
#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<cmath>#define MAX 10010using namespace std;int N,all,ok;double L,W;struct point{ double l,r,left,right;}s[MAX];double getleft(int index){ return s[index].l-sqrt(s[index].r*s[index].r-W*W/4);}double getright(int index){ return s[index].l+sqrt(s[index].r*s[index].r-W*W/4);}int cmp(const void *p,const void *q){ return ((struct point *)p)->left-((struct point *)q)->left;}void solve(){ double target=0,max; int i,j=0,flag; while(1) { if(target>=L) { ok=1; break; } max=0,flag=0; for(i=j;i<N&&s[i].left<=target;i++) { if(s[i].r*2<=W) continue; flag=1; if(s[i].right>max) { max=s[i].right; } } if(flag==0) { ok=0; break; } j=i; all++; target=max; } if(ok==0) printf("-1\n"); else printf("%d\n",all);}int main(){ int i,j; while(scanf("%d %lf %lf",&N,&L,&W)!=EOF) { all=0,ok=0; for(i=0;i<N;i++) { scanf("%lf %lf",&s[i].l,&s[i].r); s[i].left=getleft(i),s[i].right=getright(i); } qsort(s,N,sizeof(s[0]),cmp); solve(); } return 0;}
0 0
- uva10382Watering Grass
- grass
- Grass Land
- Best Grass
- Watering Grass
- Best Grass
- grow grass on keyboard
- UVa 10382 Watering Grass
- UVa 10382 - Watering Grass
- UVa 10382 - Watering Grass
- uva 10382 - Watering Grass
- uva 10382 - Watering Grass
- Uva 10382 - Watering Grass
- UVAOJ--10382 Watering Grass
- 10382 - Watering Grass
- Uva-10382-Watering Grass
- uva_10382_Watering Grass( 貪心 )
- UVaOJ10382 - Watering Grass
- hg -- 基础指令总结
- MKMapView的内存释放问题
- SSL延迟有多大?
- MySQL查询表内重复记录
- 《白纸醋》每个月免费送的手机费跟扣扣币你不要?
- uva10382Watering Grass
- Java关键字final、static使用总结
- 【BZOJ】【P2819】【Nim】【题解】【链剖线段树】
- sicily_course_1001
- 学习
- 2014 ACM/ICPC 牡丹江赛区网络赛解题报告汇总
- asp.net上传压缩文件
- 关于报错you cannot combine custom titles with other title features
- Error building Player: Win32Exception: ApplicationName='E:/adt-20140702/sdk\tools\zipalign.exe', Com