nyoj ACM:图像有用区域 (bfs)

【ACMer】大学期间ACM进阶计划总结 ACM进阶计划 闲来无聊,虽然大学的ACM参赛结局很狗血,还是把大学期间ACM集训队训练的一些经验作一个总结,希望看到这篇博文的ACMer能惊醒,至少博主没做到下面的规划,所以2年集训队只能惨淡收场。。。 ACM队不是为了一场比赛而存在的,为的是队员的整体提高。 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 阅读详情

图像有用区域
时间限制:3000 ms | 内存限制:65535 KB
难度:4
描述
“ACKing”同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取出图片中某个黑色线圏成的区域以内的图片,现在请你来帮助他完成第一步,把黑色线圏外的区域全部变为黑色。
这里写图片描述

已知黑线各处不会出现交叉(如图2),并且,除了黑线上的点外,图像中没有纯黑色(即像素为0的点)。

输入
第一行输入测试数据的组数N(0<N<=6)
每组测试数据的第一行是两个个整数W,H分表表示图片的宽度和高度(3<=W<=1440,3<=H<=960)
随后的H行,每行有W个正整数,表示该点的像素值。(像素值都在0到255之间,0表示黑色,255表示白色)
输出
以矩阵形式输出把黑色框之外的区域变黑之后的图像中各点的像素值。
样例输入
1
5 5
100 253 214 146 120
123 0 0 0 0
54 0 33 47 0
255 0 0 78 0
14 11 0 0 0
样例输出
0 0 0 0 0
0 0 0 0 0
0 0 33 47 0
0 0 0 78 0
0 0 0 0 0

思路:
运用bfs处理,遇到非零就压入队列,遇到零就忽略掉。

这里有几点需要注意:
1. 从哪一个点开始,如果第一排
也就是如何处理这种情况
5 5
0 0 0 0 0
0 9 9 0 1
0 0 0 0 2
1 1 1 1 2
1 1 1 1 1
2. 若有某行全零,该怎么处理
5 5
1 1 1 1 1
0 0 0 0 0
0 9 9 9 0
0 0 0 0 0
1 1 1 1 1

处理以上两种问题方法:
把输入的矩阵外围用全1圈住即可
3. 注意题目中行宽的顺序

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;

typedef struct{
    int x;
    int y;
}node;
int N;
int W,H;
int a[1440][1440];

int way[4][4]={{-1,0},{0,1},{1,0},{0,-1}};

