HDOJ 1735:字数统计 ← 贪心

【题目来源】
https://acm.hdu.edu.cn/showproblem.php?pid=1735

【题目描述】
一天,淘气的 Tom 不小心将水泼到了他哥哥 Jerry 刚完成的作文上。原本崭新的作文纸顿时变得皱巴巴的,更糟糕的是由于水的关系,许多字都看不清了。可怜的 Tom 知道他闯下大祸了,等 Jerry 回来一定少不了一顿修理。现在 Tom 只想知道 Jerry 的作文被“破坏”了多少。
Jerry 用方格纸来写作文,每行有 L 个格子。(图 1 显示的是 L=10 时的一篇作文,’X’ 表示该格有字,该文有三个段落)。


图 1


图 2

图 2 显示的是浸水后的作文 ,‘O’ 表示这个位置上的文字已经被破坏。可是 Tom 并不知道原先哪些格子有文字,哪些没有,他唯一知道的是原文章分为 M 个段落,并且每个段落另起一行,空两格开头,段落内部没有空格(注意:任何一行只要开头的两个格子没有文字就可能是一个新段落的开始,例如图 2 中可能有 4 个段落)。
Tom 想知道至少有多少个字被破坏了,你能告诉他吗?

【输入格式】
测试数据有多组。每组测试数据的第一行有三个整数:N(作文的行数 1≤N≤10000),L(作文纸每行的格子数 10≤ L≤100),M(原文的段落数 1≤M≤20),用空格分开。
接下来是一个 N×L 的位矩阵 (Aij)(相邻两个数由空格分开),表示被破坏后的作文。其中 Aij 取 
0 时表示第 i 行第 j 列没有文字(或者是看不清了),取 1 时表示有文字。你可以假定:每行至少有一个 1,并且所有数据都是合法的

【输出格式】
对于每组测试输出一行,一个整数,表示
至少有多少文字被破坏。

【输入样例】
10 10 3

0 0 0 1 1 1 0 1 1 0
1 1 0 0 0 1 1 1 0 0
0 0 1 1 0 0 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1
0 1 0 1 1 1 0 0 0
1 1 0 0 1 1 1 1 1 1
1 1 1 1 1 1 1 0 0 0

0 0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1

0 0 0 0 1 1 1 1 1 0

【输出样例】
19

【算法分析】
● 任何一行只要开头的两个格子没有文字就可能是一个新段落。但是,在输入样例中,原本没有文字或被破坏后看不清处均用 0 表示,所以输入样例原本“
可能”有 4 个段落。之所以说“可能”,是因为不知道输入样例中的 0 是原本没有文字,还是被破坏而看不清。
● 好在题目给定了约束:“给定了原文段落数”、“所有数据都是合法的”、“段落内部没有空格”。所以,可根据这些约束条件利用贪心算法思想进行分析、编码,得到
至少有多少文字被破坏
● 难点在于算法代码中 sec[++idx] 数组的理解,以及循环变量为什么终至 idx-(M-2)?因为,sec[++idx] 存储的是每段末尾的 0 的个数。这些段既包含原文的段落数,又包含被污染后被误认的段落数。最后一段的 sec[] 值即下午代码中的 tail 值,已由 ans-=tail 给减去了。且 sec[1]=0。故有效的 sec[] 值的数为 M-2。

【算法代码】

#include <iostream>
#include <algorithm>
using namespace std;

const int maxn=1e4+5;
int sec[maxn];
int a[105];
int N,L,M;

int main() {
    while(cin>>N>>L>>M) {
        int ans=0;
        int tail=0; //number of 0 at the end of the previous line
        int idx=0; //id of paragraph
        for(int i=1; i<=N; i++) {
            for(int j=1; j<=L; j++) {
                cin>>a[j];
                if(a[j]==0) ans++;
            }
            if(!a[1] && !a[2]) sec[++idx]=tail;
            for(int j=L; j>=1; j--) {
                if(a[j]==1) {
                    tail=L-j;
                    break;
                }
            }
        }

        ans-=2*M;
        ans-=tail;
        sort(sec+1,sec+idx+1);
        for(int i=idx; i>=idx-(M-2); i--)
            ans-=sec[i];

        cout<<ans<<endl;
    }

    return 0;
}

