第十四届蓝桥杯C/C++大学B组题解(二)

6、岛屿个数

#include <bits/stdc++.h>
using namespace std;
const int M=51;
int T,m,n;
int vis[M][M],used[M][M];
int dx[]={1,-1,0,0,1,1,-1,-1};
int dy[]={0,0,1,-1,1,-1,1,-1};
string mp[M];
struct node{//记录一点坐标 int x,y;
};
void bfs_col(int x,int y){ queue<node>q;q.push({x,y});vis[x][y]=1;while(q.size()){auto u=q.front();q.pop();for(int i=0;i<4;i++){//搜索岛屿只有四个方向 int a=u.x+dx[i];int b=u.y+dy[i];if(a<0||b<0||a>m-1||b>n-1||vis[a][b]==1||mp[u.x][u.y]=='0')continue;q.push({a,b});vis[a][b]=1;//打上标记判重 }}
}
bool bfs_edge(int x,int y){for(int i=0;i<m;i++){for(int j=0;j<n;j++){used[i][j]=0;//初始化 }}queue<node>q;q.push({x,y});used[x][y]=1;while(q.size()){auto t=q.front();q.pop();//能走到边界了说明不是子岛屿 if(t.x==0||t.x==m-1||t.y==0||t.y==n-1)return true;for(int i=0;i<8;i++){//判断是否到边界有八方向 int a=t.x+dx[i];int b=t.y+dy[i];if(a<0||b<0||a>m-1||b>n-1||used[a][b]==1||mp[a][b]=='1') continue;q.push({a,b});used[a][b]=1;}}return false;
}
void solve(){int ans=0;cin>>m>>n;for(int i=0;i<m;i++){cin>>mp[i];  for(int j=0;j<n;j++){vis[i][j]=0;//初始化为0 }}for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(!vis[i][j]&&mp[i][j]=='1'){ bfs_col(i,j);//搜索每"一块"岛屿 if(bfs_edge(i,j))ans++;}}}cout<<ans<<'\n';
}
int main(){ios::sync_with_stdio(0);cin.tie(0);int T;cin>>T;while(T--)solve();return 0;
}

7、字串简写

#include <bits/stdc++.h>
using namespace std;
int k;
string s;
char c1,c2;
long long ans,sum_c1;
int main(){cin>>k;cin>>s>>c1>>c2;//以c2为窗口的尾巴,找到所有距离大于等于k的c1,把所有满足条件的c1数加起来 for(int i=k-1,j=0;i<s.length();i++,j++){//i,j同时移动,形成滑动窗口 if(s[j]==c1)sum_c1++;//找到头,c1数加一 if(s[i]==c2)ans+=sum_c1;//找到尾巴了,累加答案数 }cout<<ans;return 0;
}

8、整数删除

#include <bits/stdc++.h>
using namespace std;
#define int long long 
const int N = 5e5 + 10;
int n, k;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>>q;//优先队列维护最小值
int pre[N], ne[N];//维护左边元素和右边元素的下标的下标
int cnt[N], a[N], tmp;//cnt代表下标为i的元素需要修改的值
signed main()
{cin >> n >> k;for (int i = 1; i <= n; i++) {cin >> tmp;q.push(make_pair(tmp, i));pre[i] = i - 1;//下标为i的元素的左边元素的下标为i-1ne[i] = i + 1;//下标为i的元素的右边的元素的下标为i+1}while (q.size() > n - k) {//查找k次int num = q.top().first;//获取最小值int id = q.top().second;//获取最小值的下标q.pop();/*这里cnt非0,说明在前面的操作过程中,该元素已经进行修改了,但是队列中还没有更新现在对队列的这个值进行修正,修正后重新查找最小值*/if (cnt[id]) {q.push({ num + cnt[id],id });cnt[id] = 0;}else {int left = pre[id];int right = ne[id];cnt[left] += num;//对左边的值进行修改cnt[right] += num;//对右边的值进行修改//将该元素在双向链表中删除ne[left] = right;pre[right] = left;}}while (!q.empty()) {int num = q.top().first;int id = q.top().second;q.pop();a[id] = num + cnt[id];}for (int i = 1; i <= n; i++) {if (a[i]) {cout << a[i] << " ";}}return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springBoot 在过滤器中如何捕获抛出的异常并自定义返回信息 (Filter doFilter)解决方案

在使用 servlet 过滤器时 发现异常报错 不准确&#xff0c;定义的 全局异常处理 好像失效了&#xff0c;过滤器里报错每次都会返回 状态码 &#xff1a;500 错误信息为 “Internal Server Error” 真正的异常只能输出的控制台&#xff0c;抛出不到前端。 问题&#xff1a; 一般…

python实例1.4:模拟用户登录过程(详解及其知识点拓展)

目录 一、主程序及代码分析 二、代码升级,安全优化

Linux安全认证隐匿插件:PAM配置探秘

Linux安全认证隐匿插件&#xff1a;PAM配置探秘 初遇PAM&#xff1a;踏入未知领域 案例&#xff1a; 现网环境升级总是报错端口已被占用&#xff0c;原因是执行升级包中的一条命令时&#xff0c;返回多了一条日志打印&#xff0c;导致升级包中解析命令执行结果错误 当时是第…

【图论】图的存储--链式前向星存图法以及深度优先遍历图

图的存储 介绍 无向图-就是一种特殊的有向图-> 只用考虑有向图的存储即可 有向图 邻接矩阵邻接表 邻接表 存储结构: (为每一个点开了一个单链表,存储这个点可以到达哪个点) 1:3->4->null2:1->4->null3:4->null4:null 插入一条新的边 比如要插一条边&am…

STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (e)

接上文&#xff0c;继续来看这个函数&#xff1a; /*** brief Initializes the GPIOx peripheral according to the specified* parameters in the GPIO_InitStruct.* param GPIOx: where x can be (A..G) to select the GPIO peripheral.* param GPIO_InitStruct:…

C语言 typedef

C 语言提供了 typedef 关键字&#xff0c;您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语 BYTE&#xff1a; typedef unsigned char BYTE;在这个类型定义之后&#xff0c;标识符 BYTE 可作为类型 unsigned char 的缩写&#xff0c;例如&#xff1…

SpringCloudAlibaba整合

springcloud Alibaba系列整合 1、SpringCloudAlibaba-概述&#xff08;一&#xff09; 2、SpringCloudAlibaba-整合nacos&#xff08;二&#xff09; 3、SpringCloudAlibaba-整合openfeign和loadbalence&#xff08;三&#xff09; 4、SpringCloudAlibaba-整合sentinel&am…

C++ stl容器vector的认识与简单使用

目录 前言&#xff1a; 本篇文档图片引用自&#xff1a;https://cplusplus.com/reference/vector/vector/ 1.vector的结构 2.迭代器类型 3.构造函数 4.迭代器 反向迭代器遍历 const迭代器 5.容量 maxsize shrink_to_fit reverse resize 6.修改 insert和erase 7.…

[C#]OpenCvSharp利用MatchTemplate实现多目标匹配

【效果展示】 原图 模板图 匹配结果&#xff1a; 【实现部分代码】 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using…

单链表专题

文章目录 目录1. 链表的概念及结构2. 实现单链表2.1 链表的打印2.2 链表的尾插2.3 链表的头插2.4 链表的尾删2.5 链表的头删2.6 查找2.7 在指定位置之前插入数据2.8 在指定位置之后插入数据2.9 删除pos节点2.10 删除pos之后的节点2.11 销毁链表 3. 链表的分类 目录 链表的概念…

苹果电脑怎么彻底删除软件 苹果电脑卸载软件在哪里 cleanmymac x怎么卸载 mac废纸篓怎么删除

苹果电脑卸载软件的方法相对直观和简单&#xff0c;尤其是对于习惯使用Mac操作系统的用户来说。以苹果MacBook Pro为例&#xff0c;以下是卸载软件的详细步骤、使用方法、注意事项与建议。 一、卸载软件的详细步骤&#xff1a; 1. 打开Mac电脑&#xff0c;进入桌面&#xff0c…

React面试

React渲染流程(重点) jsx描述界面 jsx babel render function>vdom vdom fiber 在进行渲染 vdom 转换fiber reconcile 转换过程创建dom commit 到domvdom React Element 对象, 只记录了子节点, 没有记录兄弟节点, 因为渲染不可中断 fiber fiberNode 对象, 是一个链表 父节…

linux大文件IO

在Linux中处理大文件&#xff08;通常指大小超过2GB的文件&#xff09;时&#xff0c;需要使用特定的系统调用和标志&#xff0c;以确保程序能够正确地处理大文件的读写。这主要是因为在32位系统上&#xff0c;传统的文件偏移量和文件大小使用off_t类型表示&#xff0c;它通常是…

HarmonyOS 开发-MpChart运动健康场景实践案例

介绍 MpChart是一个包含各种类型图表的图表库&#xff0c;主要用于业务数据汇总&#xff0c;例如销售数据走势图&#xff0c;股价走势图等场景中使用&#xff0c;方便开发者快速实现图表UI&#xff0c;MpChart主要包括线形图、柱状图、饼状图、蜡烛图、气泡图、雷达图、瀑布图…

SQLite数据库概述及在Java中的应用

## 什么是SQLite数据库&#xff1f; SQLite是一种轻量级的数据库管理系统&#xff0c;它不需要一个独立的服务器进程或操作系统的运行&#xff0c;而是将整个数据库&#xff0c;包括定义、表、索引以及数据本身&#xff0c;全部存储在一个独立的磁盘文件中。SQLite的设计理念是…

shell命令行中脚本特殊注释指定脚本解释器

在Linux系统中&#xff0c;#!/usr/bin 是一个特殊的注释&#xff0c;通常称为"shebang" 或 “hashbang”。用于指定脚本的解释器。 即它的目的是告诉操作系统应该使用哪个解释器来执行脚本。 通过在脚本的第一行使用#!&#xff0c;后面跟着解释器的路径&#xff0c;…

GIF在线生成器

上传图片就能生成GIF的前端WEB工具 源码也非常简单 <!DOCTYPE html> <html lang"zh" class"dark"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1, m…

【opencv】示例-drawing.cpp画线、箭头、矩形、多边形、椭圆、圆形以及在图像上渲染文本并通过循环实现动态绘制效果...

#include "opencv2/core.hpp" // 引入opencv2核心头文件 #include "opencv2/imgproc.hpp" // 引入opencv2图像处理头文件 #include "opencv2/highgui.hpp" // 引入opencv2高级GUI(head-up display)头文件 #include <stdio.h> // 引入标准输…

生成随机图片验证码

随着互联网的不断发展&#xff0c;安全性问题日益突出。为了保障用户账号的安全性&#xff0c;很多网站都引入了验证码机制。验证码是一种区分用户是计算机还是人的公共全自动程序&#xff0c;可以有效防止恶意攻击和自动化脚本的滥用。本文将介绍如何使用Python生成随机图片验…

论文笔记:面向实体的多模态对齐与融合网络假新闻检测

整理了2022TMM期刊 Entity-Oriented Multi-Modal Alignment and Fusion Network for Fake News Detection&#xff09;论文的阅读笔记 背景模型改进的动态路由算法Cross-Modal Fusion 实验 背景 现有的假新闻方法对多模态特征进行各种跨模态交互和融合&#xff0c;在检测常见假…