POJ2138 简单的叉积应用

来源:互联网 发布:linux查看运行的进程 编辑:程序博客网 时间:2024/05/24 01:40

题意:一个矩形箱子,左上角与右下角的坐标给出,里面有n块板把箱子里的空间分隔成许多个分区,给出这些板在上边的x坐标、下边的x坐标,以及一堆玩具的坐标,求这些分区里的玩具数目。

以板的上端点为p0  下端点为p1   玩具的坐标为p2    叉积小于0在当前挡板的左边   num【i】++循环结束   否者在右边  从左到右收下去  最后特判一下就可以了

从头收到尾反正不会超时    后来做完了后看别人是二分写的  比从头到尾收效率高  可惜本人水平有限啊   不怎么会写二分

下面看代码

#include<cstdio>#include<cstring>const int maxn = 5005;int num[maxn];struct Point{    int x,y;}toys[maxn];typedef struct Point point;struct Line{    point a,b;}line[maxn];int xmult(point p1,point p2,point p0){    return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);}int main(){    int n,m,x1,x2,y1,y2;    while((scanf("%d",&n),n)!=0)    {        memset(num,0,sizeof(num));        scanf("%d%d%d%d%d",&m,&x1,&y1,&x2,&y2);        for(int i = 0; i < n; i++)        {            line[i].a.y=y1;            line[i].b.y=y2;        }        for(int i = 0; i < n; i++)            scanf("%d%d",&line[i].a.x,&line[i].b.x);        for(int i = 0; i < m; i++)            scanf("%d%d",&toys[i].x,&toys[i].y);        for(int i = 0; i < m; i++)            for(int j = 0; j < n; j++)            {            int ans = xmult(line[j].b,toys[i],line[j].a);            if(ans < 0){num[j]++;break;}//玩具在当前挡板的左边            if(ans > 0&&j == n-1){num[j+1]++;break;}//最后j=n-1时特判            }        for(int i = 0;i <= n;i++)        printf("%d: %d\n",i,num[i]);        printf("\n");    }    return 0;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 信而富注册手机号码不用了怎么办 信而富本时段额度已放完怎么办 知道qq号密码账号忘了怎么办 扣扣绑定的手机号被别人用了怎么办 我的手机号被别人绑定了快手怎么办 微信密码忘记了没绑定手机号怎么办 扣扣绑定银行卡忘记密码了怎么办 扣扣忘记密码了又换手机号了怎么办 微信订阅号里有删除后的信息怎么办 申请微信公众号邮箱已被占用怎么办 公众号验证没有对公账户怎么办 qq密码忘记了怎么办手机绑定没有 我的扣扣怎么申诉都找不回来怎么办 装修装的不好又没有签合同怎么办 日本免税的零食不小心拆了怎么办 闲鱼同意买家退货了买家不退怎么办 手机里淘宝钱付了不发货怎么办 百度云下载手机储存空间不足怎么办 苹果8的照片储存空间满了怎么办 为什么下载的软件已停止运行怎么办 苹果手机刷机忘记注册邮箱了怎么办 刺激战场模拟器注册已达上限怎么办 用模拟器玩刺激战场注册上限怎么办 微信解除实名认证后退款怎么办 苹果为什么qq收消息有延迟怎么办 qq忘记密码手机号也换了怎么办 扣扣空间圈人时照片服务错误怎么办 删了qq好友怎么找回来怎么办 苹果5s语音控制打开了怎么办 lv迷你水桶包肩带长了怎么办 在香港买个lv包包过海关怎么办 国际快递手表被海关查应该怎么办 把档案放到人才市场后报到证怎么办 皮表带带久了有异味怎么办 英语中用词不当和拼写错误怎么办 爬楼梯的购物车车轮坏了怎么办? 帮别人买东西不给我钱怎么办 老师念错名字有同学指出来你怎么办 老公婚前买的房子婆婆想霸占怎么办 我想查我的基金收益情况怎么办 儿童票买好了但大人退票了怎么办