• codeforces 1028C Rectangles【思维】


    题目:戳这里

    题意:有n个矩阵,求一个点(保证存在)至少在n-1个点内。

    解题思路:因为矩阵与坐标轴平行,所以我们画图可以发现如果存在点满足条件,则这些点中一定有一个是矩阵的顶点。我们可以把所有顶点的横纵坐标分别存下来排序,左下角的最大两个横纵坐标与右上角的最小两个横纵坐标相互结合,一定有一个是答案。如果不明白可以看看1029C[戳这里],算是这题的一维简化版。

    附ac代码:

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #include <string>
     5 #include <vector>
     6 #include <map>
     7 #include <cmath>
     8 #include <iostream>
     9 using namespace std;
    10 typedef long long ll;
    11 const int maxn = 132674 + 10;
    12 int n;
    13 struct nod
    14 {
    15     int x;
    16     int y;
    17 
    18 }nua[maxn], nub[maxn];
    19 int l[maxn], r[maxn], u[maxn], d[maxn];
    20 void print(int lc, int dc)
    21 {
    22         int cnt = 0;
    23         for(int i = 1; i <= n; ++i)
    24         {
    25             if(lc >= nua[i].x && lc <= nub[i].x && dc >= nua[i].y && dc <= nub[i].y)
    26             {
    27                 ++cnt;
    28             }
    29         }
    30         if(cnt >= n - 1)
    31         {
    32             printf("%d %d
    ", lc, dc);
    33             exit(0);
    34         }
    35 }
    36 int main()
    37 {
    38 
    39     scanf("%d", &n);
    40     for(int i = 1; i <= n; ++i)
    41     {
    42         scanf("%d %d %d %d", &l[i], &d[i], &r[i], &u[i]);
    43         nua[i].x = l[i];
    44         nua[i].y = d[i];
    45         nub[i].x = r[i];
    46         nub[i].y = u[i];
    47     }
    48     sort(l + 1, l + 1 + n);
    49     sort(r + 1, r + 1 + n);
    50     sort(d + 1, d + 1 + n);
    51     sort(u + 1, u + 1 + n);
    52     for(int i = 1; i <= 2; ++i)
    53     {
    54         for(int j = n - 1; j <= n; ++j)
    55         {
    56             print(l[j], u[i]);
    57             print(r[i], d[j]);
    58         }
    59         for(int j = 1; j <= 2; ++j)
    60         {
    61             print(l[i], d[j]);
    62         }
    63     }
    64     for(int i = n - 1; i <= n; ++i)
    65     {
    66         for(int j = n - 1; j <= n; ++j)
    67         {
    68             print(r[i], u[i]);
    69         }
    70     }
    71     return 0;
    72 }
    View Code
  • 相关阅读:
    webstorm快捷键大全
    Js的reduce()方法
    利用 c# linq 实现多个数据库的联合查询
    微信小程序支付接入注意点
    ubuntu所有php扩展php-7.0扩展列表
    ubuntu 16.04 php 安装curl方法
    Ubuntu下配置Apache开启HTTPS
    Mac下如何用SSH连接远程Linux服务器及Linux一些常用操作命令,更新中.....
    Mac下如何用SSH连接远程Linux服务器
    C#的dapper使用
  • 原文地址:https://www.cnblogs.com/zmin/p/9591873.html
Copyright © 2020-2023  润新知