尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

[省选联考 2021 A 卷] 矩阵游戏

[省选联考 2021 A 卷] 矩阵游戏
📅 发布时间:2026/6/19 17:59:53

比较有意思的一道题。

首先不考虑 \(a_{i, j}\) 的限制随便求,然后开始调整。你发现对于每行,奇数列 \(+x\) 偶数列 \(-x\) 不会变,列也同理,假设第 \(i\) 行的 \(x\) 为 \(r_i\), 第 \(j\) 列的 \(x\) 为 \(c_j\)。然后考虑对 \(a\) 加上一个矩阵 \(A\),\(A_{i, j} = (-1)^{2\mid i+1}r_i - (-1)^{2\mid j+1}c_j\)。然后你发现这样会有加和,不能跑差分约束,调整一下,\(\forall 2 \mid i, r_i \leftarrow -r_i, \forall 2 \nmid j, c_j \leftarrow -c_j\),就都是差的形式了。然后差分约束即可,时间复杂度 \(\mathcal{O}(nm(n+m))\)。

点击查看代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
// typedef __int128 i128;
typedef pair<int, int> pii;
const int N = 3e2 + 10, V = 1e6, mod = 998244353;
template<typename T>
void dbg(const T &t) { cout << t << endl; }
template<typename Type, typename... Types>
void dbg(const Type& arg, const Types&... args) {cout << arg << ' ';dbg(args...);
}
namespace Loop1st {
int n, m, b[N][N], a[N][N];
ll dis[N << 1];
vector<pii>e[N << 1];
void main() {memset(dis, 0x3f, sizeof dis); memset(a, 0, sizeof a);cin >> n >> m;for (int i = 0; i <= n + m; i++) e[i].clear();for (int i = 1; i <= n + m; i++) e[0].push_back({i, 0});for (int i = 1; i < n; i++) for (int j = 1; j < m; j++) cin >> b[i][j];for (int i = n - 1; i; i--) {for (int j = m - 1; j; j--) {a[i][j] = b[i][j] - a[i + 1][j] - a[i][j + 1] - a[i + 1][j + 1];}}for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) {if ((i + j) & 1) e[n + j].push_back({i, a[i][j]}), e[i].push_back({n + j, V - a[i][j]});else e[i].push_back({n + j, a[i][j]}), e[n + j].push_back({i, V - a[i][j]});}dis[0] = 0;int t = 1;for (t = 1; t <= n + m + 2; t++) {bool ok = 0;for (int u = 0; u <= n + m; u++) {for (auto [v, w] : e[u]) if (dis[v] > dis[u] + w) {dis[v] = dis[u] + w;ok = 1;}}if (!ok) break;}if (t > n + m + 2) {cout << "NO\n";return ;}cout << "YES\n";for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {// dbg("###", i, j, dis[i], dis[n + j], a[i][j]);if ((i + j) & 1) cout << a[i][j] + dis[n + j] - dis[i] << " \n"[j == m];else cout << a[i][j] + dis[i] - dis[n + j] << " \n"[j == m];}}
}}
int main() {// freopen("data.in", "r", stdin);// freopen("data.out", "w", stdout);ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int T = 1;cin >> T;while (T--) Loop1st::main();return 0;
}

相关新闻

  • 深入解析:《学习JavaScript数据结构与算法》核心知识点梳理
  • nginx buffer和cache
  • 8个降AI率工具推荐,研究生必备神器!

最新新闻

  • 2026年乌鲁木齐市PMP培训机构哪家好?官方授权R.E.P.报考指南 - 众智商学院课程中心
  • 跨平台中文字体一致性挑战与PingFangSC字体技术解决方案
  • 告别Mac束缚!3步在Linux上搭建专业iOS开发环境
  • LeRobot实战指南:构建端到端机器人学习系统的5个关键步骤
  • 反序列化漏洞深度解析:从原理到实战攻防
  • LPC2917/19嵌入式开发实战:Flash、SMC与MSCSS子系统深度解析与避坑指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号