博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[poj1066]Treasure Hunt
阅读量:5081 次
发布时间:2019-06-12

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

题目大意:求需要炸毁的墙的最少数目。

解题关键:由于是直线,所以只需要求宝藏到各个墙面中点的线段与其他线段的最少交点个数即可。再将中点转化为两个端点求小值即可。

#include
#include
#include
#include
#include
#include
#define eps 1e-6 #define inf 0x3f3f3f3f using namespace std; struct Point{ double x,y; Point(){} Point(double _x,double _y){x=_x;y=_y;} Point operator-(const Point &b)const{ return Point(x - b.x,y - b.y);} double operator^(const Point &b)const{ return x*b.y-y*b.x;} double operator*(const Point &b)const{ return x*b.x+y*b.y;}};struct Line{ Point s,e; Line(){} Line(Point _s,Point _e){s=_s;e=_e;}}A[35];int sgn(double x){ if(fabs(x)
=min(l2.s.x,l2.e.x)&& max(l2.s.x,l2.e.x)>=min(l1.s.x,l1.e.x)&& max(l1.s.y,l1.e.y)>=min(l2.s.y,l2.e.y)&& max(l2.s.y,l2.e.y)>=min(l1.s.y,l1.e.y)&& sgn((l2.s-l1.s)^(l1.e-l1.s))*sgn((l2.e-l1.s)^(l1.e-l1.s))<=0&& sgn((l1.s-l2.s)^(l2.e-l2.s))*sgn((l1.e-l2.s)^(l2.e-l2.s))<=0;} int n,ans=inf; int main(){ double sx,sy; scanf("%d",&n); for(int i=0;i

 

转载于:https://www.cnblogs.com/elpsycongroo/p/8728943.html

你可能感兴趣的文章
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
正则表达式(进阶篇)
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>
jQuery应用 代码片段
查看>>
MVC+Servlet+mysql+jsp读取数据库信息
查看>>