poj 2398 Toy Storage(判断点在多边形内,叉积)
来源:互联网 发布:数据库物理模型主键 编辑:程序博客网 时间:2024/04/30 19:18
//以下为原blog搬迁过来的内容
【题目大意】:给出一个矩形的左上角的点(x1,y1)以及右下角的点(x2,y2),并给出n条线段,线段表示为(l,y1),(r,y2),用于将矩形切割成n+1块,分别标记为0到n。再给出m个点,求包含t(t>0)个点的有几块。
【解题思路】:已知给出三个点a,b,c,通过叉积可以判断c在线段a,b的哪一侧,若叉积小于0,则在线段左侧,等于0,三点共线,大于0,在线段右侧。所以对于每一个点只需要找到在其右边的最左边的线段即可。
可以先对线段的左端点进行了排序,然后求叉积,求到一个叉积<0的线段就可以了。 最后再统计一下。
【代码】:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#include <queue>#include <cmath>#include <string>#include <cctype>#include <map>#include <iomanip> using namespace std; #define eps 1e-8#define pi acos(-1.0)#define inf 1<<30#define pb push_back#define lc(x) (x << 1)#define rc(x) (x << 1 | 1)#define lowbit(x) (x & (-x))#define ll long longstruct Line{ int x1,x2,cnt;}line[10000];struct Point{ int x,y;}point;int n,m,xx1,xx2,yy1,yy2;bool cmp(const Line &a,const Line &b){ return min(a.x1,a.x2)<min(b.x1,b.x2);}bool cmp1(const Line &a,const Line &b){ return a.cnt<=b.cnt;}inline int det(int xx1,int yy1,int xx2,int yy2){ return xx1*yy2-xx2*yy1;}void solve(){ for (int i=0; i<=n; i++) { if (det(line[i].x1-point.x,yy1-point.y,line[i].x2-point.x,yy2-point.y)<0) { line[i].cnt++; break; } }}int main(){ while (~scanf("%d",&n)) { if (n==0) break; scanf("%d%d%d%d%d",&m,&xx1,&yy1,&xx2,&yy2); for (int i=1; i<=n; i++) { scanf("%d%d",&line[i].x1,&line[i].x2); line[i].cnt=0; } line[0].x1=xx2; line[0].x2=xx2; line[0].cnt=0; sort(line,line+n+1,cmp); for (int i=1; i<=m; i++) { scanf("%d%d",&point.x,&point.y); solve(); } sort(line,line+n+1,cmp1); int tmp=line[0].cnt; int anss=1; printf("Box\n"); for (int i=1; i<=n; i++) { if (line[i].cnt==tmp) anss++; else { if (tmp>0) printf("%d: %d\n",tmp,anss); anss=1; tmp=line[i].cnt; } } if (tmp>0) printf("%d: %d\n",tmp,anss); //printf("\n"); } return 0;}
- poj 2398 Toy Storage(判断点在多边形内,叉积)
- poj 2398 Toy Storage(判断点在多边形内,叉积)
- poj 2398 Toy Storage(叉积判断点是否在四边形内)
- POJ 2398 Toy Storage(判定点在四边形内)
- POJ 2318 TOYS && POJ 2398 Toy Storage [判断点在四边形中]
- POJ 2398 Toy Storage (判断点与线段关系)
- 判断点在多边形内
- 判断点在多边形内
- 判断点在多边形内
- 判断点在多边形内
- POJ 2398 判断点在多边形内外
- poj 2398 Toy Storage 【统计相同个数的点的 区域个数】【二分+叉积判断】
- POJ 2398 Toy Storage (判断点与直线关系+排序二分计数)
- POJ 2398 Toy Storage(计算几何,叉积判断点和线段的关系)
- poj 2398 Toy Storage
- poj 2398 Toy Storage
- POJ 2398 Toy Storage
- POJ 2398 Toy Storage
- poj1001(高精度)
- poj 2318 Toys(叉积判点在线段的哪一侧)
- 左手程序,右手诗
- JQuery选择过滤器
- android ListView美化-->几个比较特别的属性
- poj 2398 Toy Storage(判断点在多边形内,叉积)
- Android和iPhone应用程序界面布局示例
- poj 3304 Segments(利用叉积求是否存在直线与所给线段相交)
- configfs
- poj 1296 Noise Effect(判断线段相交,并求交点)
- 我们要有意识地增加网站中的关键词
- poj 1556 The Doors(最短路+判断线段相交)
- poj 2653 Pick-up sticks(判断线段是否相交)
- c中printf实现atoi实现