[USACO5.2.2 Electric Fences]
2012-03-03 18:42
405 查看
[关键字]:随机化
[题目大意]:有一些平行与坐标轴的线段,找一个点到各线段距离和最小。
//==================================================================================================
[分析]:先找一个起始点(左下)然后确定一个范围,在这个范围内找到最优值,然后以最优值坐标为起点缩小范围重复,直到范围小于要求的精度。
[代码]:
View Code
[题目大意]:有一些平行与坐标轴的线段,找一个点到各线段距离和最小。
//==================================================================================================
[分析]:先找一个起始点(左下)然后确定一个范围,在这个范围内找到最优值,然后以最优值坐标为起点缩小范围重复,直到范围小于要求的精度。
[代码]:
View Code
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<cmath> using namespace std; const int MAXN=200; struct node { int x,y; }a[MAXN],b[MAXN]; int N; void Init() { scanf("%d",&N); for (int i=1;i<=N;i++) scanf("%d%d%d%d",&a[i].x,&a[i].y,&b[i].x,&b[i].y); } double Find(double x,double y) { double temp=0; for (int i=1;i<=N;i++) { if (a[i].x==b[i].x && abs(a[i].y-y)+abs(b[i].y-y)==abs(a[i].y-b[i].y)) {temp+=abs(a[i].x-x);continue;} if (a[i].y==b[i].y && abs(a[i].x-x)+abs(b[i].x-x)==abs(a[i].x-b[i].x)) {temp+=abs(a[i].y-y);continue;} temp+=min(sqrt((a[i].x-x)*(a[i].x-x)+(a[i].y-y)*(a[i].y-y)),sqrt((b[i].x-x)*(b[i].x-x)+(b[i].y-y)*(b[i].y-y))); } return temp; } void Solve() { double minx=50,miny=50,size=50; double Min=1e10; do{ double x=minx-size,y=miny-size; size/=20; for (int i=1;i<=40;i++) { x+=size; for (int i=1;i<=40;i++) { y+=size; double p=Find(x,y); if (p<Min) { Min=p; minx=x; miny=y; } } y-=size*40; } }while (size>0.1); printf("%.1lf %.1lf %.1lf",minx,miny,Min); } int main() { Init(); Solve(); return 0; }
相关文章推荐
- usaco 5.2.2 Electric Fences
- usaco traini 5.2.2 Electric Fences 题解
- USACO 5.2.2
- USACO6.4.2 Electric Fences(fence3)
- USACO Section 5.2 Electric Fences - 有意思的枚举+计算几何
- [USACO 6.4.2] Electric Fences
- USACO6.4-Electric Fences:计算几何
- usaco6.4.2 Electric Fences
- USACO 6.4 Electric Fences
- USACO 6.4.2 Electric Fences 三分算法
- [USACO3.4.3 Electric Fences]
- USACO 5.2.2 fence3
- Electric Fences[USACO]
- USACO 5.2 Electric Fences(模拟退火)
- Electric Fences_usaco3.4_皮克定理
- usaco 5.2 Electric Fences(模拟退火)
- USACO Mother's Milk
- bzoj 3480 [Usaco2014 Mar]Mooo
- [bzoj1626][Usaco2007 Dec][最小生成树]修建道路
- cl.exe,link.exe编译选项以及在windows下编译lua 5.2.2