zoukankan      html  css  js  c++  java
  • D. Points in rectangle

    D. Points in rectangle

    单点时限: 2.0 sec

    内存限制: 512 MB

    在二维平面中有一个矩形,它的四个坐标点分别为(0,a),(a,0),(n,na),(na,n)。你现在有m个点,现在你想知道有多少个点是在这个矩形内的(边上的也算)。

    输入格式

    第一行输入n,a(1a<n103)
    第二行一个正整数m(1m103),代表你拥有的点的个数,接下来m行,每行一个点的坐标xi,yi(1xi,yi103)

    输出格式

    第一行输出在矩形内的点的个数,然后输出在矩形内点的坐标,横坐标大的优先,如果横坐标相同,则纵坐标大的优先。如果没有,输出1

    样例

    input
    6 1
    5
    1 2
    1 3
    2 3
    3 4
    4 5
    
    output
    4
    4 5
    3 4
    2 3
    1 2
    
    题目分类::计算几何,,四条边的方程我们都可以求出,,然后剩下就是判断了
    AC代码:
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<vector>
    using namespace std;
    struct stu{
        int x,y;
    }e;
    int n,a;
    vector<stu>ve;
    
    bool cmp(stu aa,stu bb){
        if(aa.x!=bb.x) return aa.x>bb.x;
        return aa.y>bb.y; 
    }
    int main()
    {
        cin>>n>>a;
        int t;
        cin>>t;
        int x1,y1;
        for(int i=0;i<t;i++){
            cin>>e.x>>e.y;
            if(e.x+e.y>=a&&e.x+e.y<=2*n-a&&e.x-e.y<=a&&e.y-e.x<=a)//判断条件
                ve.push_back({e});
        }
        if(ve.size()==0)
            puts("-1");
        else 
        { 
            cout<<ve.size()<<endl;
            sort(ve.begin(),ve.end(),cmp);
            for(int i=0;i<ve.size();i++)
                cout<<ve[i].x<<" "<<ve[i].y<<endl;    
        }
        return 0;
    }
  • 相关阅读:
    js验证表单大全
    JavaScript验证表单大全
    ASP.NET(c#)操作cookie、session、cache工具类
    AIX查看硬件配置
    SAP* DDIC密码丢失如何处理
    如何学好SAP BASIS
    SAP STMS 传输系统配置
    BOM展开实例
    免安装Oracle客户端使用PL/SQL连接Oracle
    入门培训SAP操作手册 之前台操作
  • 原文地址:https://www.cnblogs.com/Accepting/p/11258725.html
Copyright © 2011-2022 走看看