当前位置: 首页 > article >正文

A. Weird Sum - 思维

题面

分析

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

代码
#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();
    }
}

http://www.kler.cn/a/144432.html

相关文章:

  • 【AI认证笔记】NO.2人工智能的发展
  • 字符串函数
  • 绿色能源守护者:光伏运维无人机
  • C++初阶 | [六] 模板初阶
  • 02 _ 架构分层:我们为什么一定要这么做?
  • idea git将某个分支内的commit合并到其他分支
  • 汽车电子 -- 车载ADAS
  • macos安装小软件 cmake
  • 6 个有效且可用的顶级 Android 数据恢复工具
  • 【深度学习】P1 数据缺失值预处理
  • 【Linux】Linux权限管理
  • 最新AI创作系统ChatGPT系统运营源码,支持GPT-4图片对话能力,上传图片并识图理解对话,支持DALL-E3文生图
  • 深度学习+不良身体姿势检测+警报系统+代码+部署(姿态识别矫正系统)
  • 【分布式】分布式事务及其解决方案
  • JAVA 面向对象编程
  • Vue中项目进行文件压缩与解压缩 (接口返回文件的url压缩包前端解析并展示出来,保存的时候在压缩后放到接口入参进行保存)
  • C语言 移位操作符
  • 间接法加窗分析信号的功率谱
  • 【程序员的自我修养01】编译流程概述
  • 【Web】CmsEasy 漏洞复现