zoukankan      html  css  js  c++  java
  • C. Connect Three Round #528 (Div. 2)【曼哈顿距离】

    一、题面

    题目链接

    二、分析

    这题的关键是要确定一个点是从三个点出发的交汇点,其他的只要结合曼哈顿距离的定义即可明白。因为是三个点,这个交汇点的坐标分别对应的就是x,y值的中值。然后一个小技巧就是曼哈顿距离的输出,两种情况对应两种while循环,等于的情况刚好退出循环。

    三、AC代码

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 int X[4], Y[4];
     6 set<pair<int, int> > Ans;
     7 
     8 void Print(int x, int y, int xt, int yt)
     9 {
    10     while(x < xt)
    11     {
    12         x++;
    13         Ans.insert(make_pair(x, y));
    14     }
    15     while(x > xt)
    16     {
    17         x--;
    18         Ans.insert(make_pair(x, y));
    19     }
    20     while(y > yt)
    21     {
    22         y--;
    23         Ans.insert(make_pair(xt, y));
    24     }
    25     while(y < yt)
    26     {
    27         y++;
    28         Ans.insert(make_pair(xt, y));
    29     }
    30 }
    31 
    32 int main()
    33 {
    34     //freopen("input.txt", "r", stdin);
    35     while(scanf("%d %d", &X[0], &Y[0])!=EOF)
    36     {
    37         int ans;
    38         int dx[4], dy[4];
    39         for(int i = 1; i < 3; i++)
    40         {
    41             scanf("%d %d", &X[i], &Y[i]);
    42         }
    43         memcpy(dx, X, sizeof(X));
    44         memcpy(dy, Y, sizeof(Y));
    45         sort(dx, dx+3);
    46         sort(dy, dy+3);
    47         for(int i = 0; i < 3; i++)
    48         {
    49             Ans.insert(make_pair(X[i], Y[i]));
    50             Print(X[i], Y[i], dx[1], dy[1]);
    51         }
    52         printf("%d
    ", Ans.size());
    53         for(auto itr = Ans.begin(); itr != Ans.end(); itr++)
    54         {
    55             printf("%d %d
    ", itr->first, itr->second);
    56         }
    57     }
    58     return 0;
    59 }
    View Code
  • 相关阅读:
    JavaScript基础
    Dao的扩展
    错题解析
    实现windows程序的数据绑定
    C#第三章
    第二章
    初始windows程序
    使用ADO.NET查询和操作数据
    使用ADO.NET访问数据库
    4.计算机层次与编程语言
  • 原文地址:https://www.cnblogs.com/dybala21/p/10171230.html
Copyright © 2011-2022 走看看