版权声明:长风原创 https://blog.csdn.net/u012846486/article/details/28011667

字数统计

Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 1221    Accepted Submission(s): 315
Problem Description
  一天,淘气的Tom不小心将水泼到了他哥哥Jerry刚完毕的作文上。原本崭新的作文纸顿时变得皱巴巴的。更糟糕的是因为水的关系,很多字都看不清了。可怜的Tom知道他闯下大祸了,等Jerry回来一定少不了一顿修理。如今Tom仅仅想知道Jerry的作文被“破坏”了多少。
  Jerry用方格纸来写作文,每行有L个格子。(图1显示的是L = 10时的一篇作文,’X’表示该格有字。该文有三个段落)。

图1

图2

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

 

Input
  測试数据有多组。每组測试数据的第一行有三个整数:N(作文的行数1 ≤ N ≤ 10000)。L(作文纸每行的格子数10 ≤ L ≤ 100),M(原文的段落数1 ≤ M ≤ 20),用空格分开。
  接下来是一个N × L的位矩阵(Aij)(相邻两个数由空格分开),表示被破坏后的作文。当中Aij取0时表示第i行第j列没有文字(或者是看不清了),取1时表示有文字。

你能够假定:每行至少有一个1,而且全部数据都是合法的。

 

Output
  对于每组測试输出一行,一个整数,表示至少有多少文字被破坏。

 

Sample Input

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
 

Sample Output

19

细节要注意。

#include <stdio.h>
#include <algorithm>
using std::sort;
int N, L, M, arr[10002][102], ans, id;
struct Node{
int num, pre;
} pra[10002]; int getPre(int i){
if(--i == 0) return 0;
int j = L;
while(arr[i][j] == 0) --j;
return L - j;
} void addPre(int i){
if(--i == 0) return;
int j = L;
while(arr[i][j] == 0){
++ans;
arr[i][j] = 1;
--j;
}
} bool cmp(Node a, Node b){
return a.pre < b.pre;
} int main(){
int left, right;
while(scanf("%d%d%d", &N, &L, &M) == 3){
id = ans = 0; --M;
for(int i = 1; i <= N; ++i){
left = L; right = 1;
for(int j = 1; j <= L; ++j){
scanf("%d", &arr[i][j]);
if(arr[i][j]){
if(j < left) left = j;
if(j > right) right = j;
}
}
if(left > 2){
for(int j = 3; j <= right; ++j){
if(arr[i][j] == 0) ++ans, arr[i][j] = 1;
}
if(i != 1){
pra[id].num = i;
pra[id++].pre = getPre(i);
}
}else{
addPre(i);
for(int j = 1; j <= right; ++j){
if(arr[i][j] == 0) ++ans, arr[i][j] = 1;
}
}
} sort(pra, pra + id, cmp);
id = id - M; //须要合并的段落数
for(int i = 0; i < id; ++i)
ans += pra[i].pre + 2;
printf("%d\n", ans);
}
return 0;
}

HDU1735 字数统计的更多相关文章

  1. Javascript字数统计

    字数统计功能,原理是给textarea添加onKeyup事件,事件读取textarea内容并获得长度,并赋值给统计字数的那个文本节点,这里有一点要注意的是添加onKeypress和onKeydown事 ...

  2. 工具,如何去掉百度编辑器 ueditor 元素路径、字数统计等

    去掉如下截图: 在百度编辑器 ueditor 根目录下: ueditor.config.js 文件中 搜索并将参数elementPathEnabled设置成false即可 常用功能开关如下: ,ele ...

  3. textarea还剩余字数统计

    <!DOCTYPE html><html><head> <meta charset="utf-8" /> <title> ...

  4. ios开发之--textview意见反馈页面(占位label,字数统计,提交按钮的交互设置)

    记录一个页面的功能: textview的占位符,字数统计,提交按钮的交互设置,具体效果图如下:

  5. HDU 1735 字数统计(模拟+一点点贪心的思想)

    题目戳我 字数统计 Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  6. Hexo添加字数统计、阅读时长

    统计插件 配置 NexT 主题默认已经集成了文章[字数统计].[阅读时长]统计功能,如果我们需要使用,只需要在主题配置文件 _config.yml 中打开 wordcount 统计功能即可.如下所示: ...

  7. 【百度编辑器ueditor】工具,如何去掉百度编辑器 ueditor 元素路径、字数统计等

    去掉如下截图: 在百度编辑器 ueditor 根目录下: ueditor.config.js 文件中 搜索并将参数elementPathEnabled设置成false即可 常用功能开关如下: ,ele ...

  8. textarea还剩余字数统计,支持复制粘贴的时候统计字数

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. js 实现textarea剩余字数统计

    1 针对textarea剩余字数统计 2 <div class="fankui-textarea"> 3 <span>留言:</span> &l ...

随机推荐

  1. Jquery的深度拷贝和深度克隆

    有人问,拷贝和克隆不都是“复制”的意思吗. 这位看官问的好,一般情况下是一样的,但在jquery中却有些不同.jqurey深度拷贝一般只js对象的复制,是$.extend()方法,jquery深度克隆 ...

  2. 【转载】hibernate缓存机制

    一级缓存(session级别) 我们来看看hibernate提供的一级缓存 //此时会发出一条sql,将所有学生全部查询出来,并放到session的一级缓存当中.当再次查询学生信息时,会首先去缓存中看 ...

  3. SPOJ—VLATTICE Visible Lattice Points(莫比乌斯反演)

    http://www.spoj.com/problems/VLATTICE/en/ 题意: 给一个长度为N的正方形,从(0,0,0)能看到多少个点. 思路:这道题其实和能量采集是差不多的,只不过从二维 ...

  4. gif&png&jpg&webp

    几种图片格式的区别和联系 1.http://www.tuicool.com/articles/AbUvI3A

  5. Spring MVC配置静态资源和资源包

    Spring MVC配置静态资源和资源包 本例映射:css目录: pom.xml <properties> <spring.version>4.3.5.RELEASE</ ...

  6. HDU 4540 线性DP

    威威猫系列故事——打地鼠 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  7. 个人知识管理系统Version1.0开发记录(05)

    demo controller我们从前面的实现过程可以得出三种普遍使用的信息处理方式:1.操作数据库,对数据进行增删改查,比如运用sqldevloper查看数据信息.2.运用计算机程序语言,对数据进行 ...

  8. Python Inotify 监视LINUX文件系统事件

    Inotify 可以监视的LINUX文件系统事件包括: --IN_ACCESS,即文件被访问 --IN_MODIFY,文件被write --IN_ATTRIB,文件属性被修改,如chmod.chown ...

  9. C primer plus 5 读书笔记2

    1..字符串的输入:scanf()在读入时,当遇到空白字符空格blank.制表符tab.换行符newline时停止读取.一般使用gets(),来输入字符串. 2.strlen(),一字符为单位输出输出 ...

  10. bzoj2843&&1180

    题解: lct 和上一题差不多 这一题还要判断是否有链接 其实直接并查集判断就可以了 代码: #pragma GCC optimize(2) #include<bits/stdc++.h> ...