关于极限小数据!!!

商汤科技近日推出的 SenseVideo 能够对视频监控中的对象进行识别与分析,包括行人检测等。在行人检测问题中,最重要的就是对行人移动的检测。由于往往是在视频监控数据中检测行人,我们将图像上的行人抽象为二维平面上若干个的点。那么,行人的移动就相当于二维平面上的变换。

在这道题中,我们将行人的移动过程抽象为 平移,有两个 移动参数:d_xd
​x
​​ 和 d_yd
​y
​​ 。每次行人的移动过程会将行人对应的所有点全部平移,对于平移前的点 (x, y)(x,y),平移后的坐标为 (x + d_x, y + d_y)(x+d
​x
​​ ,y+d
​y
​​ )。

我们现在已知一个行人对应着 nn 个点,坐标分别为 (x_1,y_1),(x_2,y_2)\ldots (x_n,y_n)(x
​1
​​ ,y
​1
​​ ),(x
​2
​​ ,y
​2
​​ )…(x
​n
​​ ,y
​n
​​ ),平移后的坐标分别为 (x_1’,y_1’),(x_2’,y_2’)\ldots (x_n’,y_n’)(x
​1
​′
​​ ,y
​1
​′
​​ ),(x
​2
​′
​​ ,y
​2
​′
​​ )…(x
​n
​′
​​ ,y
​n
​′
​​ )。

很显然,通过平移前后的正确坐标,很容易算出行人的移动参数,但问题没有这么简单。由于行人实际的移动并不会完全按照我们预想的方式进行,因此,会有一部分平移后的坐标结果不正确,但可以确保 结果不正确的坐标数量严格不超过一半。

你现在作为商汤科技的实习生,接手了这个有趣的挑战:算出行人的移动参数。如果不存在一组合法的移动参数,则随意输出一组参数;如果有多种合法的移动参数,输出其中任意一组合法的即可。

输入格式

第一行输入一个整数 n(1 \le n \le 10^5)n(1≤n≤10
​5
​​ ),表示行人抽象出的点数。

接下来 nn 行,每行 44 个 整数。前两个数表示平移前的坐标,后两个数表示平移后的坐标。

坐标范围在 -10^9−10
​9
​​ 到 10^910
​9
​​ 之间。

输出格式

一行两个整数,d_xd
​x
​​ 和 d_yd
​y
​​ ,表示行人的移动参数。

样例输入

5
0 0 1 1
0 1 1 2
1 0 2 1
1 1 0 0
2 1 1 0
样例输出

1 1


dalao们已经发现了,这是一道水的不能水的题 直接排序 扫一遍
but 我为啥做了100min呢?
看完我程序就知道了

#include<bits/stdc++.h>
using namespace std;
struct lll{
    long long x,y;
}a[100005];
bool cmp(lll a,lll b)
{
    if(a.x<b.x) return 1;
    else if(a.x==b.x&&a.y<b.y) return 1;
    else return 0; 
}
int n,t,lx,sstd,ly,cnt=1;
int main()
{
    freopen("tst.txt","r",stdin);
    freopen("a.txt","w",stdout);
    cin>>n;
    sstd=n/2;
    if(n%2==1) sstd++;  
    for(int i=1,s,b,c,d;i<=n;i++)
    {
        cin>>s>>b>>c>>d;
        t++;
        a[t].x=(c-s);a[t].y=(d-b);
    }
    sort(a+1,a+1+t,cmp);
    lx=a[1].x;ly=a[1].y;
    for(int i=2;i<=t;i++)
    {
        if(a[i].x==lx&&a[i].y==ly) cnt++;
        else {lx=a[i].x;ly=a[i].y;cnt=1;}
        if(cnt>=sstd){
            cout<<lx<<" "<<ly<<endl;
            break;
        }
        if(i==t) cout<<lx<<" "<<ly<<endl;
    }
    if(n==1) cout<<lx<<" "<<ly<<endl;
    cout<<sstd<<" "<<n<<endl;
    for(int i=1;i<=t;i++)
    {
        cout<<a[i].x<<" "<<a[i].y<<endl;
    }
}
/*
9
0 0 2 3
0 1 1 0
0 2 2 5
1 0 3 3
1 1 2 0
1 2 3 5
2 0 4 3
2 1 4 4
2 2 213980 128390

*/

无视文件输出 那么我的问题是啥 看这里

if(n==1) cout<<lx<<" "<<ly<<endl;

由于我的循环从2起 所以n==1 就挂了 我因此写了个confirm的程序2333
然后调了100 min 233 本该有复赛资格的我23333 bye my 监守自盗233

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值