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

HJ172 小红的矩阵染色

  • 题目
  • 题解(23)
  • 讨论(6)
  • 排行

简单 通过率:31.75% 时间限制:1秒 空间限制:256M

知识点贪心

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

描述

给定一个 n×mn×m 的矩阵,初始时部分格子已被染成黑色(用 ``**`` 表示),其余格子为空白(用 ``oo`` 表示)。

小红最多可以任选至多 kk 个空白格子,将其染成红色。计分规则如下:
∙ ∙ 若某个红色格子的正下方(同一列下一行)也是红色,则该格子贡献 11 分;
∙ ∙ 其他情况不计分。

请你帮小红计算,经过最优染色后,最多能获得多少分数。

输入描述:

第一行输入三个整数 n,m,k(1≦n,m≦103; 1≦k≦n×m)n,m,k(1≦n,m≦103; 1≦k≦n×m),分别表示矩阵行数、列数及最多可染红的格子数量。
此后 nn 行,每行输入一个长度为 mm 的字符串 sisi​,描述第 ii 行初始状态:
∙ ∙ ``**`` 代表黑色格子,不能重新染色;
∙ ∙ ``oo`` 代表空白格子,可选择染为红色。

输出描述:

输出一个整数,表示小红通过最佳策略能够获得的最大分数。

示例1

输入:

4 4 3 *o*o oooo **** oooo

复制输出:

1

复制说明:

一种可行方案如下(``rr`` 为染成红色后的格子): *r*o oroo **** oooo 红色格子共有 22 个,其中正下方同列的红色对数为 11,因此得分 11。

示例2

输入:

3 3 3 *o* *o* *o*

复制输出:

2
#include <iostream> #include <vector> #include <string> #include <algorithm> #include <functional> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n, m; long long k; cin >> n >> m >> k; vector<string> matrix(n); for (int i = 0; i < n; ++i) { cin >> matrix[i]; } vector<int> chain_lengths; for (int j = 0; j < m; ++j) { int consecutive_white = 0; for (int i = 0; i < n; ++i) { if (matrix[i][j] == 'o') { consecutive_white++; } else { if (consecutive_white > 0) { chain_lengths.push_back(consecutive_white); } consecutive_white = 0; } } if (consecutive_white > 0) { chain_lengths.push_back(consecutive_white); } } sort(chain_lengths.begin(), chain_lengths.end(), greater<int>()); long long score = 0; for (int len : chain_lengths) { if (k <= 0) break; long long to_color = min((long long)len, k); k -= to_color; if (to_color > 1) { score += to_color - 1; } } cout << score << endl; return 0; }
http://www.jsqmd.com/news/621050/

相关文章:

  • 操作系统之系统调用
  • HTML5中SVG解析器原理及手动构建矢量字符串
  • Go语言中的数据库操作:从SQL到ORM
  • Photoshop CS6 分享
  • Fe₃O₄@Au-PEG-ICG-DOX,四氧化三铁@金-聚乙二醇/吲哚菁绿-多柔比星纳米复合材料,合成路线
  • TTP229电容触摸库详解:Arduino I²C驱动与边沿检测实践
  • uni-app怎么实现图片拖拽排序功能 uni-app手势识别与位置交换【代码】
  • 嵌入式Wi-Fi驱动重构:状态机+双缓冲提升WiFly模块可靠性
  • 考研数学高分突破:零基础速成模板与实战技巧全解析
  • 解锁Presto/Trino高级查询:从集合运算到多维分析与窗口函数实战
  • 安全彻底卸载Ubuntu20.04:从分区清理到EFI引导修复
  • 2026医院厨房设备选型指南:成都商用厨房制冷设备、成都商用厨房厨具工程、成都商用厨房厨具设备厂家、成都商用厨房定制设备厂家选择指南 - 优质品牌商家
  • WPF开发必备:CommunityToolkit.Mvvm中RelayCommand的5个实战技巧
  • CAN总线数据分析避坑指南:BLF解析时DBC信号匹配失败的3种常见原因与解决
  • 同城上门软件产品开发+定制化开发+私有化部署
  • 如何高效生成技术文章:方法与工具详解
  • 算法稳定性分析中的输入扰动建模的技术9
  • 【uniapp】地图路线轨迹,路线规划,兼容H5与APP端!
  • 从H∞到μ:结构奇异值(SSV)如何为不确定系统锻造鲁棒控制器
  • 面向企业的 AI Agent Harness Engineering 安全蓝图
  • Block Copy 的内存布局详解屎
  • NextTrace实战:5分钟搞定跨地域网络延迟排查(附地图可视化技巧)
  • PyQt6 vs PySide6:闭源项目选哪个?从许可证到实战避坑指南
  • R 4.5中DESeq2用于微生物组?:权威验证——3篇Nature Microbiology复现实验揭示其在低丰度菌群中的FDR失控风险
  • 代码随想录算法训练营第二十天 |235、二叉搜索树的最近巩固祖先 701、二叉搜索树中的插入操作 450、删除二叉搜索树中的节点
  • OpenClaw Windows 部署全程图文教程 | 免代码
  • 从架构到Agent能力的技术演进分析
  • 2026奇点智能技术大会闭门报告(仅限首批1,863名架构师获取的AI-DB决策矩阵)
  • Docker 环境下快速部署 Dify 中文版的完整指南
  • 今天不重构协作模式,明天就失去AI交付权:一份来自17个AI原生项目的紧急协同诊断报告