acm 1007 Quoit Design
来源:互联网 发布:杜兰特总决赛数据效率 编辑:程序博客网 时间:2024/06/07 10:34
这道题用到分治,以前只在数据结构上学到过,今天终于给碰上了。
一开始我用暴力,结果当然是超时。看了别人的代码,是用分治做的,我还是写不来,接着我就边理解边敲。里面还是有一些小细节要注意的。
1.注意循环的范围
2.注意优化
3.多用库函数
#include<iostream>#include<algorithm>#include<cmath>using namespace std;double t;struct point{ double x,y;}p[100001];double power(double x){ return x*x;}bool fun(point p1,point p2){ if(p1.x<p2.x) return true; else if(p1.x==p2.x&&p1.y<p2.y) return true; else return false;}double min(double a,double b){ return a<b?a:b;}double dis(point p1,point p2){ return power(p1.x-p2.x)+power(p1.y-p2.y);}void mind(int l,int r){ if(l+5>=r){ for(int i=l;i<=r;i++){ for(int j=i+1;j<=r;j++){ // printf("%lf\n",dis(p[i],p[j])); t=min(t,dis(p[i],p[j])); } } return; } int mid=(l+r)/2; mind(l,mid); mind(mid+1,r); for(int i=l;i<=mid;i++){ for(int j=mid+1;j<=r;j++){ double d=dis(p[i],p[j]); if(d>t) break; t=d; } } return;}int main(){ int n,i; while(scanf("%d",&n)!=EOF){ t=100000000; if(n==0) break; for( i=0;i<n;i++) scanf("%lf%lf",&p[i].x,&p[i].y); sort(p,p+n,fun); mind(0,n-1); t=sqrt(t); printf("%.2lf\n",t/2); } return 0;}
阅读全文
0 0
- acm 1007 Quoit Design
- HDU ACM 1007 Quoit Design
- 杭电 ACM 1007 Quoit Design
- 杭电ACM第1007题——Quoit Design
- 1007:Quoit Design
- HDOJ 1007 Quoit Design
- hdu 1007 Quoit Design
- hdu 1007 Quoit Design
- hdu 1007 Quoit Design
- HDU-1007 Quoit Design
- hdu 1007 Quoit Design
- hdu 1007 Quoit Design
- hdu 1007 Quoit Design
- HDU 1007 Quoit Design
- HDU 1007 Quoit Design
- HDU 1007 Quoit Design
- hdu-1007-Quoit Design
- HDU 1007 Quoit Design
- 在C/C++中的struct使用函数指针,而且在C++中的struct还能使用成员函数
- 1011. World Cup Betting (20)
- Eclipse中web项目部署至Tomcat步骤
- bzoj 3224 treap模板
- easyui panel 瀑布流式布局
- acm 1007 Quoit Design
- 验证上传图片格式
- react-native 结合ant-Design- mobile
- Java常量池之String.intern()
- 渗透测试工具sqlmap基础教程
- 2017.7.3笔记总结 防浪涌设计
- 吃透这50道经典应用题,比去辅导班强百倍
- 婚恋社交项目,寻找创业合伙人,坐标上海
- 【Python】3.6版本py文件打包生成exe