HDU 5964 (平面几何)

来源:互联网 发布:贵州大数据如何登录 编辑:程序博客网 时间:2024/04/29 17:00

题目链接:点击这里

这里写图片描述
trick:卡常数卡的蛋疼~~

#include <bits/stdc++.h>#define Clear(x,y) memset (x,y,sizeof(x))#define FOR(a,b,c) for (int a = b; a <= c; a++)#define REP(a,b,c) for (int a = b; a >= c; a--)#define fi first#define se second#define pii pair<int, int>#define pli pair<long long, int>#define pb push_back#define mod 1000000007using namespace std;#define maxn 2022#define maxm maxn*maxntemplate <class T>inline bool scan (T &ret) {    char c;    int sgn;    if (c = getchar(), c == EOF) return 0; //EOF    while (c != '-' && (c < '0' || c > '9') ) c = getchar();    sgn = (c == '-') ? -1 : 1;    ret = (c == '-') ? 0 : (c - '0');    while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');    ret *= sgn;    return 1;}long long a, b, c, d;int n;long long tmp, gg;long long f (long long x, long long y) {    return a*c*x*x+b*d*y*y+gg*x*y;}int main () {    //freopen ("more.in", "r", stdin);    while (scanf ("%lld%lld%lld%lld", &a, &b, &c, &d) == 4) {        gg = a*d+b*c;        tmp = a*d-b*c;        long long Max = 0, Min = 1e17;         scanf ("%d", &n);        for (int i = 1; i <= n; i++) {            int x, y; scan (x), scan (y);             long long cur = f (x, y);            Max = max (cur, Max);            Min = min (cur, Min);        }        double ans = (1.0*Max-Min)/tmp; ans = fabs (ans);        printf ("%lld\n", (long long) (ans+0.5));    }    return 0;}
0 0