• [去哪儿]裁减网格纸


    时间限制:1秒 空间限制:32768K 热度指数:13983
    本题知识点: 贪心

    题目描述

    度度熊有一张网格纸,但是纸上有一些点过的点,每个点都在网格点上,若把网格看成一个坐标轴平行于网格线的坐标系的话,每个点可以用一对整数x,y来表示。度度熊必须沿着网格线画一个正方形,使所有点在正方形的内部或者边界。然后把这个正方形剪下来。问剪掉正方形的最小面积是多少。
    输入描述:
    第一行一个数n(2≤n≤1000)表示点数,接下来每行一对整数x
    i
    ,y
    i
    (-1e9<=x
    i
    ,y
    i
    <=1e9)表示网格上的点

    输出描述:
    一行输出最小面积

    输入例子:
    2
    0 0
    0 3

    输出例子:
    9
    思路:把所有的点都减在一个正方形的格子里,所以只要判断所有点的横坐标和纵坐标的最小值和最大值。比较下横坐标和纵坐标各自最大值和最小值的差,选择差最大的作为正方形的边长即可求得最小的正方形
     1 #include <iostream>
     2 #include <vector>
     3 
     4 using namespace std;
     5 
     6 int getlen(vector<int>  vec)
     7     {
     8         int max = vec[0];
     9         int min = vec[0];
    10         int n=vec.size();
    11     for (int i = 1;i < n;i++)
    12     {
    13         if (max < vec[i])
    14         {
    15             max = vec[i];
    16         }
    17         if(min> vec[i])
    18         {
    19             min = vec[i];
    20         }
    21     }
    22     return max - min;
    23     
    24 }
    25 
    26 int main()
    27     {
    28     
    29        int n,x,y;
    30        while(cin>>n)
    31            {
    32               vector<int> width;
    33               vector<int> heigh;
    34            
    35               while(n--)
    36              {
    37               cin>>x>>y;
    38               width.push_back(x);
    39               heigh.push_back(y);
    40               }
    41            cout << max(getlen(width), getlen(heigh))*max(getlen(width), getlen(heigh))<<endl;
    42        }
    43     return 0;
    44       
    45 }
  • 相关阅读:
    优秀大整数
    洛谷—— P3908 异或之和
    洛谷—— P1869 愚蠢的组合数
    洛谷—— P1680 奇怪的分组
    洛谷—— P1609 最小回文数
    Something I like
    数学相关
    新博客测试中~
    P3369 【模板】普通平衡树
    2017 11.6 NOIP模拟赛
  • 原文地址:https://www.cnblogs.com/bxyan/p/6944509.html
Copyright © 2020-2023  润新知