[ARC135D] Add to Square

news/2026/1/18 11:02:44/文章来源:https://www.cnblogs.com/zac2010/p/19497989

对网格 \(A\)黑白染色,黑色位置正负取反。这样操作就变为,左上右下加 \(x\),右上左下减 \(x\)


\(sx_i=\sum_{j=1}^m A_{i,j}\)\(sy_j=\sum_{i=1}^n A_{i,j}\)
容易发现,任意行列的和都与 \(A\) 相同的所有矩阵都是可达的。


接下来考虑怎么算出最小的最终矩阵 \(B\)
首先有:答案不小于 \(Sx=\sum_{i=1}^n |sx_i|\),也不小于 \(Sy=\sum_{j=1}^m |sy_j|\)

我们尝试证明答案能取到 \(\max(Sx,Sy)\) 这个下界。
\(sx_i\) 看做需要给行 \(i\) 分配 \(sx_i\) 的总权值,\(sy_j\) 同理。

  • 那么每次如果存在一个 \(sx_i\)\(sy_j\) 同号则在 \(B_{i,j}\) 算上 \(\min(|sx_i|,|sy_j|)\) 的贡献(正负符号取决于 \(sx,sy\))。
  • 如果不存在同号则操作一对 \(sx_{u}>0,sx_{v}<0\) 或一对 \(sy_u>0,sy_u<0\),直至所有 \(sx,sy\) 都为 \(0\)

