博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HDOJ】2440 Watch out the Animal
阅读量:5898 次
发布时间:2019-06-19

本文共 2029 字,大约阅读时间需要 6 分钟。

刚开始学随机算法,凸包+模拟退火。

1 /* 2440 */  2 #include 
3 #include
4 #include
5 #include
6 #include
7 #include
8 using namespace std; 9 10 #define MAXN 105 11 12 typedef struct { 13 int x, y; 14 } Point_t; 15 16 Point_t stack[MAXN]; 17 Point_t points[MAXN]; 18 int dir[8][2] = { 19 {-1, 0}, { 1, 0}, { 0, -1}, { 0, 1}, 20 {-1, -1}, {-1, 1}, { 1, -1}, { 1, 1} 21 }; 22 const double eps = 1e-10; 23 const double next = 0.9; 24 int n, top; 25 int ans; 26 27 double Length(Point_t a, Point_t b) { 28 return sqrt( (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) + 0.); 29 } 30 31 int Length2(Point_t a, Point_t b) { 32 return (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y); 33 } 34 35 int cross(Point_t a, Point_t b, Point_t c) { 36 return (b.x-a.x)*(c.y-a.y) - (c.x-a.x)*(b.y-a.y); 37 } 38 39 bool comp(Point_t a, Point_t b) { 40 int m = cross(points[0], a, b); 41 return m>0 || (m==0 && Length2(points[0], a)
1 && cross(stack[top-1], stack[top], points[i])<=0) 66 --top; 67 stack[++top] = points[i]; 68 } 69 } 70 71 double cal(double xx, double yy) { 72 double ret = 0; 73 double x, y; 74 75 for (int i=0; i<=top; ++i) { 76 x = xx - stack[i].x; 77 y = yy - stack[i].y; 78 ret += sqrt(x*x + y*y); 79 } 80 81 return ret; 82 } 83 84 void SA() { 85 double step = 10000.; 86 double dis, tmp; 87 double x, y; 88 double xx, yy; 89 int i; 90 91 x = stack[0].x; 92 y = stack[0].y; 93 dis = cal(x, y); 94 while (step > eps) { 95 for (i=0; i<8; ++i) { 96 xx = x + step * dir[i][0]; 97 yy = y + step * dir[i][1]; 98 tmp = cal(xx, yy); 99 if (tmp < dis) {100 dis = tmp;101 x = xx;102 y = yy;103 }104 }105 step *= next;106 }107 108 ans = (dis+0.5);109 }110 111 int main() {112 int t;113 int i, j, k;114 115 #ifndef ONLINE_JUDGE116 freopen("data.in", "r", stdin);117 //freopen("data.out", "w", stdout);118 #endif119 120 scanf("%d", &t);121 while (t--) {122 scanf("%d", &n);123 for (i=0; i

 

转载于:https://www.cnblogs.com/bombe1013/p/4207996.html

你可能感兴趣的文章
从汇编角度来理解linux下多层函数调用堆栈运行状态
查看>>
Sqlite - constraint failed[0x1555]: UNIQUE constraint failed
查看>>
【Tomcat】Tomcat下设置项目为默认项目
查看>>
Java Socket编程
查看>>
轻量却超强——推荐几款好用的截图工具
查看>>
深度解析!短视频如何成为现象级产品
查看>>
cocos2dx 实现文字的一键复制功能(IOS、Android)
查看>>
Java基础-StringBuffer类与StringBuilder类简介
查看>>
libcmt.lib和msvcrt.lib冲突,原因和解决方法
查看>>
layui实现类似于bootstrap的模态框功能
查看>>
微信小程序如何玩转分销
查看>>
英特尔® Software Guard Extensions 教程系列:第一部分,英特尔® SGX 基础
查看>>
wtf_1234
查看>>
ffmpeg+nginx+video实现rtsp流转hls流,通过H5查看监控视频
查看>>
js进阶 9-9 html控件如何实现回车键切换焦点
查看>>
Distributed processing
查看>>
Linux环境变量加载顺序
查看>>
openStack queens
查看>>
全排列(Perm)的递归实现算法
查看>>
Mybatis(一)走进Mybatis与FisrtExample
查看>>