蓝桥杯 双周赛 第16场 小白赛 题目复盘 (2024年8月10日)

在这里插入图片描述

3. 织女的考验

  • 下面的代码看似很正确,但忽略了一个细节,下面判断是否有字母数量不同时,用abs(cnt[i]) == 1判断,这里忽略了abs(cnt[i]) 等于其他值的情况(YES和NO都存在)
#include <iostream>
#include <cstring>
using namespace std;int n;
int cnt[30];
bool check(string s, string t) {memset(cnt, 0, sizeof cnt);if (s.size() == 1) {return true;}for(int i = 0; i < s.size(); i++) {cnt[s[i] - 'a']++;cnt[t[i] - 'a']--;}int num = 0;for (int i = 0; i < 26; i++) {if (abs(cnt[i]) == 1) num++;if (num > 2) return false;}return true;
}
int main() {cin >> n;string s, t;while(n--) {cin >> s >> t;if (check(s, t)) cout << "YES" << endl;else cout << "NO" << endl;}return 0;
}
  • 修改后的代码
  • 猜想1: 用num += cnt[i]; 最后判断num是否等于0,来判断答案。
  • 不能,因为所有长度相等的字符串都满足这条件。
  • 猜想2:用num += abs(cnt[i]);最后用num是否大于0判断。
  • 不能,满足题目的只有两种情况,(1)两个字符串字母数量都相同,(2) 有两个字母数量不同,且都相差1,一个相减结果-1一个1。
#include <iostream>
#include <cstring>
using namespace std;int n;
int cnt[30];
bool check(string s, string t) {memset(cnt, 0, sizeof cnt);if (s.size() == 1) {return true;}for(int i = 0; i < s.size(); i++) {cnt[s[i] - 'a']++;cnt[t[i] - 'a']--;}int num = 0;for (int i = 0; i < 26; i++) {num += abs(cnt[i]);if (num > 2) return false;}return true;
}
int main() {cin >> n;string s, t;while(n--) {cin >> s >> t;if (check(s, t)) cout << "YES" << endl;else cout << "NO" << endl;}return 0;
}

4. 仙男仙女

  • 我第一次想到的是用前缀和来做,但是,没有考虑好内存问题(需要开int * 1e9)。还有,应该将pos的值维护完以后,求好前缀和以后,在计算ans。
#include <iostream>
using namespace std;
const int N = 1e5 + 01, M = 1e9 + 10;
int a[N], n, p[N], b[N];
int pos[M];int main()
{int ans = 0;cin >> n;for (int i = 1; i <= n; i++) {cin >> p[i];}for (int i = 1; i <= n; i++) {cin >> b[i];}for (int i= 1; i <= n; i++) {pos[p[i]]++;pos[i] += pos[i - 1];int l = max(0, i - b[i] - 1), r = min(n, i + b[i] + 1 );if ((pos[i - 1] - pos[l] == 0) && (pos[r] - pos[i] == 0)) {ans++;}}cout << ans;return 0;
}
  • 换一种思路,可以直接用pair储存位置和距离,按位置排序,最后求ans。
#include<iostream>
#include<algorithm>using namespace std;
#define x first
#define y second
const int N = 1e5 + 10;
int n;
pair<int, int> pa[N];int main() {cin >> n;for (int i = 1; i <= n; i++) {cin >> pa[i].x;}for (int i = 1; i <= n; i++) cin >> pa[i].y;sort(pa + 1, pa + n + 1);int ans = 0;if (n > 1 && pa[1].x + pa[1].y < pa[2].x) ans++;if (n > 1 && pa[n].x - pa[n].y > pa[n-1].x) ans++;for (int i = 2; i < n; i++) {if (pa[i].x + pa[i].y < pa[i + 1].x && pa[i].x - pa[i].y > pa[i - 1].x) ans++;}cout << ans;return 0;
}

5. 牛郎的微信群

  • 分析: n 最大 10^5所以最大复杂度只能是 O ( n l o g ( n ) ) O( n log(n) ) O(nlog(n))
  • 我想,构建一个树. f[i] = g[p1] + g[p2] …(其中,p1 p2 … 是与i直接相连的节点,f[i]表示与i距离为2的节点,g[p]表示与节点p距离为1的点)。ans = (f[1] + f[2] + … + f[n]) / 2;
  • 需要注意的点,(1)e和ne的大小 (2) f[r] += g[t] - 1; 减一表示要减去他自己。
