第三场 H题的一些疑问

将坐标先按照y排序,y相同的再按照x排序,找到中间的两个y坐标,如果两个y不一样,那么就直接构造这样一条在两个y之间的直线
如果两个y一样,构造一条在y+1,y-1之间的直线,同时直线经过这两个点的中点

这样为什么不对呢?

#include <iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 1e5 + 5;
const int inf = 0x3f3f3f3f;
struct p{
    int x, y;
    bool operator<(const p &o)const{
        if(y==o.y) return x<o.x;
        return y < o.y;
    }
}a[N];
int n;
int main()
{
    int t;
    scanf("%d", &t);
    while (t--)
    {
        scanf("%d", &n);
        for (int i = 1; i <= n; i++)
            scanf("%d%d", &a[i].x, &a[i].y);
        sort(a+ 1, a + n + 1);
        if (a[n / 2].y != a[n / 2 + 1].y)
        {
            printf("%d %d %d %d\n", -100000000, a[n / 2].y, 100000000, a[n / 2 + 1].y);
        }
        else
        {
            int x1 = a[n / 2].x, x2 = a[n / 2 + 1].x;
            printf("%d %d %d %d\n", -100000000, a[n / 2].y-1, x1+x2+100000000, a[n / 2 + 1].y+1);
        }
    }
    return 0;
}

全部评论
点赞 回复 分享
发布于 2019-07-25 19:24
哇,谢谢你
点赞 回复 分享
发布于 2019-07-25 19:28
H题的精度有毒,y坐标1e10-1不行,2e5+2也不行,偏偏998999999就可以,这个special judge根本不special。比赛的时候卡了三十多分钟WA,最后改了一下精度居然A了。
点赞 回复 分享
发布于 2019-07-26 14:07

相关推荐

牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务