void BFS(int x,int y)
{
    queue<node> q;
    node head;
    head.x=x;
    head.y=y;
    q.push(head);
    while(!q.empty())
    {
        node pr=q.front();
        q.pop();
        if(a[pr.x][pr.y]!=0)
        {
            a[pr.x][pr.y]=0;
            node next;
            for(int i=0;i<4;i++)//4个方向
            {
                next.x=pr.x+way[i][0];
                next.y=pr.y+way[i][1];
                if( next.x<=H+1 && next.x>=0 && next.y<=W+1 && next.y>=0 && a[next.x][next.y]!=0)//注意这里x的范围是0~H+1 ,y的范围是0~W+1 ,因为要把外面全1的圈考虑进去。
                {
                    q.push(next);
                }
            }   
        }
    }

    for(int i=1;i<=H;i++)
    {
        for(int j=1;j<=W;j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }

}

int main()
{
    scanf("%d",&N);

    for(int i=0;i<N;i++)
    {

        memset(a,1,sizeof(a));//将矩阵的外围全部赋值为1
        scanf("%d%d",&W,&H);
        for(int j=1;j<=H;j++)
        {
            for(int k=1;k<=W;k++)
            {
                scanf("%d",&a[j][k]);
            }
        }
        //从0,0 开始,这样就不会一开始就遇到0了 
        BFS(0,0);
    }
    return 0;
}
程序员专用头像.zip 程序员专用3000个头像(包含2000张随机头像和1000个情侣头像) 格式为1.jpg-2000.jpg 程序员非常实用 立即下载

相关推荐

K-Means聚类算法 — 算法原理、质心计算、距离度量、聚类效果评价及优缺点

分类知识   分类是根据样本某些属性或某类特征(可以融合多类特征),把样本类型归为已确定的某一类别中。机器学习中常见的分类算法有:SVM(支持向量机)、KNN(最邻近法)、Decision Tree(决策树分类法)、Naive Bayes(朴素贝叶斯分类)、Neural Networks(神经网络法)等。   但当对海量数据进行分类时,为了降低数据满足分类算法要求所需要的预处理代价,往往需要选...

zhf的博客 1万+

程序员头像

https://octodex.github.com/

weixin_33860737的博客 1万+

如何在Tagetik系统中抽取处理SAP系统财务数据

如何在Tagetik系统中抽取处理不同核算系统财务数据:以SAP为例,简单讲一下Tagetik对接SAP数据的基本情况

2201_75401663的博客 578

人工智能深度学习绘制二次元萌妹子头像

转载自知乎:https://zhuanlan.zhihu.com/p/39135876 AlphaGo战胜了全世界所有最强旗手,掀起人们对人工智能(AI)的狂热关注。 AlphaZero只通过34小时训练,战胜了战胜所有人类王者的AlphaGo。 以比特币代表的区块链技术,引发了人们对新一代互联网革命的运动。 ——人工智能+区块链,两大顶尖技术联起手来,打破了二次元人口结界。   GA...

ACM算法日常 7892

在线迭代RLHF实战:从原理到实现,复现超越官方指令模型的工作流

大语言模型(LLM)的对齐技术是提升其与人类意图一致性的关键。其中,基于人类反馈的强化学习(RLHF)通过引入人类偏好信号,指导模型优化生成策略,是实现模型“有用”与“无害”的核心方法。其技术价值在于将抽象的“对齐”目标转化为可优化的奖励信号,从而显著提升模型在对话、推理等任务中的表现。然而,传统的离线RLHF存在数据分布偏移和奖励黑客等瓶颈。在线迭代RLHF通过构建“生成-评估-学习”的动态数据循环,让模型能够利用自身最新生成的数据进行持续优化,有效克服了上述问题,成为当前提升指令模型性能的前沿方向。本文

weixin_28725037的博客 369

扩展卡尔曼滤波(EKF)理论讲解与实例(matlab、python和C++代码)

扩展卡尔曼滤波(EKF)理论讲解与实例(matlab、python和C++代码) 文章目录扩展卡尔曼滤波(EKF)理论讲解与实例(matlab、python和C++代码)理论讲解KF和EKF模型对比雅可比矩阵计算计算实例应用实例线性模型CV模型:CA模型非线性模型CTRV模型:CTRV实例(python)small demo抛物线demo飞机高度demoC++实例参考文献 我们上篇提到的卡尔曼滤波是用于线性系统,预测(运动)模型和观测模型是在假设高斯和线性情况下进行的。简单的卡尔曼滤波必须应用在符合高斯分布

O_MMMM_O的博客 10万+

女生应该找一个玩ACM的男生

女生应该找一个玩ACM的男生 【转~~】(2010-07-20 14:37:41) 1、强烈的事业心将来,他也一定会有自己热爱的事业。而且,男人最性感的时刻之一,就是他专心致志做事的时候。所以,找一个机会在他全神贯注玩ACM的时候,从侧面好好观察他,你就会发现我说的话没错。2、永不放弃的精神在比赛刚开始,神牛队就飘崎岖。玩ACM的男生不会退缩,而是毅然决定一个人继续AC下去,靠

houxq123的专栏 664

超声波传感器(CHx01) 学习笔记 Ⅲ - I2C读写操作

CH-x01 通过 2 线 I2C 协议与主机处理器通信

nicole088的专栏 1738

NYOJ 92 图像有用区域 【bfs】

图像有用区域 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 “ACKing”同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取出图片中某个黑色线圏成的区域以内的图片,现在请你来帮助他完成第一步,把黑色线圏外的区域全部变为黑色。                       图1                    

nuanxin_520的专栏 317

K-Core, K-Shell & K-Crust傻傻分不清楚

K-Core(K-核)就是所有大于等于K的K-Shell的并集;K-Crust(K-皮)就是所有小于等于K的K-shell的并集。

欢迎订阅 -- 小源笔迹 2256

全志V3S嵌入式驱动开发(解决kernel 5.2.y wifi驱动问题)

​【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 wifi模块,之前测试的时候,开发板上用的是esp8089,当时内核时4.14.y,测试也是通过的。链接地址在这里, https://blog.youkuaiyun.com/feixiaoxing/article/details/131178420?spm=1001.2014.3001.5501 那个时候测试的时候,我们就说过,wifi驱动可能是除了镜像制作之外,最复杂的一个

嵌入式-老费,一个分享专业嵌入式知识的blog 1159

NYOJ 92 图像有用区域

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=92 广搜问题。。。从上午一直弄到下午,最后发现自己画蛇添足,泪流满面。。。。。题目很简单,但深搜RumtimeError.跟迷宫那题差不多,只是不需要处理递归的边界(这就是悲剧所在,浪费了一个上午。。。。),还有个坑就在题目上面的输入,是先宽后高,跟一般的思维方式有点不一样。切到200道

A_Eagle的专栏 1904

2024届数字IC秋招-华为机试-数字芯片-笔试真题和答案(五)(含2022年和2023年)

此部分包含华为机试真题,方向是数字芯片,内容详细包括设计、验证、后端等,大部分题目给出参考答案。华为机试都是从题库里抽题目,所以这些题目还是很有参考性的,甚至是完全一样,可以搜到的。(题目内容较多,将分开编写几个文章)

qq_42135020的博客 2083

图像有用区域nyoj92

这题其实不难,就是一个bfs;#include #include #include using namespace std; int map[965][1445]; int dir[4][2]={1,0, 0,1, -1,0, 0,-1}; typedef struct Point { int x,y; }P; queue Q; int w,h; int main() { // freop

用户名是什么 710

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

NYOJ92图像有用区域

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=92 这道题略坑,用深搜肯定就RE了,后来搜下了题解,用的广搜,还要进行加边处理。。。。 代码: #include #include #include #include #include using namespace std; typedef struct

奋斗的Die Young 536

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

nyist_ACM

ACM进阶计划 ACM队不是为了一场比赛而存在的,为的是队员的整体提高。 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l 数据库原理 l 操作系统原理 l 计算机组成原理 l 人工智能 l 编译原理 l 算法设计与分析 除此之外,我希望你们能掌握一些其它

bo-jwolf的专栏 2042

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ACM进阶指南

ACM队不是为了一场比赛而存在的,为的是队员的整体提高。 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l 数据库原理 l 操作系统原理 l 计算机组成原理 l 人工智能 l 编译原理 l 算法设计与分析 除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触类旁通的。 以下学

eecrazy的专栏 1847

ACM成长之路(干货) 我爱ACM,与君共勉

前几天在网上看到,转过来时刻督促一下自己。 ACM队不是为了一场比赛而存在的,为的是队员的整体提高。 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l 数据库原理 l 操作系统原理 l 计算机组成原理 l 人工智能 l 编译原理 l 算法设计与分析 除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触类旁通...

日拱一卒,功不唐捐 2815

nyoj 92 图片实用面积【bfs】

图像实用区域 时间限制:3000ms | 内存限制:65535KB 难度:4 描写叙述 “ACKing”同学曾经做一个图像处理的项目时。遇到了一个问题,他须要摘取出图片中某个黑色线圏成的区域以内的图片,如今请你来帮助他完毕第一步。把黑色线圏外的区域所有变为黑色。 图1...

weixin_30911809的博客 68

ACM学习进阶计划

ACM进阶计划 对ACM学习历程还感到迷茫的童鞋可以看一看,从大一到大三的所有计划,零基础照样可以参加ACM比赛,希望可以对你们有些帮助>_<

结构之美 算法之道 1901

ACM进阶计划

ACM进阶计划 ACM队不是为了一场比赛而存在的,为的是队员的整体提高。 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l 数据库原理 l 操作系统原理 l 计算机组成原理 l 人工智能 l 编译原理 l 算法设计与分析 除此之外,我希望

69小石头的博客 1038

ACM进阶

ACM队不是为了一场比赛而存在的,为的是队员的整体提高。 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l 数据库原理 l 操作系统原理 l 计算机组成原理 l 人工智能 l 编译原理 l 算法设计与分析 除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触类旁通的。 以下学习计划每学期中的内容不分先后顺序,

To-nemy 391

acm训练表

在网上找了好久,总算找到了这么多,还算算是比较全吧=。=   数据结构 离散数学 数据库原理 操作系统原理 计算机组成原理 编译原理 算法设计与分析 简单数学题(推荐“数学”分类20道以上) 需要掌握以下基本算法: 欧几里德算法求最大公约数 筛法求素数 康托展开 逆康托展开 同余定理 次方求模 计算几何初步 三角形面积 三点顺序 学会简单计算程序的时间复杂度

jesliebest! 1456
上一篇: 【荐读】我观察14年才发现,那些很努力却没成就的人都有一个特点
下一篇: nyoj ACM:素数环(DFS 回溯 递归)
丁磊_Ml
博客等级 码龄11年 95粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值