上述过程可以理解为,操作一对 \(sx_i,sy_j\) 的时候,是给 \(Sx,Sy\) 都减去一个数。而开始操作两行/两列的时候,就等价于 \(Sx,Sy\) 中的一个已经减到 \(0\) 了(因为 \(\sum_{i=1}^n sx_i=\sum_{j=1}^m sy_j\)


点击查看代码
#include <bits/stdc++.h>
#define FL(i, a, b) for (int i = (a); i <= (b); ++i)
#define FR(i, a, b) for (int i = (a); i >= (b); --i)
using namespace std;
typedef long long ll;
const int N = 510;
int n, m;
ll sx[N], sy[N], B[N][N];
bool Work() {int px = 0, nx = 0;int py = 0, ny = 0;FL(i, 1, n) {if (sx[i] > 0) px = i;if (sx[i] < 0) nx = i;}FL(i, 1, m) {if (sy[i] > 0) py = i;if (sy[i] < 0) ny = i;}if (px && py) {ll t = min(sx[px], sy[py]);B[px][py] += t;sx[px] -= t, sy[py] -= t;return 1;}if (nx && ny) {ll t = max(sx[nx], sy[ny]);B[nx][ny] += t;sx[nx] -= t, sy[ny] -= t;return 1;}if (px && nx) {ll t = min(sx[px], -sx[nx]);B[px][1] += t, B[nx][1] -= t;sx[px] -= t, sx[nx] += t;return 1;}if (py && ny) {ll t = min(sy[py], -sy[ny]);B[1][py] += t, B[1][ny] -= t;sy[py] -= t, sy[ny] += t;return 1;}return 0;
}
int main() {scanf("%d %d", &n, &m);FL(i, 1, n) {FL(j, 1, m) {int w;scanf("%d", &w);if ((i + j) & 1)w = -w;sx[i] += w;sy[j] += w;}}ll Sx = 0, Sy = 0;FL(i, 1, n) {Sx += abs(sx[i]);}FL(i, 1, m) {Sy += abs(sy[i]);}while (Work());printf("%lld\n", max(Sx, Sy));FL(i, 1, n) {FL(j, 1, m) {if ((i + j) & 1)B[i][j] = -B[i][j];printf("%lld%c", B[i][j], " \n"[j == m]);}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1177902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yaml在嵌入式软件开发中的作用

在嵌入式软件开发领域,高效、可靠和可维护的代码是项目的核心目标。随着嵌入式系统的复杂度日益增加,开发团队需要更灵活的工具来管理配置、自动化流程和优化跨团队协作。 YAML(YAML Aint Markup Language)作为一种…

2026年出国留学机构排行榜:五家优选全面对比 - 速递信息

——文章最新发布时间:2026年1月 一、推荐背景与评价体系 在出国留学需求持续增长的背景下,权威榜单已成为学生和家长选择留学机构的重要参考依据。全球名校申请门槛不断提高,申请流程日趋复杂,留学机构的综合实力与行…

通过mathtype将公式插入word中

通过mathtype将公式插入word中利用mathtype配合word进行公式编辑,可以提高文档撰写效率。具体过程如下: 1.下载mathtype 通过百度网盘进行下载:https://pan.baidu.com/s/1qZFDtIg9Qou4gUjUQ86-UQ?pwd=jgv5 提取码:…

SAM1gptans

下面我会按“整体思路 → 关键数据结构含义 → 每个函数在干什么 → 正确性为什么成立 → 复杂度怎么分析/哪里我也卡住”的顺序,把这段代码尽可能还原成一道可理解的算法。先给一个一句话的总体概括: 把所有旋转状态…

2026智能马桶深度评测:希箭马桶,家庭如厕健康新标准 - charlieruizvin

希箭智能马桶核心产品详细推荐作为智能坐便器国家标准起草单位、十大智能卫浴品牌,希箭凭借12年技术沉淀与4大生产基地的制造实力,推出多款覆盖不同需求的智能马桶,以下为核心产品深度解析:旗舰级健康之选:希箭S2…

瞧瞧别人家的接口重试,那叫一个优雅!

前言 记得五年前的一个深夜,某个电商平台的订单退款接口突发异常,因为银行系统网络抖动,退款请求连续失败。 原本技术团队只是想“好心重试几次”,结果开发小哥写的重试代码竟疯狂调用了银行的退款接口 82次! 最终…

完整教程:算法王冠上的明珠——动态规划之路径问题(第一篇)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

论文查重前必备的5款AIGC检测工具盘点 - 还在做实验的师兄

2026年几乎所有高校都要求进行AIGC检测,AI率超过20%就会被标记。提交学校前一定要自己先测一下,但不同平台算法差异大,最好用学校指定的同款。这篇文章盘点5款主流AIGC检测工具,附带高效的降AI方案。论文查重前必备…

python学习笔记-并发和异步IO

一、并发请求实现 1、多线程实现并发from concurrent.futures import ThreadPoolExecutor import requests import timedef task(url):response=requests.get(url)print(url,response)pool=ThreadPoolExecutor(7)url_l…

2026年胶囊充填机优质生产商Top10,天宏机械实力入选 - 工业品牌热点

在制药装备行业快速发展的当下,一款高效合规的胶囊充填设备是药企提升产能、降低风险的核心利器。面对市场上参差不齐的供应商,如何找到既能满足GMP标准、又能适配不同生产规模的胶囊充填机优质生产商?以下结合行业…

从零开始:用 Android Studio 开发一个 AI 智能日记 App - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

聊聊压缩空气检测资深企业,杭州华量检测技术实力和口碑咋样? - 工业品牌热点

问题1:压缩空气检测对企业来说有什么实际意义?为什么不能随便找家公司做? 压缩空气检测看似是幕后工作,实则是生产安全与产品质量的隐形防线。对于食品、医药、电子等行业而言,压缩空气中的油分、水分、微生物或固…

EtherCAT总线通信学习资料:STM32 MCU AX58100 ESC从站实现方案及一手资源

EtherCAT总线通信学习资料&#xff0c;一手资料。 提供基于stm32 mcuAX58100 ESC实现从站的具体方案&#xff0c;有完整的工程文件&#xff0c;提供源码以及工程配置、程序修改的视频&#xff0c;工程在开发板上已测。 提供不同版本工具从站工程。 支持主站下发固件程序&#x…

详细介绍:算法王冠上的明珠——动态规划之斐波那契数列问题(第二篇)

详细介绍:算法王冠上的明珠——动态规划之斐波那契数列问题(第二篇)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &q…

韩秀云老师谈买黄金

网址&#xff1a;韩秀云老师谈买黄金

19.螺旋矩阵

54. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,2,3,4,8,12,11,10,9,5,6,7] 【思路】 首先设…

付费问答系统的设计与实现毕业论文+PPT(附源代码+演示视频)

文章目录付费问答系统的设计与实现一、项目简介&#xff08;源代码在文末&#xff09;1.运行视频2.&#x1f680; 项目技术栈3.✅ 环境要求说明4.包含的文件列表&#xff08;含论文&#xff09;数据库结构与测试用例系统功能结构前端运行截图后端运行截图项目部署源码下载付费问…

PostgreSQL实战:一文掌握 pg_hba.conf 配置,涵盖密码认证、IP限制与安全策略

文章目录一、pg_hba.conf 基础认知1.1 pg_hba.conf 概述1.2 文件位置与作用1.3 基本语法结构1.4 安全加固 checklist二、TYPE 字段详解&#xff1a;连接类型三、DATABASE 字段&#xff1a;目标数据库四、USER 字段&#xff1a;目标用户五、ADDRESS 字段&#xff1a;客户端地址限…

ACPI!ACPIBuildProcessGenericList函数中2次InterlockedCompareExchange函数作用是标记为WORK_DONE_PENDING下次直接略过

ACPI!ACPIBuildProcessGenericList函数中2次InterlockedCompareExchange函数作用是标记为WORK_DONE_PENDING下次直接略过//// Check to see if we have any work to do on the request//workDone InterlockedCompareExchange(&(buildRequest->WorkDone),WORK_DONE_PEND…

2025年市场上服务好的广告厂家有哪些,户外广告/地铁广告/航空广告/地铁站广告/电梯广告,广告设计找哪家 - 品牌推荐师

行业洞察:广告业服务升级背后的技术驱动与场景深耕 2025年,广告行业正经历从“流量争夺”向“场景价值挖掘”的深度转型。随着消费者触媒习惯的碎片化,广告主对精准投放、全域覆盖及效果可量化的需求日益迫切。据CT…