/*
in:
10 10 3
0 0 0 1 1 1 0 1 1 0
1 1 0 0 0 1 1 1 0 0
0 0 1 1 0 0 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 0 1 0 1 1 1 0 0 0
1 1 0 0 1 1 1 1 1 1
1 1 1 1 1 1 1 0 0 0
0 0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 0

out:
19
*/






【参考文献】
https://blog.csdn.net/andream7/article/details/104226879
https://blog.51cto.com/u_15740602/5542315
https://www.cnblogs.com/yinbiao/p/9398073.html



 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

zookeeper的安装

zookeeper的安装 一.前言 zookeeper开源组件是为分布式应用&#xff0c;提供协调服务的一种解决方案。本文主要是介绍在Centos7的操作系统中&#xff0c;如何以单机&#xff0c;伪集群&#xff0c;集群的方式来安装部署zookeeper服务。zookeeper要求的jdk版本为1.6以上。本文假…

keil5搜索框还有左侧文件状态栏不见的问题

点击上面的window&#xff0c;弹出 reset view to default &#xff0c;然后点击&#xff0c;再点击reset&#xff0c;就ok了

Python机器学习笔记(六、核支持向量机)

核支持向量机&#xff08;kernelized support vector machine&#xff09;简称SVM&#xff0c;支持向量机可以用于分类&#xff0c;也可以用于回归&#xff0c;分类在SVC中实现&#xff0c;回归在SVR中实现。 1. 线性模型与非线性特征 线性模型在低维空间中的应用非常受限&am…

线性表之单链表详解

一、概念 链表作为线性表的链式存储结构&#xff0c;将线性表L &#xff08;a0,...ai-1,ai,ai1...an-1) 中的各元素分布在存储器的不同存储块&#xff0c;称为结点。结点之间通过指针建立联系 其中&#xff1a;data作为数据域&#xff0c;next作为指针域&#xff0c;指向ai的直…

启明智显ZX7981PC:5G时代的新选择,全屋网络无缝覆盖

在这个飞速发展的5G时代&#xff0c;每一个细微的科技进步都在推动着我们的生活向更加智能、便捷的方向发展。近日&#xff0c;启明智显再次引领科技潮流&#xff0c;正式发布其最新的5G CPE产品——ZX7981PC。作为继7981PG与7981PM之后的又一次迭代升级&#xff0c;ZX7981PC凭…

ubuntu检测是否已安装nvidia驱动以及产品类型

nvidia-sminvidia-smi 是 NVIDIA 提供的一个命令行工具&#xff0c;用于查看和管理 NVIDIA GPU 的状态。当你运行 nvidia-smi 命令时&#xff0c;它会显示当前系统中所有 NVIDIA GPU 的状态信息&#xff0c;包括 GPU 的使用率、温度、内存使用情况等。 有8个GPU nvcc -V查看c…

Introduction to NoSQL Systems

What is NoSQL NoSQL database are no-tabular非數據表格 database that store data differently than relational tables 其數據的存儲方式與關係型表格不同 Database that provide a mechanism機制 for data storage retrieval 檢索 that is modelled in means other than …

Javaweb web后端maven介绍作用安装

自动导入到这个项目 src是源代码 main主程序&#xff0c;核心代码 java是Java源代码 resources是项目配置文件 test测试相关的 maven概述 介绍 依赖在本地仓库查找&#xff0c;如果本地仓库有&#xff0c;用本地仓库的依赖&#xff0c;本地没有&#xff0c;连接中央仓库&…

MinIO分布式文件存储

一、分布式文件系统 问题引出 对于一个网站系统&#xff0c;若为降低成本投入&#xff0c;将文件存储服务和网站系统部署在同一台服务器中&#xff0c;访问量不大&#xff0c;基本不会有问题&#xff0c;但访问量逐渐升高&#xff0c;网站文件资源读取逐渐频繁&#xff0c;单…

SQL Server:只有MDF文件,如何附加数据库

