蓝桥杯小白打卡第二天
789. 数的范围
题目描述
给定一个按照升序排列的长度为 n n n 的整数数组,以及 q q q 个查询。
对于每个查询,返回一个元素 k k k 的起始位置和终止位置(位置从 0 0 0 开始计数)。
如果数组中不存在该元素,则返回 − 1 − 1 -1 -1 −1−1。
输入格式
- 第一行包含整数 n n n 和 q q q,表示数组长度和询问个数。
- 第二行包含 n n n 个整数(均在 1 ∼ 10000 1\sim10000 1∼10000 范围内),表示完整数组。
- 接下来 q q q 行,每行包含一个整数 k k k,表示一个询问元素。
输出格式
共 q q q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。
如果数组中不存在该元素,则返回 − 1 − 1 -1 -1 −1−1。
数据范围
- 1 ≤ n ≤ 100000 1\leq n\leq100000 1≤n≤100000
- 1 ≤ q ≤ 10000 1\leq q\leq10000 1≤q≤10000
- 1 ≤ k ≤ 10000 1\leq k\leq10000 1≤k≤10000
输入样例
6 3
1 2 2 3 3 4
3
4
5
输出样例
3 4
5 5
-1 -1
题目解释
首先,面对2分的问题,我们要先找到作用的区间。本道题目的区间为左区间为0,右区间为N-1。随后,我们需要找到一个可以用来划分区间的条件。在这里,我们让mid值大于等于X,从左向右得到满足条件的最后一个值,从而得到大于或等于S值的区间的左端点。随后,我们在此基础之上再次进行二分,L值即为刚才所得的左端点,R值为原先的N-1。随后,我们根据mid的值小于等于X,从左向右得到满足条件的最后一个点,从而得到结果
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;const int N=1e5+10;
int n,q,a[N];int main(){cin>>n>>q;for(int i=0;i<n;i++) scanf("%d",&a[i]);//输入while(q--){int x;cin>>x;int l=0,r=n-1;while(l<r){int mid=l+r>>1;if(a[mid]>=x) r=mid;//从右边向左,得到满足条件的最后一个else l=mid+1;}//得到大于或等于x值的区间的左端点if(a[l]==x){cout<<l<<" ";r=n-1;//回复现场while(l<r){//在之前判断的基础之上再进行计算,减少了次数int mid=l+r+1>>1;if(a[mid]<=x) l=mid;else r=mid-1;}cout<<r<<endl;}else cout<<-1<<" "<<-1<<endl;}return 0;
}
95. 费解的开关
游戏规则
- 灯的布局:有25盏灯排成一个5×5的方形,每盏灯都有一个开关,游戏者可改变其状态。
- 操作及连锁反应:每一步,游戏者改变某一个灯的状态,与之上下左右相邻的灯也要相应地改变状态。我们用数字1表示一盏开着的灯,用数字0表示关着的灯。例如,对于状态:
10111
01101
10111
10000
11011
改变最左上角的灯的状态后将变成:
01111
11101
11011
10000
11011
再改变正中间的灯后状态将变成:
01111
11001
11001
10100
11011
任务要求
- 输入格式:
- 第一行输入正整数
n,代表数据中共有n个待解决的游戏初始状态。 - 以下若干行数据分为
n组,每组数据有5行,每行5个字符。每组数据描述了一个游戏的初始状态。各组数据间用一个空行分隔。
- 第一行输入正整数
- 输出格式:
- 一共输出
n行数据,每行有一个小于等于6的整数,它表示对于输入数据中对应的游戏状态最少需要几步才能使所有灯变亮。 - 对于某一个游戏初始状态,若6步以内无法使所有灯变亮,则输出
-1。
- 一共输出
- 数据范围:
0 < n ≤ 500
输入输出样例
- 输入样例:
3
00111
01011
10001
11010
1110011101
11101
11110
11111
1111101111
11111
11111
11111
11111
- 输出样例:
3
2
-1
题目思路
首先要明白每一行(除去第一行)的灯的亮灭可以从下一行的灯的亮灭来决定,针对第一行,每一盏灯都可以选择是否按下开关,所以这是一个指数型枚举的问题(指数型枚举是指从n个不同元素中,不考虑元素之间的顺序,将所有可能的子集都列举出来的过程。),随后第一行每个开关都可以选择是否打开,所以对于每一个问题我们是有2^5=32种情况,对于每一种情况我们的第一行都是不同的开关选择,对应着唯一的下面行(除去最后一行)的开关选择,到了最后一行,如果依然存在没有被点亮的灯,那么则认为这个题目无法被满足
代码1
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>using namespace std;
const int N=6;
int g[N][N],backup[N][N];//由于每一个题目都对应着32种情况(32刚好满足32个不同的5位二进制数字),所以我们要提前做一个备份int dx[5]={0,0,-1,0,1},dy[5]={0,1,0,-1,0};// 翻转(x, y)位置的灯及其周围四个灯的状态
void turn(int x, int y) {for (int i = 0; i < 5; i++) {int nx = x + dx[i], ny = y + dy[i];if (nx >= 0 && nx < 5 && ny >= 0 && ny < 5) {g[nx][ny] ^= 1; // 使用异或操作来翻转状态}}
}int main(){int n;//一种有n种需要被解决的问题cin>>n;while(n--){for(int i=0;i<5;i++){for(int j=0;j<5;j++){scanf("%1d",&g[i][j]);//特别注意这个地方是1d,因为题目所给数字是链接在一起的,所以需要用1d来用来区分,当然这个地方也可以使用char数组}}//完成输入//接下来进行第一行的开关,对于这一个待解决的问题,有32种情况,那么我们在最开始先设置一个答案值为6,将这个值与每一种情况所得结果进行对比,取最小值int ans=7;for(int i=0;i<32;i++){//按照5位二进制数,进行每一种情况//情况一://首先完成备份int res=0;//创建一个临时存储的变量,该变量为局部变量,必须赋值memcpy(backup,g,sizeof g);for(int j=0;j<5;j++){if((i>>j)&1==1){turn(0,4-j);res++;}//如果这一位&的结果为1,那么就要进行开关的转换}//完成第一行开关for(int h=0;h<4;h++){for(int l=0;l<5;l++){if(g[h][l]==0){turn(h+1,l);res++;} }//遍历除去最后一行的所有,如果发现为0,则在下一行的该位置打开开关}//接下来要对结果进行检验,如果最后一行依然存在为0的情况,那么就证明无法满足题目条件bool flag=true;for(int l=0;l<5;l++){if(g[4][l]==0) flag=false;}if(flag) ans=min(ans,res);//如果可以,就把两个值中的最小值赋给ans//最后要回复现场memcpy(g,backup,sizeof g);}//完成了所有32种情况的遍历if(ans>6) cout<<"-1"<<endl;else cout<<ans<<endl;}return 0;
}
代码2(区别在于读取数据的方式不同,同时也是y总代码)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;const int N = 6;char g[N][N], backup[N][N];
int dx[5] = {-1, 0, 1, 0, 0}, dy[5] = {0, 1, 0, -1, 0};void turn(int x, int y)
{for (int i = 0; i < 5; i ++ ){int a = x + dx[i], b = y + dy[i];if (a < 0 || a >= 5 || b < 0 || b >= 5) continue; // 在边界外,直接忽略即可g[a][b] ^= 1;}
}int main()
{int T;cin >> T;while (T -- ){for (int i = 0; i < 5; i ++ ) cin >> g[i];int res = 10;for (int op = 0; op < 32; op ++ ){memcpy(backup, g, sizeof g);int step = 0;for (int i = 0; i < 5; i ++ )if (op >> i & 1){step ++ ;turn(0, i);}for (int i = 0; i < 4; i ++ )for (int j = 0; j < 5; j ++ )if (g[i][j] == '0'){step ++ ;turn(i + 1, j);}bool dark = false;for (int i = 0; i < 5; i ++ )if (g[4][i] == '0'){dark = true;break;}if (!dark) res = min(res, step);memcpy(g, backup, sizeof g);}if (res > 6) res = -1;cout << res << endl;}return 0;
}
1208. 翻硬币
问题描述
小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。
例如,可能情形是:**oo***oooo。如果同时翻转左边的两个硬币,则变为:oooo***oooo。
现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?
我们约定:把翻动相邻的两个硬币叫做一步操作。
输入格式
两行等长的字符串,分别表示初始状态和要达到的目标状态。
输出格式
一个整数,表示最小操作步数。
数据范围
输入字符串的长度均不超过 100。数据保证答案一定有解。
输入输出样例
输入样例 1
**********
o****o****
输出样例 1
5
输入样例 2
*o**o***o***
*o***o**o***
输出样例 2
1
题目思路
和上一个题目费解的开关类似,都是改变一个的值,同时会改动其他的值

是费解的开关的简易版
题目代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;const int N=110;
char o[N],a[N];
int ans;void turn(int x){if(o[x]=='*') o[x]='o';else o[x]='*';
}int main(){cin>>o>>a;//接受起始状态和目标状态int len=strlen(o);for(int i=0;i<len-1;i++){if(o[i]==a[i]) continue;turn(i),turn(i+1);ans++;}if(a[len-1]==o[len-1]) cout<<ans;return 0;
}
相关文章:
蓝桥杯小白打卡第二天
789. 数的范围 题目描述 给定一个按照升序排列的长度为 n n n 的整数数组,以及 q q q 个查询。 对于每个查询,返回一个元素 k k k 的起始位置和终止位置(位置从 0 0 0 开始计数)。 如果数组中不存在该元素,则返…...
Docker Compose:容器编排的利器
Docker Compose:容器编排的利器 引言 随着容器技术的普及,Docker成为了当今最受欢迎的容器编排工具之一。Docker Compose作为Docker生态系统中的一部分,允许用户以声明式的方式定义和运行多容器Docker应用。本文将深入探讨Docker Compose的基本概念、工作原理、使用场景以…...
springboot项目的单元测试
文章目录 依赖编写单测代码一些注意点 依赖 依赖包含了 JUnit、Mockito、Spring Test 等常用的测试工具 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><…...
JVM图文入门
往期推荐 【已解决】redisCache注解失效,没写cacheConfig_com.howbuy.cachemanagement.client.redisclient#incr-CSDN博客 【已解决】OSS配置问题_keyuewenhua.oss-cn-beijing.aliyuncs-CSDN博客 【排坑】云服务器docker部署前后端分离项目域名解析OSS-CSDN博客 微服…...
cursor 开发java项目教程简单上手
1.官网下载 Cursor - The AI Code Editor 下载完后注册账号,可以使用无限邮的方式 注册完之后 设置中文 可以选择设置为中文 Ctrl Shift X 进入设置页面输入chinese 然后重启 更改jdk跟maven仓库设置 ctrlshiftp 打开输入框后输入json,把下面代码…...
优化fm.jiecao.jcvideoplayer_lib中视频横竖屏自动适配原视频方案
fm.jiecao:jiecaovideoplayer:x.x.x 优化fm.jiecao.jcvideoplayer_lib中视频横竖屏自动适配原视频方案: 仅优化关键代码部分,源码: public void startWindowFullscreen() {Log.i(TAG, "startWindowFullscreen " " [" …...
aws(学习笔记第二十七课) 使用aws API Gateway+lambda体验REST API
aws(学习笔记第二十七课) 使用aws API Gatewaylambda体验REST API 学习内容: 使用aws API Gatewaylambda 1. 使用aws API Gatewaylambda 作成概要 使用api gateway定义REST API,之后再接收到了http request之后,redirect到lambda进行执行。…...
物联网的三层架构:感知层、网络层与应用层
物联网(Internet of Things, IoT)作为现代科技的重要组成部分,正在深刻改变我们的生活和工作方式。它将物理世界与数字世界无缝连接,通过智能设备、传感器和网络技术,实现数据的采集、传输和应用。物联网的架构通常分为…...
常用抓包工具tcpdump、Fiddler、Charles、Wireshark 和 Sniffmaster 下载地址
抓包大师官网下载地址 Sniff Master Download - Free TCP and HTTPS Proxy Sniffing Tool, Supports IOS Sniffing Fiddler classic官网下载地址 Download Fiddler Web Debugging Tool for Free by Telerik Fiddler Everywhere官网下载地址 The Ultimate Web Debugging Tool …...
π0开源了且推出自回归版π0-FAST——打造机器人动作专用的高效Tokenizer:比扩散π0的训练速度快5倍但效果相当
前言 过去的半个多月 deepseek火爆全球,我对其的解读也成了整整一个系列 详见《火爆全球的DeepSeek系列模型》,涉及对GRPO、MLA、V3、R1的详尽细致深入的解读 某种意义来讲,deepseek 相当于把大模型的热度 又直接拉起来了——相当于给大模…...
js-对象-JSON
JavaScript自定义对象 JSON 概念: JavaScript Object Notation,JavaScript对象标记法. JSON 是通过JavaScript 对象标记法书写的文本。 由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输. json中属性名(k…...
Houdini subuv制作输出阵列图
在游戏开发中经常需要用到sheet阵列图,并用其制作翻页动画。通过Houdini强大的节点组合可以配合输出subuv阵列图供游戏引擎使用。 本文出处:https://zhuanlan.zhihu.com/p/391796978 博主参考学习并写该文。 1.在obj分类下创建font节点以进行测试&#…...
虚幻基础17:动画蓝图
能帮到你的话,就给个赞吧 😘 文章目录 animation blueprint图表(Graph): 编辑动画逻辑。变量(Variables): 管理动画参数。函数(Functions): 自定义…...
路由器及工作原理与常用路由配置命令详解
一、引言 在当今数字化时代,网络已经成为人们生活和工作中不可或缺的一部分。无论是家庭网络中的多台设备同时上网,还是企业网络中各个部门之间的数据传输和资源共享,都离不开网络设备的支持。路由器作为一种关键的网络设备,在网…...
Windows编程:下载与安装 Visual Studio 2010
本节前言 在写作本节的时候,本来呢,我正在写的专栏,是 MFC 专栏。而 VS2010 和 VS2019,正是 MFC 学习与开发中,可以使用的两款软件。然而呢,如果你去学习 Windows API 知识的话,那么࿰…...
R语言 文本分析 天龙八部
起因, 目的: 前面有人对 “倚天屠龙记” 进行分析,我这里只是进行模仿而已。 完整的文件, 已经绑定了,反正读者可以找一下。 案例背景 小说《天龙八部》是金庸先生所著的武侠小说,也是“射雕三部曲”的前传。全书共50章,字数超过一百万字。故事发生在北宋末年,以大理…...
深度学习 Pytorch 建模可视化工具TensorBoard的安装与使用
50 TensorBoard的安装和使用 在深度学习建模过程中,为了能够快速绘制模型基本结构、观察模型评估指标伴随训练过程的动态变化情况,当然也为了能够观察图像数据,我们可以使用TensorBoard工具来进行Pytorch深度学习模型的可视化展示。 Tensor…...
【免费】2007-2019年各省科技支出占一般公共预算支出的比重数据
2007-2019年各省科技支出占一般公共预算支出的比重数据 1、时间:2007-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区名称、年份、科技支出占一般公共预算支出的比重 4、范围:31省 5、指标解释:…...
19爬虫:使用playwright登录超级鹰
本次案例一共解决了如下两个问题: (1)如何使用playwright截图,特别是验证码图片 (2)在playwright中如何判断一个元素可见 1.截图 我们首先解决第一个问题,截图。如果前期接触过selenium的小伙…...
[转]Java面试近一个月的面试总结
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46753275 前言 打算换个工作,近一个月面试了不少的公司,下面将一些面试经验和思考分享给大家。另外校招也快要开始了,为…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
