题目大意:给出一些笛卡尔系中的一些直线,问从(0,+∞)向下看时能看到哪些直线。
思路:半平面交可做,但是显然用不上。类似于求凸包的思想,维护一个栈。先将所有直线按照k值排序,然后挨个压进去,遇到有前一个交点被挡住的话就先弹栈。
比较闹心的是去重。我的方法是压栈之前先去重,然后在处理。
CODE:
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2014-10-17 18:54:42
阅读次数:
153
题目大意:给定n条直线,求从上到下俯瞰能看到哪些直线
半平面交的裸题
首先将所有直线按照斜率排序,依次入栈
如果一条直线和栈顶的交点在栈顶直线和栈顶下面那条直线的交点的左侧,则删除栈顶
若多条直线斜率相同,只插入截距最大的那条直线
最后记录答案输出即可
#include
#include
#include
#include
#include
#define M 50500
using ...
分类:
其他好文 时间:
2014-10-17 15:36:56
阅读次数:
216
易知最短路一定是以圆心或者两圆交点作为中间点到达的。所以把这些点拿出来建图跑最短路就够了。
现在的问题就是,给定两个点,能否连边 add(a,b,dist(a,b))
题目要求,ab线段必须完全在圆上,所以可以求出ab线段和所有圆的所有交点,对于任意相邻两个交点,它们必处于同一个圆内,否则不可达。点的编号用map就够了(一开始我以为double有精度问题无法map,用两个longlong保存然...
分类:
其他好文 时间:
2014-10-16 19:10:02
阅读次数:
257
导入判断触摸点是否在一个多边形的内部方法1、数学方法这个方法的好处是任意平台都可以使用,不仅现于Android算法:求解通过该点的水平线与多边形各边的交点,单边交点为奇数,则成立ok我们其实就是需要看这个点的单边射线与多边形的交点,代码实现如下:[java]view plaincopyprint?p...
分类:
其他好文 时间:
2014-10-16 03:07:51
阅读次数:
134
链表相交需要判断有无循环,无循环直接找最后一个节点进行比较,有循环找某个循环点然后看看另一条是否也有这个点。找循环链表入口比较牛逼:在p2和p1第一次相遇的时候,假定p1走了n步,环路的入口是在h步的时候经过的,那么有 p1走的路径: h+c = n; c为p1和p2相交点,距离环路入口的距离 p2...
分类:
其他好文 时间:
2014-10-14 19:24:59
阅读次数:
130
题意:平面上有n个端点的一笔画,最后一个端点与第一个端点重合,即所给图案是闭合曲线。求这些线段将平面分成多少部分。分析:平面图中欧拉定理:设平面的顶点数、边数和面数分别为V、E和F。则 V+F-E=2所求结果不容易直接求出,因此我们可以转换成 F=E-V+2枚举两条边,如果有交点则顶点数+1,并将交...
分类:
其他好文 时间:
2014-10-13 20:45:17
阅读次数:
330
依然是计算几何。射线法判断点与多边形关系原理如下:从待判断点引出一条射线,射线与多边形相交,如果交点为偶数,则点不在多边形内,如果交点为奇数,则点在多边形内。原理虽是这样,有些细节还是要注意一下,比如射线过多边形顶点或射线与多边形其中一边重合等情况还需特别判断。这里就不特别判断了,因为我只是熟悉原理...
分类:
其他好文 时间:
2014-10-12 00:52:16
阅读次数:
273
n*n*n的图形,m条线,每条线上的方格被删除,问一共删除了多少个方格
ans=m*n ,然后判断一下直线相交的交点,去重即可
#include "stdio.h"
#include "string.h"
int xy[1010][1010],xz[1010][1010],yz[1010][1010],hash[1010];
struct node
{
int x,y,z;
} ma...
分类:
其他好文 时间:
2014-10-11 11:55:35
阅读次数:
240
题意:
就是有n*n*n个木块,然后给你m条三维的直线
问这些直线能够消掉多少个木块
思路:
其实就是求m条直线有几个交点
然后就是一个双重循环解决
然后读入的时候需要判重
用三个1000*1000的数组来实现。
注意
3 3
Y=2,Z=2
X=2,Y=2
X=2,Z=2
答案应该是7而不是6,因为三条线交在同一点上。
6的原因是在判断第一条线的时候 和后面两个都有交...
分类:
其他好文 时间:
2014-10-10 13:10:24
阅读次数:
110