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

打卡信奥刷题(2985)用C++实现信奥题 P6070 『MdOI R1』Decrease

P6070 『MdOI R1』Decrease

题目描述

给定一个n×nn \times nn×n的矩阵,你可以进行若干次操作。

每次操作,你可以将一个k×kk \times kk×k连续子矩阵里的所有数全都加上111或者全都减去111

初始时,矩阵中有mmm个位置上的数不为000,其它位置上的数均为000

请你求出至少需要多少次操作,可以将矩形中所有数都变为000

输入格式

第一行三个整数n,m,kn,m,kn,m,k,分别表示矩阵大小,非000格数和每次修改的连续子矩阵大小。

接下来mmm行,每行三个整数x,y,zx,y,zx,y,z,表示初始时矩阵的第xxx行第yyy列上的数为zzz

输出格式

一行一个整数,表示最少操作次数。

特别地,如果无法使矩阵中所有数都变为000,输出-1

输入输出样例 #1

输入 #1

4 14 3 1 1 1 1 2 1 1 3 1 2 1 1 2 2 3 2 3 3 2 4 2 3 1 1 3 2 3 3 3 3 3 4 2 4 2 2 4 3 2 4 4 2

输出 #1

3

输入输出样例 #2

输入 #2

3 1 2 1 1 1

输出 #2

-1

输入输出样例 #3

输入 #3

4 5 1 1 1 5 2 2 -3 2 3 -4 3 3 1 4 4 2

输出 #3

15

说明/提示

【样例 1 解释】:

给出的矩阵为:

1 1 1 0 1 3 3 2 1 3 3 2 0 2 2 2

具体步骤:

先将以第一行第一列为左上角的连续子矩阵执行减 1 操作一次;

再将以第二行第二列为左上角的连续子矩阵执行减 1 操作两次。

总共三次。

1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 3 2 0 2 2 2 0 1 1 1 0 0 0 0 1 3 3 2 0 2 2 2 0 1 1 1 0 0 0 0 0 2 2 2 0 2 2 2 0 1 1 1 0 0 0 0

【样例 2 解释】:

给出的矩阵为:

1 0 0 0 0 0 0 0 0

只通过2×22\times 22×2的连续子矩阵操作不可能使得所有格子上的数都变为000

【数据范围】

本题采用捆绑测试。

子任务编号n≤n\leqnk≤k\leqk分值
110310^310311111
220202020202014
310010010010010010017
410310^310310310^310334
55×1035\times 10^35×10310310^310324

对于所有数据,1≤n≤5×1031\leq n\leq 5\times 10^31n5×1031≤m≤min⁡(n2,5×105)1\leq m\leq \min(n^2,5\times 10^5)1mmin(n2,5×105)1≤k≤min⁡(n,103)1\leq k\leq \min(n,10^3)1kmin(n,103)1≤x,y≤n1\leq x,y\leq n1x,yn,每对(x,y)(x,y)(x,y)至多出现一次,1≤∣z∣≤1091 \le |z| \leq 10^91z109

数据保证如果有解,答案不超过263−12^{63}-12631


【提示】

本题读入量较大,建议使用较快的读入方式。

C++实现

#include<bits/stdc++.h>usingnamespacestd;longlongn,m,k,ans;//记得一定要开 long long。longlonga[5005][5005],d[5005][5005];voidf(intx,inty,intc){if(x+k>n+1||y+k>n+1){cout<<"-1";exit(0);}//特判,这个相当于是题目中说的无法修改完。d[x][y]-=c;//差分大纲。d[x+k][y]+=c;d[x][y+k]+=c;d[x+k][y+k]-=c;}intmain(){cin>>n>>m>>k;for(inti=1;i<=m;i++){intx,y,z;scanf("%d%d%d",&x,&y,&z);a[x][y]=z;}for(inti=1;i<=n;i++){for(intj=1;j<=n;j++){d[i][j]=d[i-1][j]+d[i][j-1]-d[i-1][j-1]+d[i][j];//前缀和longlongt=d[i][j]+a[i][j];if(t){ans+=abs(t);f(i,j,t);}}}cout<<ans;//完美结束~return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.jsqmd.com/news/508981/

相关文章:

  • 能源化工场景:JS如何通过百度WebUploader组件实现生产数据大附件的秒传断点恢复与日志记录?
  • Qwen3-VL:30B模型微调:使用Visio绘制技术架构图
  • Qwen-Image实际作品:基于RTX4090D的Qwen-VL在农业病虫害图像识别中的应用
  • Nanbeige 4.1-3B开源镜像:支持FP16/INT4量化部署的多精度版本
  • Qwen-Image企业部署:基于RTX4090D的Qwen-VL服务化封装与负载均衡实践
  • 如何用Goutte进行网页数据抓取并与机器学习智能分析结合
  • 从研究到生产:Einops如何通过统一API确保深度学习代码一致性的终极指南
  • ClickHouse数据可视化:5种最佳工具集成方案详解
  • 打卡信奥刷题(2986)用C++实现信奥题 P6075 [JSOI2015] 子集选取
  • Qwen-Image镜像保姆级教学:为算法工程师定制的Qwen-VL推理避坑指南
  • 终极Web Font Loader优化指南:如何通过Tree-Shaking只引入需要的字体模块
  • 终极指南:ClickHouse机器学习平台与ML框架的无缝集成方案
  • 3个革新功能破解GHelper使用困境:实战应用指南
  • Lightrag 文档处理不成功(httpx.ReadTimeout 为主)的解决步骤与方法总结
  • 革命性技能展示工具skill-icons:程序员必备的GitHub个人品牌打造神器
  • PyTorch实战:5分钟搞定SE模块集成到ResNet(附完整代码)
  • trae个人规则沙箱虚拟环境切换
  • 2026年面向大企业的AI面试前十榜单:谁真正扛得住大规模压力?
  • 从计算机组成原理视角优化FRCRN的GPU内存访问模式
  • 造相-Z-Image案例展示:看如何用纯中文提示词生成大师级作品
  • Nanbeige 4.1-3B多场景落地:非遗传承人用像素终端记录口述技艺知识
  • skill-icons完全指南:从入门到精通,打造专业级GitHub技能展示区
  • 如何高效使用nodeppt演讲者备注导出功能:将演讲笔记转为可分享文档
  • LLVM编译优化如何提升工业控制系统实时响应性能:5大关键技术解析
  • 清音听真Qwen3-ASR-1.7B多场景案例:播客剪辑辅助、有声书文稿校对、残障人士沟通助手
  • 如何快速安装Zabbix:从零开始的完整配置步骤
  • 基于COMSOL的热流固耦合仿真模型研究与应用
  • Nanbeige 4.1-3B参数详解:repetition_penalty对RPG对话连贯性影响
  • 不计成本的奢华做工!小米笔记本Pro 14评测:目前最强的1.1kg轻薄本
  • 如何确保LLVM项目的长期技术可持续性:开源代码库维护的完整指南