第一步&#xff1a;先新建一个同名数据库&#xff0c;然后停止sql服务&#xff0c;删除新建数据库.ldf文件。 第二步&#xff1a;将要附加的数据库的.mdf文件覆盖刚新建的.mdf文件&#xff0c;并重启sql服务。 第三步&#xff1a;这时数据库DATA目录下只有一个.mdf文件&#xf…

《HTML 的变革之路:从过去到未来》

一、HTML 的发展历程 图片: HTML 从诞生至今&#xff0c;经历了多个版本的迭代。 &#xff08;一&#xff09;早期版本 HTML 3.2 在 1997 年 1 月 14 日成为 W3C 推荐标准&#xff0c;提供了表格、文字绕排和复杂数学元素显示等新特性&#xff0c;但因实现复杂且缺乏浏览器…

机器视觉与OpenCV--01篇

计算机眼中的图像 像素 像素是图像的基本单位&#xff0c;每个像素存储着图像的颜色、亮度或者其他特征&#xff0c;一张图片就是由若干个像素组成的。 RGB 在计算机中&#xff0c;RGB三种颜色被称为RGB三通道&#xff0c;且每个通道的取值都是0到255之间。 计算机中图像的…

网络安全创新实验

一、网络拓扑设计 二、网络主机概况 本实验一共包含4台虚拟机&#xff0c;分别为攻击机attacker&#xff0c;网关gateway&#xff0c;内网普通用户主机pc&#xff0c;内网服务器server&#xff0c;四台主机的详细信息如下表所示&#xff1a; 名称操作系统IP地址网络模式作用攻…

y3编辑器教学5:触发器2 案例演示

文章目录 一、探索1.1 ECA1.1.1 ECA的定义1.1.2 使用触发器实现瞬间移动效果 1.2 变量1.2.1 什么是变量1.2.2 使用变量存储碎片收集数量并展现 1.3 if语句&#xff08;魔法效果挂接&#xff09;1.3.1 地形设置1.3.2 编写能量灌注逻辑1.3.3 编写能量灌注后&#xff0c;实现传送逻…

016 在路由器上配置 DHCP

配置路由器端口IP地址 将路由器的端口地址配置好&#xff0c; 左边的网络地址是 192.168.1.0 右边的网络地址是 192.168.2.0 配置路由器的DHCP服务 打开命令窗口&#xff0c;进入特权模式 进入全局配置 conf t创建一个DHCP地址池&#xff1b; po1 是地址池的名称&#xf…

恋爱脑学Rust之并行之旅:Rayon介绍和使用

文章目录 一、开启爱情的依赖之旅&#xff08;安装 Rayon&#xff09;二、甜蜜瞬间的并行享受&#xff08;基本数据并行操作&#xff09;&#xff08;一&#xff09;共享美好时光&#xff08;par_iter 方法&#xff09;&#xff08;二&#xff09;分块珍藏回忆&#xff08;par_…

【数据库系列】PostgreSQL 数据库连接

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

中介者模式的理解和实践

一、中介者模式概述 中介者模式&#xff08;Mediator Pattern&#xff09;&#xff0c;也称为调解者模式或调停者模式&#xff0c;是一种行为设计模式。它的核心思想是通过引入一个中介者对象来封装一系列对象之间的交互&#xff0c;使得这些对象不必直接相互作用&#xff0c;从…

吸烟抽烟行为识别数据集-超高识别率,支持YOLO,COCO,VOC格式的标注,10162张各种姿势场景下的吸烟图片

吸烟抽烟行为识别数据集-超高识别率&#xff0c;支持YOLO&#xff0c;COCO,VOC格式的标注&#xff0c;10162张各种姿势场景下的吸烟图片 数据集分割 训练组91&#xff05; 9279图片 有效集5&#xff05; 507图片 测试集4% 376图片 预处理 自动定…

【开源】基于SpringBoot框架的房屋租赁系统 (计算机毕业设计)+万字毕业论文 T020

系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 IDE环境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境&#xff1a; Tomcat 7.x,8.x,9.x版本均可 操作系统…