poj 2318 TOYS

原创 2012年03月26日 17:54:51
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;

struct POINT 
{
	int x,y;
};
POINT card_line[10010],toy_point[5010];
POINT left,right;

bool cmp(POINT &p1,POINT &p2)
{
	return p1.x<p2.x;
}

int det(POINT p1,POINT p2,POINT p3)
{
	return (p2.x-p1.x)*(p3.y-p1.y)-(p3.x-p1.x)*(p2.y-p1.y);
}

int main()
{
	int m,n,j;
	int i,sum[10010];
	while(1)
	{
		memset(sum,0,sizeof(sum));
		scanf("%d",&n);
		if(n==0) break;
		scanf("%d%d%d%d%d",&m,&left.x,&left.y,&right.x,&right.y);
		for (i=0;i<2*n;i=i+2)
		{
			scanf("%d%d",&card_line[i].x,&card_line[i+1].x);
			card_line[i].y=left.y;
			card_line[i+1].y=right.y;
		}
		for (i=0;i<m;i++)
		{
			scanf("%d%d",&toy_point[i].x,&toy_point[i].y);
		}
		//按x从小到大排序
		sort(toy_point,toy_point+m,cmp);
		for (i=0;i<m;i++)
		{
			for (j=0;j<2*n;j+=2)
			{
				int t1=det(toy_point[i],card_line[j],card_line[j+1]);
				if(j==0 && t1<0)
				{
					sum[j]++;
					break;
				}
				else if(t1<0)
				{
					int t2=det(toy_point[i],card_line[j-2],card_line[j-1]);
				    if(t2>0)
					{
						sum[j]++;
						break;
					}
				}
			}
			if(j==2*n) sum[j]++;
		}
		int cas=0;
		for (i=0;i<=2*n;i+=2)
			printf("%d: %d\n",cas++,sum[i]);
		printf("\n");
	}
	return 0;
}

poj 2318 TOYS 二分+叉积

给出一个矩形抽屉,然后有n个板子放在其中,连接上下底。给出m个玩具的坐标(视作点), 问n+1个区间内,每个区间中有多少玩具。...
  • yskyskyer123
  • yskyskyer123
  • 2016年08月03日 20:59
  • 459

poj2318TOYS【二分+点与直线位置判断】

Language: Default TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12094   Ac...
  • R1986799047
  • R1986799047
  • 2015年08月27日 22:06
  • 675

POJ2318 TOYS(直接计算法)

题目链接:http://poj.org/problem?id=2318 此题还可以用向量叉乘+二分查找的方法:http://blog.csdn.net/xuh723/article/deta...
  • u014330247
  • u014330247
  • 2014年03月26日 21:40
  • 1035

POJ 2318 TOYS 计算几何(点与直线关系)

TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10668   Accepted...
  • u013557725
  • u013557725
  • 2014年10月15日 22:01
  • 740

poj 2318 TOYS(计算几何)

TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13159   Accepted...
  • clover_hxy
  • clover_hxy
  • 2016年05月06日 21:19
  • 431

poj 2318 TOYS

题目地址:poj2318 统计每个隔间的个数 先想着暴力,对每个隔板,扫描所有的点,看...
  • jingqi814
  • jingqi814
  • 2014年04月21日 01:18
  • 299

poj 2318 TOYS (计算几何)

B - TOYS Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Statu...
  • qq_33328072
  • qq_33328072
  • 2016年05月24日 10:20
  • 104

POJ 2318 TOYS <计算几何>

题目分析:就是给一些点的坐标,判断它属于哪个区域。容易想到用以此点和右边界外一点为端点的线段与partitionpartition求相交情况,因为划分线段partitionpartition是有序的,...
  • sinat_36135197
  • sinat_36135197
  • 2017年11月05日 17:10
  • 48

POJ 2318 TOYS(计算几何)

Description 一个矩形区域中有n条互不相交的线段,每条线段的上下端点分别在矩形的上下边上,现给出该矩形区域中m个点的坐标,保证点不在边上,统计由这n条边将矩形分成的n+1个区域中各有多少个...
  • V5ZSQ
  • V5ZSQ
  • 2015年07月28日 10:50
  • 211

【POJ 2318】TOYS(计算几何)

星辰落尽清辉扬,烟霞漫天冲淡浮华
  • reverie_mjp
  • reverie_mjp
  • 2016年05月17日 18:42
  • 172
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 2318 TOYS
举报原因:
原因补充:

(最多只允许输入30个字)