【算法入门教育赛2】C.曼哈顿种类 C++题解与代码

比赛地址:https://www.starrycoding.com/contest/6

题目描述

牢 e e e知道在武汉有 n n n家自助店,第 i i i个自助店用坐标 ( x i , y i ) (x_i, y_i) (xi,yi)表示,因为武汉的街道都是互相垂直的,现在他想知道所有自助店之间的曼哈顿距离有多少种?

曼哈顿距离: ( x 1 , y 1 ) (x_1, y_1) (x1,y1)与 ( x 2 , y 2 ) (x_2, y_2) (x2,y2)的曼哈顿距离为: ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ |x_1 - x_2| + |y_1 - y_2| ∣x1−x2∣+∣y1−y2∣。

注意:可能有多个自助点在同一个坐标,那么它们之间的曼哈顿距离为 0 0 0。

输入格式

第一行一个整数 T T T表示测试用例个数。 ( 1 ≤ T ≤ 1000 ) (1 \le T \le 1000) (1≤T≤1000)

对于每组测试用例:

一行一个整数 n ( 2 ≤ n ≤ 1 0 3 ) n(2 \le n \le 10^3) n(2≤n≤103)。

接下来 n n n行,第 i i i行表示第 i i i个自助店的坐标 ( x i , y i ) , ( − 1 0 9 ≤ x i , y i ≤ 1 0 9 ) (x_i, y_i), (-10^9 \le x_i, y_i \le 10^9) (xi,yi),(−109≤xi,yi≤109)。

数据保证 ∑ n ≤ 1 0 3 \sum n \le 10^3 ∑n≤103。

输出格式

对于每组测试用例,输出一个整数表示答案。

输入样例1

text 复制代码
2
3
0 0
0 1
1 1
2
0 0
1 1

输出样例1

text 复制代码
2
1

解释

在样例 1 1 1中,共有 { 1 , 1 , 2 } \{1, 1, 2\} {1,1,2}三个曼哈顿距离,共 2 2 2种。

题解

枚举所有点对,计算其曼哈顿距离后放入 s e t set set中计算 s i z e size size,或放入数组中排序去重。

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const int N = 1e3 + 9;

ll x[N], y[N];

ll getabs(ll x) { return x < 0 ? -x : x; }

void solve()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; ++i)
        cin >> x[i] >> y[i];
    set<ll> st;
    for (int i = 1; i <= n; ++i)
        for (int j = i + 1; j <= n; ++j)
        {
            st.insert(getabs(x[i] - x[j]) + getabs(y[i] - y[j]));
        }
    cout << st.size() << '\n';
}

int main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int _;
    cin >> _;
    while (_--)
        solve();
    return 0;
}
相关推荐
AgentMaster28 分钟前
数据资产化落地难题:5款数据中台系统架构对比与实施记录
大数据·人工智能·算法
Logic10144 分钟前
C语言/数据结构动态规划题解:Kadane算法求最大子数组和——O(n)时间O(1)空间
c语言·数据结构·动态规划·贪心·时间复杂度·算法题·最大子数组和
鹿角片ljp1 小时前
从 Kimi Cyber Reasoning 学习网络安全推理数据集:从 Reasoning SFT 到安全 Agent 数据设计
数据结构·算法
.YM.Z1 小时前
C++——【继承】的底层逻辑与【多态】实现机制
c++·多态·继承
汉克老师2 小时前
GESP2026年9月认证C++三级( 第一部分选择题(1~7题)精讲
c++·gesp·小学生·学c++编程
雷✘2 小时前
C 程序从源文件到运行:预处理、编译、汇编、链接重定位与执行环境
c语言
residual_fan2 小时前
航空发动机故障诊断专用智能体(三):基于对比学习的时序特征区分方法
人工智能·算法·数据挖掘·数据分析
Logic1012 小时前
C语言/数据结构位运算题解:异或XOR找出数据表中的“独特编号“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
高亦真2 小时前
今天是学习嵌入式的第39天
linux·学习·算法
Omics Pro3 小时前
AI药物研发10原则!欧盟EMA×美国FDA
数据库·人工智能·算法·机器学习·自然语言处理