#include<iostream>
using namespace std;const int N = 2e5 + 10;
int n, ind = 0, h[N], e[N * 2], ne[N * 2], g[N], f[N];void add(int a, int b) {e[++ind] = b;ne[ind] = h[a];h[a] = ind;
}
int ans = 0;
bool bs[N];void dfs(int r) {bs[r] = true;// cout << r << " ";for (int i = h[r]; i; i = ne[i]) {int t = e[i];f[r] += g[t] - 1;if (bs[t]) continue;dfs(t);}
}int main() {cin >> n;int x, y;for (int i = 0; i < n - 1; i++) {cin >> x >> y;add(x, y);add(y, x);g[x]++;g[y]++;}dfs(1);for (int i = 1; i <= n; i++) {cout << f[i] << " ";}return 0;
}

6. 就别重逢

题意可抽象为:给你n和k,求用不小于k的任意个正整数组成和不大于n的排列(有顺序)有多少种?
分析:
看到这个问题的时候,第一个就想到的是用动态规划来做,公式推导如下。(其中, f [ i ] f[i] f[i]表示刚好达到亲密度 i i i有多少种方法)

f[i] = f[0 1 2 .. i - k]
f[i + 1] = f[0 1 2 3 .. i-k i+1-k] = f[i] + f[i+1-k];
f[i] = f[i-1] + f[i-k];

通过程序如下:(题目要求达到n有多少种变化,也就是将f[k] f[k+1] … f[n] 加起来)

#include <iostream>
using namespace std;
typedef long long LL;
const int N = 1e5 + 10;
int n, k;
LL f[N], p = 1e9 + 7;int main()
{cin >> n >> k;f[k] = 1;LL ans = 2;for (int i = k + 1; i <= n; i++) {f[i] = (f[i-1] + f[i-k]) % p;ans = (ans + f[i]) % p;}cout << ans;return 0;
}

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

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

相关文章

java: 程序包org.springframework.boot.autoconfigure不存在

通过 mvn -U idea:idea 命令重新加载maven包&#xff0c;具体操作是这样的&#xff1a; 打开cmd窗口cd 到 工程根目录&#xff0c;比如我的工程是&#xff1a;D:\IdeaProjects\demo&#xff0c; 执行 mvn -U idea:idea 命令&#xff0c;完了以后重新运行项目就正常了&#xff…

《网络编程实战系列》(17)网络桥接模式

文章目录 **桥接模式的基本原理****桥接模式的应用场景****桥接模式的优缺点****桥接模式的实现****总结**桥接模式(Bridge Mode)是一种网络配置模式,用于将多个网络接口或网络段连接在一起,使其在逻辑上形成一个单一的网络。这种模式常用于在不同网络之间传递数据包,并使…

树与二叉树、图的基本概念

一、树与二叉树的基本概念和性质 1. 树的的性质 1&#xff09;树中的结点数 n 等于所有结点的度数之和加 1 【说明】结点的度是指该结点的孩子数量&#xff0c;每个结点与其每个孩子都由唯一的边相连&#xff0c;因此树中所有结点的度数之和等于树中的边数之和。树中的结点&…

pr涂鸦转场(喷漆涂鸦效果视频转场过渡效果)mogrt模板

https://prmuban.com/40353.html 主要特点&#xff1a; 与Adobe Premiere Pro 2024兼容 4K分辨率&#xff08;38402160&#xff09; 自动调整大小功能 快速渲染时间 无需额外插件 包括视频教程

240806-在Linux/RHEL开机中自动启动bash脚本

A. 常规方法 要在Red Hat Enterprise Linux (RHEL) 中设置开机启动的bash脚本&#xff0c;可以使用以下方法之一&#xff1a; 方法1&#xff1a;使用/etc/rc.d/rc.local 打开/etc/rc.d/rc.local文件&#xff1a; sudo vi /etc/rc.d/rc.local在文件末尾添加你想要执行的bash脚…

<Qt> 窗口

目录 一、Qt窗口 二、菜单栏 &#xff08;一&#xff09;创建菜单栏 &#xff08;二&#xff09;在菜单栏中添加菜单 &#xff08;三&#xff09;创建菜单项 &#xff08;四&#xff09;在菜单项之间添加分割线 &#xff08;五&#xff09;给菜单项添加槽函数 &#xf…

虚拟机和docker容器的区别

背景 我们知道虚拟机和docker容器中的进程都可以在独立的空间中运行&#xff0c;互不干扰&#xff0c;那么两者主要区别是什么呢 虚拟机和docker容器的区别 虚拟机主要是通过硬件模拟出来一个个操作系统&#xff0c;每个操作系统有自己的的文件和目录&#xff0c;网络设备等…

最新HTML设计搜索表单

设计搜索表单 页眉中包含表单&#xff0c;表单中只需包含label和Input. 实现如下效果&#xff1a;文本框动态变宽效果 代码&#xff1a;6.2.4.设计搜索表单.html <!DOCTYPE html> <html><head><meta charset"utf-8"><title></t…

第R2周:Tensorflow2实现:LSTM-火灾温度预测

