zoukankan      html  css  js  c++  java
  • 叉积(POJ

     题目链接:https://cn.vjudge.net/contest/276358#problem/A

    题目大意:给你一个矩阵的左上角和右下角,然后n个竖杠,这n个竖杠将这个矩阵分成n+1个方块,给你m个点的坐标,问你每个区域的点的个数。

    具体思路:叉积,如果说叉积是小于等于0的,就证明这个点在这个竖杠的左边,就把这个点归入到这个竖杠左边的区域就可以了。

    AC代码:

     1 #include<iostream>
     2 #include<cmath>
     3 #include<stack>
     4 #include<queue>
     5 #include<stdio.h>
     6 #include<string>
     7 #include<cstring>
     8 #include<algorithm>
     9 using namespace std;
    10 # define inf 0x3f3f3f3f
    11 # define ll long long
    12 const int maxn = 2e4+100;
    13 struct node
    14 {
    15     int xtop,xbot;
    16 } q[maxn];
    17 int ans[maxn];
    18 int cal(int x2,int y2,int x1,int y1)
    19 {
    20     return x1*y2-x2*y1;
    21 }
    22 int main()
    23 {
    24     int n,m,x1,y1,x2,y2;
    25     while(~scanf("%d",&n)&&n)
    26     {
    27         memset(ans,0,sizeof(ans));
    28         scanf("%d %d %d %d %d",&m,&x1,&y1,&x2,&y2);
    29         for(int i=0; i<n; i++)
    30         {
    31             scanf("%d %d",&q[i].xtop,&q[i].xbot);
    32         }
    33         int x,y;
    34         for(int i=1; i<=m; i++)
    35         {
    36             scanf("%d %d",&x,&y);
    37             int j;
    38             for( j=0; j<n; j++)
    39             {
    40                 if(cal(q[j].xtop-q[j].xbot,y1-y2,x-q[j].xbot,y-y2)<=0)
    41                     break;
    42             }
    43             ans[j]++;
    44         }
    45         for(int i=0; i<=n; i++)
    46         {
    47             printf("%d: %d
    ",i,ans[i]);
    48         }
    49         printf("
    ");
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    Redis
    双向绑定篇
    Vue篇1
    css篇-页面布局-三栏布局
    css篇-简化版
    Promise篇
    几道JS代码手写面试题
    安全篇
    Vue篇
    跨域篇--JSONP原理
  • 原文地址:https://www.cnblogs.com/letlifestop/p/10281122.html
Copyright © 2011-2022 走看看