计算几何终于开坑了。。。

叉积+二分。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 5050
using namespace std;
struct point
{
int x,y;
point (int x,int y):x(x),y(y) {}
point () {}
friend point operator-(point x,point y)
{
return point(x.x-y.x,x.y-y.y);
}
}p[maxn];
struct line
{
point x,dt;
line (point x,point dt):x(x),dt(dt) {}
line () {}
friend int operator*(line x,line y)
{
return x.dt.x*y.dt.y-y.dt.x*x.dt.y;
}
}l[maxn];
int n,m,cnt[maxn],x1,y1,x2,y2,x,y;
bool check(int xs) {return (line(l[xs].x,point(x,y)-l[xs].x)*l[xs])>=;}
int ask()
{
int l=,r=n,ans=-;
while (l<=r)
{
int mid=(l+r)>>;
if (check(mid)) {ans=mid;l=mid+;}
else r=mid-;
}
return ans;
}
int main()
{
for (;;)
{
scanf("%d",&n);if (!n) break;scanf("%d",&m);
scanf("%d%d%d%d",&x1,&y2,&x2,&y1);
memset(cnt,,sizeof(cnt));
l[]=line(point(x1,y1),point(,y2-y1));
for (int i=;i<=n;i++)
{
scanf("%d%d",&x,&y);
l[i]=line(point(y,y1),point(x-y,y2-y1));
}
l[n+]=line(point(x2,y1),point(,y2-y1));
for (int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
cnt[ask()]++;
}
for (int i=;i<=n;i++) printf("%d: %d\n",i,cnt[i]);
printf("\n");
}
return ;
}

POJ 2318 TOYS/POJ 2398 Toy Storage的更多相关文章

  1. POJ 2318 TOYS && POJ 2398 Toy Storage(几何)

    2318 TOYS 2398 Toy Storage 题意 : 给你n块板的坐标,m个玩具的具体坐标,2318中板是有序的,而2398无序需要自己排序,2318要求输出的是每个区间内的玩具数,而231 ...

  2. 简单几何(点与线段的位置) POJ 2318 TOYS && POJ 2398 Toy Storage

    题目传送门 题意:POJ 2318 有一个长方形,用线段划分若干区域,给若干个点,问每个区域点的分布情况 分析:点和线段的位置判断可以用叉积判断.给的线段是排好序的,但是点是无序的,所以可以用二分优化 ...

  3. 向量的叉积 POJ 2318 TOYS & POJ 2398 Toy Storage

    POJ 2318: 题目大意:给定一个盒子的左上角和右下角坐标,然后给n条线,可以将盒子分成n+1个部分,再给m个点,问每个区域内有多少各点 这个题用到关键的一步就是向量的叉积,假设一个点m在 由ab ...

  4. poj 2398 Toy Storage(计算几何)

    题目传送门:poj 2398 Toy Storage 题目大意:一个长方形的箱子,里面有一些隔板,每一个隔板都可以纵切这个箱子.隔板将这个箱子分成了一些隔间.向其中扔一些玩具,每个玩具有一个坐标,求有 ...

  5. POJ 2318 TOYS(叉积+二分)

    题目传送门:POJ 2318 TOYS Description Calculate the number of toys that land in each bin of a partitioned ...

  6. poj 2318 TOYS &amp; poj 2398 Toy Storage (叉积)

    链接:poj 2318 题意:有一个矩形盒子,盒子里有一些木块线段.而且这些线段坐标是依照顺序给出的. 有n条线段,把盒子分层了n+1个区域,然后有m个玩具.这m个玩具的坐标是已知的,问最后每一个区域 ...

  7. POJ 2398 - Toy Storage 点与直线位置关系

    Toy Storage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5439   Accepted: 3234 Descr ...

  8. POJ 2398 Toy Storage(计算几何,叉积判断点和线段的关系)

    Toy Storage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3146   Accepted: 1798 Descr ...

  9. POJ 2398 - Toy Storage - [计算几何基础题][同POJ2318]

    题目链接:http://poj.org/problem?id=2398 Time Limit: 1000MS Memory Limit: 65536K Description Mom and dad ...

随机推荐

  1. RTSP协议资料

    维基百科: RTSP:http://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol RTP:http://en.wikipedia.org/wik ...

  2. sql用户权限

    登录 1)右键根目录属性 点下面的sql server 和 windows 身份验证模式 2)安全性右键新建,选择登陆 去掉 那个"用户下次登陆是必须改密码" ,下面默认数据库改为 ...

  3. Nuc900 bsp turbowriter使用注意点

    Nuc900 bsp turbowriter使用注意点 一. Nor flash 用turbo 烧写kernel和文件系统时的注意点: 1. kernel的image No要大于rootfs 2.烧写 ...

  4. jquery validation插件使用

    首先需要引入jQuery.js和jquery.validate.js 以下面代码为例: <form id="mainform"> <fieldset> &l ...

  5. php发送post请求的三种方法示例

    本文分享下php发送post请求的三种方法与示例代码,分别使用curl.file_get_content.fsocket来实现post提交数据,大家做个参考. php发送post请求的三种方法,分别使 ...

  6. Pyhton 操作MySQL数据库

         MySQL数据库的接口程序下载地址:https://sourceforge.net/projects/mysql-python/ 操作数据库的大致步骤如下: 1:首先先创建一个数据库的连接对 ...

  7. Visual Studio调试之避免单步跟踪调试模式

    Visual Studio调试之避免单步跟踪调试模式 写完Visual Studio调试之断点进阶篇之后,想分享一下我常用的一些调试技巧,后面发现写之前,一些背景知识需要介绍一下. 下面是几篇今年2月 ...

  8. Spark学习笔记--Graphx

    浅谈Graphx: http://blog.csdn.net/shangwen_/article/details/38645601 Pregel: http://blog.csdn.net/shang ...

  9. Linux中判断大小端的一种方法

    大小端的定义无需赘言,常用的方法有使用联合体和指针法,如: int checkCPU() { union w { int a; char b; }c; c.a = 1; return (c.b == ...

  10. ngRoute 路由

    做单页面应用多是通过不同的url来识别出不同的页面展现的. angularjs 为我们提供一个封装好的ngRoute工具 简单介绍用法 : <div ng-view></div> ...