A. Weird Sum - 思维

题面

分析

所有点的曼哈顿距离可以分解成所有点的任意横坐标之间的距离,以及所有任意纵坐标的距离,对于处理所有点的距离,可以利用线段的思想,将所有点排序,第一个点很显然不用处理,第二个点需要求的距离有第二个点到第一个点的距离,第三个点需要处理到第一个点的距离,以及到第二个点的距离。

代码
cpp 复制代码
#include <bits/stdc++.h>

#define int long long

using namespace std;

const int N = 1e5 + 10;

vector<int> a[N], b[N];

void solve() {
    int n, m;
    cin >> n >> m;
    for(int i = 1; i <= 1e5; i ++) a[i].clear(), b[i].clear();
    for(int i = 0; i < n; i ++) {
        for(int j = 0; j < m; j ++) {
            int x;
            cin >> x;
            a[x].push_back(i);
            b[x].push_back(j);
        }
    }
    int ans = 0;
    for(int i = 1; i <= 1e5; i ++) {
        sort(a[i].begin(), a[i].end());
        sort(b[i].begin(), b[i].end());
        int s = 0;
        for(int j = 0; j < a[i].size(); j ++) {
            ans += j * a[i][j] - s;
            s += a[i][j];
        }
        s = 0;
        for(int j = 0; j < b[i].size(); j ++) {
            ans += j * b[i][j] - s;
            s += b[i][j];
        }
    }
    cout << ans << "\n";
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    T = 1;//cin >> T;
    while(T --) {
        solve();
    }
}
相关推荐
头发还没掉光光34 分钟前
Linux网络之IP协议
linux·运维·网络·c++·tcp/ip
充值修改昵称2 小时前
数据结构基础:B树磁盘IO优化的数据结构艺术
数据结构·b树·python·算法
燃于AC之乐2 小时前
深入解剖STL Vector:从底层原理到核心接口的灵活运用
开发语言·c++·迭代器·stl·vector·源码分析·底层原理
程序员-King.8 小时前
day158—回溯—全排列(LeetCode-46)
算法·leetcode·深度优先·回溯·递归
优雅的潮叭8 小时前
c++ 学习笔记之 chrono库
c++·笔记·学习
星火开发设计8 小时前
C++ 数组:一维数组的定义、遍历与常见操作
java·开发语言·数据结构·c++·学习·数组·知识
月挽清风9 小时前
代码随想录第七天:
数据结构·c++·算法
小O的算法实验室9 小时前
2026年AEI SCI1区TOP,基于改进 IRRT*-D* 算法的森林火灾救援场景下直升机轨迹规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
小郭团队9 小时前
2_1_七段式SVPWM (经典算法)算法理论与 MATLAB 实现详解
嵌入式硬件·算法·硬件架构·arm·dsp开发
充值修改昵称10 小时前
数据结构基础:从二叉树到多叉树数据结构进阶
数据结构·python·算法