本文为365天深度学习训练营 中的学习记录博客原作者&#xff1a;K同学啊 任务说明&#xff1a;数据集中提供了火灾温度&#xff08;Tem1&#xff09;、一氧化碳浓度&#xff08;CO 1&#xff09;、烟雾浓度&#xff08;Soot 1&#xff09;随着时间变化数据&#xff0c;我们需要…

Flip PDF Plus Corporate v7.1.25 激活版下载及安装步骤 (PDF电子书翻页)

前言 Flip PDF Plus Corporate 是一款功能强大的PDF翻页工具&#xff0c;也被称为名编辑电子杂志大师。它能够快速将PDF文件转换成具有翻页动画效果的电子书&#xff0c;同时保留原始的超链接和书签。该工具支持将相册、视频、音频、Flash、YouTube视频和链接等内容完全嵌入到…

OpenGL入门一:基础知识及概念

1、什么是OpenGL OpenGL&#xff1a;open graphic library&#xff0c;即开发图形库。它被定义为“图形硬件的一种软件接口”。实质上是3D图形和模型库&#xff0c;它具有高度可移植性&#xff0c;并且具有非常快的速度。可以创建优雅漂亮的3D图形&#xff0c;具有出色的视觉质…

vue3实现video视频+弹幕评论

vue3实现视频加评论 之前写了一篇博客使用了弹幕插件http://t.csdnimg.cn/616mlvue3 使用弹幕插件&#xff0c;今天对这个页面进行了升级 变成了 vue3使用video 这个没有使用插件&#xff0c;昨天看了好多&#xff0c;没发现有用的插件&#xff0c;下载了几个都没办法使用就用…

Linux C++ 多线程编程

Linux C 多线程编程 参考教程&#xff1a; c&#xff1a;互斥锁/多线程的创建和unique_lock&#xff1c;mutex&#xff1e;的使用_mutex 头文件 vcCSDN博客 1. 编写unique_mutex 1.1 创建文件夹 通过终端创建一个名为unique_mutex的文件夹以保存我们的VSCode项目&#xff…

基于HTML弹性布局做的支付宝界面

里面有一些语言图标&#xff0c;想用的可以去iconfont-阿里巴巴矢量图标库里面寻找&#xff0c;这类图标跟文字一样可以设置大小、文本居中之类的&#xff0c;并不算严格意义上的图片&#xff0c;废话不多说&#xff0c;直接上成果和代码 <!DOCTYPE html> <html lang&…

C语言程序设计-[14] 循环结构的一些应用(续)

1、求n! 。 对于这个问题&#xff0c;首先分析四个要素如下&#xff1a; 循环初始化条件&#xff1a;i1; fact1; //n!1*2*3*...*n&#xff0c;从这个问题来看&#xff0c;首先需要乘起来的数有n个&#xff0c;第一个即i1&#xff0c;然后需要fact来存储乘起来的数(初始时fac…

SpringBoot下载resources目录下的文件

1.引入SpringBoot和hutool依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.22</version></dependency>2.在项目resources目录下放入模版文件&#xff0c;结构如下&#xff1a…

【学习笔记】解决在声音输出中找不到蓝牙耳机设备的问题

【学习笔记】在声音输出中找不到蓝牙耳机设备 在使用蓝牙耳机的时候&#xff0c;遇见一个问题&#xff0c;就是在电脑在连接蓝牙耳机之后&#xff0c;在声音输出中找不到蓝牙耳机设备&#xff0c;只能使用扬声器播放声音。电脑使用的是Windows 11系统。后来在网上寻找解决方案…

使用MAC电脑、iPhone 真机调试 H5页面

使用MAC电脑、iPhone 真机调试 H5页面 简介Safari 浏览器设置iPhone 手机设置开始调试 简介 为方便在 H5开发过程中在真实手机调试 H5页面&#xff0c;可进行一下设置 Safari 浏览器设置 在 Mac 电脑打开浏览器后&#xff0c;点左上角的" Safari 浏览器" -> “设…

LVS详细配置

目录 LVS简介 LVS集群体系结构 LVS相关术语 lvs集群的类型 1、NAT模式 NAT简介 NAT模式数据逻辑 2、DR模式 DR模式简介 DR模式数据逻辑 DR模式的特点 3、TUN模式 TUN模式简介 TUN模式数据传输过程 TUN模式特点 4、fullnet模式 LVS模式总结 LVS调度算法 LVS静…

每天五分钟深度学习pytorch:训练神经网络模型的基本步骤

本文重点 本文个人认为是本专栏最重要的章节内容之一,前面我们学习了pytorch中的基本数据tensor,后面我们就将学学习深度学习模型的内容了,在学习之前,我们先来看一下我们使用pytorch框架训练神经网络模型的基本步骤,然后我们下面就将这些步骤分解开来,详细学习。 代码…