HLJUOJ1181(数学)

来源:互联网 发布:appstore代充淘宝 编辑:程序博客网 时间:2024/05/18 03:30

解题思路:

求最小的正方形把所有坐标全部囊括。寻找x坐标差值和y坐标差值最大的值,取其平方即可。由于坐标太大,坐标不能开数组存储。最后的平方操作要开成long long防止溢出。


完整代码:

#include <functional>#include <algorithm>#include <iostream>#include <fstream>#include <sstream>#include <iomanip>#include <numeric>#include <cstring>#include <climits>#include <cassert>#include <complex>#include <cstdio>#include <string>#include <vector>#include <bitset>#include <queue>#include <stack>#include <cmath>#include <ctime>#include <list>#include <set>#include <map>using namespace std;#pragma comment(linker, "/STACK:102400000,102400000")typedef long long LL;typedef double DB;typedef unsigned uint;typedef unsigned long long uLL;/** Constant List .. **/ //{const int MOD = int(1e9)+7;const int INF = 0x3f3f3f3f;const LL INFF = 0x3f3f3f3f3f3f3f3fLL;const DB EPS = 1e-9;const DB OO = 1e20;const DB PI = acos(-1.0); //M_PI;int main(){    #ifdef DoubleQ    freopen("in.txt","r",stdin);    #endif    std::ios::sync_with_stdio(false);    std::cin.tie(0);    int n;    while(cin >> n)    {        int a , b;        int minx = INF , maxx = -INF;        int miny = INF , maxy = -INF;        for(int i = 0 ; i < n ; i ++)        {            cin >> a >> b;            minx = min(minx , a);            maxx = max(maxx , a);            miny = min(miny , b);            maxy = max(maxy , b);        }        int k;        int k1 = maxx - minx;        int k2 = maxy - miny;        k = max(k1 , k2);        cout << (LL)k * k << endl;    }}


0 0
原创粉丝点击