Parallelogram is Back

codeforces round 388 div 2 B题
题意:给平行四边形三个点判断出第四个点在哪
设给的三个点分别为A、B、C,稍微画下图发现 A、B、C是可能的D1、D2、D3点构成的三角形的中点,于是可以用中点坐标公式做,测试数据好像很善良,想了一下会不会存在奇数除以2之后坐标不再是整数的问题,指导推导出公式发现,各坐标都一定是整数,这题真的很善良,想了下会不会用重合的点来阴人,那就用集合存吧,后来发现第四个点一定存在三种不同的情况,这题善良得不行。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
using namespace std;
int main()
{
    int xa,xb,xc,ya,yb,yc,x1,x2,x3,y1,y2,y3;
    scanf("%d %d",&xa,&ya);
    scanf("%d %d",&xb,&yb);
    scanf("%d %d",&xc,&yc);
    x1 = xc-xa+xb;
    x2 = xa-xb+xc;
    x3 = xb-xc+xa;
    y1 = yc-ya+yb;
    y2 = ya-yb+yc;
    y3 = yb-yc+ya;
    set<pair<int,int> > v;
    v.insert(make_pair(x1,y1));
    v.insert(make_pair(x2,y2));
    v.insert(make_pair(x3,y3));
    printf("%d\n",v.size());
    set<pair<int,int> >::iterator it;
    for(it = v.begin();it != v.end();++it)
    printf("%d %d\n",(*it).first,(*it).second);

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值