题面

题解

  1. 我们可以发现,通过行与行(上下)交换,对列无影响,列与列(左右)交换,对行无影响 。也就是说行与列的交换是相互独立的,那么求总的交换次数最小就可以变成求行与列的最小,然后相加即可
  1. 那我们在求行的时候(上下)交换,就可以将每一行看成一个整体,也就是一个数,同样列也一样,这样就变成了环形纸牌均分问题(注意:这里的a指的是每一行的和)
    我们只需要规定一个方向(图中逆时针),x1就表示a1给an多少个,当然x1可以是正数负数或零,负数就表示an给a1的,那么我们现在就是求|x1|+|x2|+|x3|+…+|x4|+|x5|的最小值,就是最小的交换次数
  1. 环形均分纸牌问题证明:

    最终经过推导,我们将其转化为经典的仓库选址问题,最优解就是中位数

代码

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>using namespace std;
typedef long long ll;
const int N = 1e5 + 10;ll x[N], y[N], s[N], c[N];ll slove(ll n, ll a[]) {for (int i = 1; i <= n; i++) s[i] = s[i - 1] + a[i];if (s[n] % n) return -1;ll avg = s[n] / n;c[1] = 0;for (int i = 2; i <= n; i++) {c[i] = s[i - 1] - (i - 1) * avg;}sort(c + 1, c + 1 + n);ll res = 0;for (int i = 1; i <= n; i++) res += abs(c[i] - c[(n + 1) / 2]);return res;}int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);ll n, m, t;cin >> n >> m >> t;while (t--) {int a, b;cin >> a >> b;x[a]++, y[b]++;}ll row = slove(n, x);ll col = slove(m, y);if (row != -1 && col != -1) cout << "both " << row + col << endl;else if (row != -1) cout << "row " << row << endl;else if (col != -1) cout << "column " << col << endl;else cout << "impossible" << endl;return 0;
}

算法竞赛进阶指南---0x05(排序)七夕祭相关推荐

  1. 中位数--《算法竞赛进阶指南》(货仓选址和七夕祭问题详解)

    中位数 今天又和大家见面了啦~ 依旧是 <算法竞赛进阶指南>的学习哦~ 中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本.种群或概 ...

  2. AcWing 122. 糖果传递【贪心】【《算法竞赛进阶指南》,微软面试题 , HAOI2008】

    AcWing 122. 糖果传递 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 AcWing 122. 糖果传递 进阶题目 AcWing 105 ...

  3. 《算法竞赛进阶指南》打卡-基本算法-AcWing 93. 递归实现组合型枚举:递归与递推、dfs、状态压缩

    文章目录 题目解答 题目链接 题目解答 分析: 此题和笔者另一篇博文很像,只不过是限定了个数.<算法竞赛进阶指南>打卡-基本算法-AcWing 92. 递归实现指数型枚举:递推与递归.二进 ...

  4. 《算法竞赛进阶指南》数论篇

    <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSGS <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSG ...

  5. 《算法竞赛进阶指南(by 李煜东)》习题题解 集合

    又是笔者给自己挖的大坑. 这里是李煜东所著<算法竞赛进阶指南(by 李煜东)>的习题题解集合. 有任何错误请在对应文章下反馈或联系 nicest1919@163.com ,谢谢 qwq 从 ...

  6. CH5202 自然数拆分Lunatic版(算法竞赛进阶指南,完全背包)

    算法竞赛进阶指南,278页,完全背包 本题要点: 1.把完全背包的代码改改即可.常规的完全背包: 有n个物品,每个物品的体积是v[i], 价值是w[i], 求装到大小为m的大背包,能获得的最大价值(每 ...

  7. 金字塔(算法竞赛进阶指南)

    虽然探索金字塔是极其老套的剧情,但是有一队探险家还是到了某金字塔脚下. 经过多年的研究,科学家对这座金字塔的内部结构已经有所了解. 首先,金字塔由若干房间组成,房间之间连有通道. 如果把房间看作节点, ...

  8. 算法竞赛进阶指南 骑士放置

    4: 最大独立集 :选出最多的点,使得选出的点之间没有边. 求最大独立集:选出最小的点可以破坏所有的边 <==>最小点覆盖 <==>最大匹配数. 假设最大匹配数为m,共有n个点 ...

  9. 算法竞赛进阶指南 萌新入门!

    算法竞赛进阶指南 文章目录 算法竞赛进阶指南 前言 一.介绍本书 二.如何阅读本书 三.总结 **笔记思路和结构 ** 算法竞赛进阶指南 这篇文章就简单的写一下吧! 前言 ​ 作为一个想要入坑的算法的 ...

最新文章

  1. Python ATM
  2. 中文的csv文件python读取编码问题
  3. 2013\National _C_C++_B\2.连续奇数和
  4. 机器学习第十篇:如何评价模型效果评估
  5. ZooKeeper的十二连问,你顶得了嘛?
  6. 一文看懂Microsoft Azure的十年变迁
  7. mysql infile local,MySQL:启用LOAD DATA LOCAL INFILE
  8. [Ext JS 4] 动态加载
  9. div添加一个点击事件(绑定点击事件)
  10. cube云原生机器学习平台-架构(三)
  11. oracle数据库表用序列实现主键自增长
  12. 爬虫小白第一篇 西刺代理
  13. ​元宇宙与AI热度不减,Gartner 2023 年十大战略技术趋势完整解析
  14. UVA11991 Easy Problem from Rujia Liu?(第K个V的位置)
  15. html 360登录自动填写,怎么让360安全浏览器记住以前登陆过的帐号和密码,每次都填很麻烦...
  16. 如何解除计算机方向键问题,电脑键盘方向键错乱怎么处理
  17. 用bmfont工具生成.fnt文件,但合成图片会分开问题
  18. Android 优化开机启动
  19. 软考-法律法规和标准化
  20. 用Quartus实现2-4线,3-8线,4-16线译码器及控制七段数码管

热门文章

  1. 前端【vue】实现文档在线预览功能,在线预览pdf、word、xls、ppt等office文件
  2. Linux安装MariaDB10.4
  3. 中望CAD的lisp编辑器_巧用中望CAD2017自定义工具选项板
  4. 预测学习应用于机器人之Unsupervised Learning for Physical Interaction through Video Prediction
  5. ThinkPHP6使用七牛云存储,不改代码,改下配置就上七牛
  6. C++可视化界面EasyX图形库的安装以及简单使用
  7. Linux CPU频率控制
  8. 计算机二级考试中Excel函数如何应用,计算机二级考试excle常用函数【计算机二级ms office中excel中必考函数有哪些?】...
  9. fill()的使用方法
  10. 程序设计基础实训报告