poj1066 线段相交简单应用(解题报告)
#include<stdio.h>
#include<math.h> const double eps=1e-8;
int n; 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.x+y*b.y;
}
double operator ^(const Point &b)const{
return x*b.y-b.x*y;
}
}; struct Line
{
Point s,e;
Line (){}
Line (Point _s,Point _e)
{
s=_s;
e=_e;
}
}; Line line [40];
double xmult(Point p0,Point p1,Point p2)
{
return (p1-p0)^(p2-p0);
} bool seg_seg(Line l1,Line l2)//判断线段相交完全可以(不严格相交)
{
return xmult(l1.s,l2.s,l2.e)*xmult(l1.e,l2.s,l2.e)<=eps&&xmult(l2.s,l1.s,l1.e)*xmult(l2.e,l1.s,l1.e)<=eps;
} Point point;
int main()
{
double x1,x2,y1,y2; while(~scanf("%d",&n))
{for(int i=0;i<n;i++)
{
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
line[i]=Line(Point(x1,y1),Point(x2,y2));
}
line[n]=Line(Point(0,0),Point(0,100));
line[n+1]=Line(Point(100,0),Point(100,100));
scanf("%lf%lf",&x1,&y1);
point =Point(x1,y1);
int ans=0x3f3f3f,num;
for(int i=0;i<n+2;i++)
{
num=0;
for(int j=0;j<n;j++)
{
if(i==j)
continue;
if(seg_seg(Line(point,line[i].s),line[j])==true)
num++;
}
//printf("%d\n",num);
if(ans>num)
ans=num;
num=0;
for(int j=0;j<n;j++)
{
if(i==j)
continue;
if(seg_seg(Line(point,line[i].e),line[j])==true)
num++;
}
//printf("%d\n",num);
if(ans>num)
ans=num;
}
printf("Number of doors = %d\n",ans+1);
} }
题意:
在一个10X10的正方体中有着三十条以内的线段,线段的端点都在正方体的 边上,有一个宝物在正方体 的一个点上,求从正方体外到宝物处至少需要破坏几条直线来做门 ;
思路:
临界状态就是宝物与正方体四周的线段交点的连线与所有线段的相交的次数;
易错点:
1:枚举线段端点时,记得枚举正方形的四个顶点(还没理解为什么,---玄学)
2:枚举这条线段的端点时,不用判断这条线段是否与构造的线段相交。
poj1066 线段相交简单应用(解题报告)的更多相关文章
- 洛谷 P4148 简单题 解题报告
P4148 简单题 题意 维护单点加与矩形求和,强制在线 说明 \(n\le 500000,m\le 200000\),\(4000ms / 20MB\) kd-tree 复杂度我不懂 是一颗平衡树, ...
- DFS与BFS题解:[kaungbin]带你飞 简单搜索 解题报告
DFS and BFS 在解题前我们还是大致讲一下dfs与bfs的.(我感觉我不会bfs) 1.DFS dfs(深度优先算法) 正如其名,dfs是相当的深度,不走到最深处绝不回头的那种. 深度优先搜 ...
- poj 2653 线段相交裸题(解题报告)
#include<stdio.h> #include<math.h> const double eps=1e-8; int n; int cmp(double x) { if( ...
- 简单几何(线段相交) POJ 2653 Pick-up sticks
题目传送门 题意:就是小时候玩的一种游戏,问有多少线段盖在最上面 分析:简单线段相交,队列维护当前最上的线段 /******************************************** ...
- ACM: Just a Hook 解题报告 -线段树
E - Just a Hook Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u D ...
- 简单几何(线段相交)+模拟 POJ 3449 Geometric Shapes
题目传送门 题意:给了若干个图形,问每个图形与哪些图形相交 分析:题目说白了就是处理出每个图形的线段,然后判断是否相交.但是读入输出巨恶心,就是个模拟题加上线段相交的判断,我第一次WA不知道输出要按字 ...
- 简单几何(直线与线段相交) POJ 1039 Pipe
题目传送门 题意:一根管道,有光源从入口发射,问光源最远到达的地方. 分析:黑书上的例题,解法是枚举任意的一个上顶点和一个下顶点(优化后),组成直线,如果直线与所有竖直线段有交点,则表示能穿过管道. ...
- 简单几何(线段相交) POJ 1410 Intersection
题目传送门 题意:一个矩形和一条线段,问是否有相交 分析:考虑各种情况.坑点:给出的矩形的两个端点是无序的,还有线段完全在矩形内也算相交 /****************************** ...
- 简单几何(线段相交) POJ 1066 Treasure Hunt
题目传送门 题意:从四面任意点出发,有若干障碍门,问最少要轰掉几扇门才能到达终点 分析:枚举入口点,也就是线段的两个端点,然后选取与其他线段相交点数最少的 + 1就是答案.特判一下n == 0的时候 ...
随机推荐
- 【ORA】ORA-32004: 问题分析和解决
今天做一个特殊的实验,需要重启数据库 数据库关闭没有问题 SQL> shutdown immediate; Database closed. Database dismounted. ORACL ...
- 【葵花宝典】一天掌握Docker
第1章Docker 概述 1-1 Docker是什么 没有虚拟化技术的原始年代 我们仔细想想,在没有计算虚拟化技术的"远古"年代,如果我们要部署一个应用程序(Application ...
- 同步alv的前端显示和输出内表中的数据
在使用CL_GUI_ALV_GRID显示报表的时候,当我们使用了checkbox的时候,或者是有可编辑的字段,当我们 在前段修改了单元格内容的时候,后台的内表并不会自动的更新,此时需要我们调用一个方法 ...
- webapi Swagger 配置 services.BuildServiceProvider() 报警 ASP0000 问题处理
问题起源 网上的常见配置 Swagger 配置 在Startup类的 ConfigureServices 使用 services.BuildServiceProvider() ,其中有段代码如下: v ...
- 两节锂电池保护IC,芯片电路图如何设计
两节锂电池出了充电电路外,必须搭配的也就是两节锂电池的保护板电路和芯片了.对两节节串联可再充电锂离子/锂聚合物电池的过充电.过放电和过电流进行保护.和电池反接保护功能,这些都是极其重要的. 首先设计两 ...
- Centos7下安装MySQL8.0.23-小白的开始
首先简单介绍一下什么叫MySQL: 数据库简而言之就是存储数据的仓库,为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上.是为了实现一定的目的,按照某种规则组织起来的数据的集合: MySQL ...
- 03. struts2中Action配置的各项默认值
Action中的各项默认值 Action各项配置 <action name="helloworld" class="com.liuyong666.action.He ...
- 使用pushplus+python实现亚马逊到货消息推送微信
xbox series和ps5发售以来,国内黄牛价格一直居高不下.虽然海外amazon上ps5补货很少而且基本撑不过一分钟,但是xbox series系列明显要好抢很多. 日亚.德亚的xbox ser ...
- C++ unordered_map/unordered_set 自定义键类型
1. unordered_map 和 unordered_set template < class Key, // unordered_map::key_type class T, // uno ...
- Dapper原来还可以直接这样写SQL,很强大哦
网络上对Dapper的解释是这样的: Dapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取 ...