当前位置: 首页 > news >正文

蓝桥杯小白打卡第二天

789. 数的范围

题目描述

给定一个按照升序排列的长度为 n n n 的整数数组,以及 q q q 个查询。

对于每个查询,返回一个元素 k k k 的起始位置和终止位置(位置从 0 0 0 开始计数)。

如果数组中不存在该元素,则返回 − 1 − 1 -1 -1 11

输入格式

  • 第一行包含整数 n n n q q q,表示数组长度和询问个数。
  • 第二行包含 n n n 个整数(均在 1 ∼ 10000 1\sim10000 110000 范围内),表示完整数组。
  • 接下来 q q q 行,每行包含一个整数 k k k,表示一个询问元素。

输出格式

q q q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。

如果数组中不存在该元素,则返回 − 1 − 1 -1 -1 11

数据范围

  • 1 ≤ n ≤ 100000 1\leq n\leq100000 1n100000
  • 1 ≤ q ≤ 10000 1\leq q\leq10000 1q10000
  • 1 ≤ k ≤ 10000 1\leq k\leq10000 1k10000

输入样例

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. 费解的开关

游戏规则

  1. 灯的布局:有25盏灯排成一个5×5的方形,每盏灯都有一个开关,游戏者可改变其状态。
  2. 操作及连锁反应:每一步,游戏者改变某一个灯的状态,与之上下左右相邻的灯也要相应地改变状态。我们用数字1表示一盏开着的灯,用数字0表示关着的灯。例如,对于状态:
10111
01101
10111
10000
11011

改变最左上角的灯的状态后将变成:

01111
11101
11011
10000
11011

再改变正中间的灯后状态将变成:

01111
11001
11001
10100
11011

任务要求

  1. 输入格式
    • 第一行输入正整数n,代表数据中共有n个待解决的游戏初始状态。
    • 以下若干行数据分为n组,每组数据有5行,每行5个字符。每组数据描述了一个游戏的初始状态。各组数据间用一个空行分隔。
  2. 输出格式
    • 一共输出n行数据,每行有一个小于等于6的整数,它表示对于输入数据中对应的游戏状态最少需要几步才能使所有灯变亮。
    • 对于某一个游戏初始状态,若6步以内无法使所有灯变亮,则输出-1
  3. 数据范围0 < n ≤ 500

输入输出样例

  1. 输入样例
3
00111
01011
10001
11010
1110011101
11101
11110
11111
1111101111
11111
11111
11111
11111
  1. 输出样例
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 的整数数组&#xff0c;以及 q q q 个查询。 对于每个查询&#xff0c;返回一个元素 k k k 的起始位置和终止位置&#xff08;位置从 0 0 0 开始计数&#xff09;。 如果数组中不存在该元素&#xff0c;则返…...

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注解失效&#xff0c;没写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 下载完后注册账号&#xff0c;可以使用无限邮的方式 注册完之后 设置中文 可以选择设置为中文 Ctrl Shift X 进入设置页面输入chinese 然后重启 更改jdk跟maven仓库设置 ctrlshiftp 打开输入框后输入json&#xff0c;把下面代码…...

优化fm.jiecao.jcvideoplayer_lib中视频横竖屏自动适配原视频方案

fm.jiecao:jiecaovideoplayer:x.x.x 优化fm.jiecao.jcvideoplayer_lib中视频横竖屏自动适配原视频方案&#xff1a; 仅优化关键代码部分&#xff0c;源码&#xff1a; public void startWindowFullscreen() {Log.i(TAG, "startWindowFullscreen " " [" …...

aws(学习笔记第二十七课) 使用aws API Gateway+lambda体验REST API

aws(学习笔记第二十七课) 使用aws API Gatewaylambda体验REST API 学习内容&#xff1a; 使用aws API Gatewaylambda 1. 使用aws API Gatewaylambda 作成概要 使用api gateway定义REST API&#xff0c;之后再接收到了http request之后&#xff0c;redirect到lambda进行执行。…...

物联网的三层架构:感知层、网络层与应用层

物联网&#xff08;Internet of Things, IoT&#xff09;作为现代科技的重要组成部分&#xff0c;正在深刻改变我们的生活和工作方式。它将物理世界与数字世界无缝连接&#xff0c;通过智能设备、传感器和网络技术&#xff0c;实现数据的采集、传输和应用。物联网的架构通常分为…...

常用抓包工具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火爆全球&#xff0c;我对其的解读也成了整整一个系列 详见《火爆全球的DeepSeek系列模型》&#xff0c;涉及对GRPO、MLA、V3、R1的详尽细致深入的解读 某种意义来讲&#xff0c;deepseek 相当于把大模型的热度 又直接拉起来了——相当于给大模…...

js-对象-JSON

JavaScript自定义对象 JSON 概念: JavaScript Object Notation&#xff0c;JavaScript对象标记法. JSON 是通过JavaScript 对象标记法书写的文本。 由于其语法简单&#xff0c;层次结构鲜明&#xff0c;现多用于作为数据载体&#xff0c;在网络中进行数据传输. json中属性名(k…...

Houdini subuv制作输出阵列图

在游戏开发中经常需要用到sheet阵列图&#xff0c;并用其制作翻页动画。通过Houdini强大的节点组合可以配合输出subuv阵列图供游戏引擎使用。 本文出处&#xff1a;https://zhuanlan.zhihu.com/p/391796978 博主参考学习并写该文。 1.在obj分类下创建font节点以进行测试&#…...

虚幻基础17:动画蓝图

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 animation blueprint图表&#xff08;Graph&#xff09;&#xff1a; 编辑动画逻辑。变量&#xff08;Variables&#xff09;&#xff1a; 管理动画参数。函数&#xff08;Functions&#xff09;&#xff1a; 自定义…...

路由器及工作原理与常用路由配置命令详解

一、引言 在当今数字化时代&#xff0c;网络已经成为人们生活和工作中不可或缺的一部分。无论是家庭网络中的多台设备同时上网&#xff0c;还是企业网络中各个部门之间的数据传输和资源共享&#xff0c;都离不开网络设备的支持。路由器作为一种关键的网络设备&#xff0c;在网…...

Windows编程:下载与安装 Visual Studio 2010

本节前言 在写作本节的时候&#xff0c;本来呢&#xff0c;我正在写的专栏&#xff0c;是 MFC 专栏。而 VS2010 和 VS2019&#xff0c;正是 MFC 学习与开发中&#xff0c;可以使用的两款软件。然而呢&#xff0c;如果你去学习 Windows API 知识的话&#xff0c;那么&#xff0…...

R语言 文本分析 天龙八部

起因, 目的: 前面有人对 “倚天屠龙记” 进行分析,我这里只是进行模仿而已。 完整的文件, 已经绑定了,反正读者可以找一下。 案例背景 小说《天龙八部》是金庸先生所著的武侠小说,也是“射雕三部曲”的前传。全书共50章,字数超过一百万字。故事发生在北宋末年,以大理…...

深度学习 Pytorch 建模可视化工具TensorBoard的安装与使用

50 TensorBoard的安装和使用 在深度学习建模过程中&#xff0c;为了能够快速绘制模型基本结构、观察模型评估指标伴随训练过程的动态变化情况&#xff0c;当然也为了能够观察图像数据&#xff0c;我们可以使用TensorBoard工具来进行Pytorch深度学习模型的可视化展示。 Tensor…...

【免费】2007-2019年各省科技支出占一般公共预算支出的比重数据

2007-2019年各省科技支出占一般公共预算支出的比重数据 1、时间&#xff1a;2007-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区名称、年份、科技支出占一般公共预算支出的比重 4、范围&#xff1a;31省 5、指标解释&#xff1a…...

19爬虫:使用playwright登录超级鹰

本次案例一共解决了如下两个问题&#xff1a; &#xff08;1&#xff09;如何使用playwright截图&#xff0c;特别是验证码图片 &#xff08;2&#xff09;在playwright中如何判断一个元素可见 1.截图 我们首先解决第一个问题&#xff0c;截图。如果前期接触过selenium的小伙…...

[转]Java面试近一个月的面试总结

本文是在学习中的总结&#xff0c;欢迎转载但请注明出处&#xff1a;http://blog.csdn.net/pistolove/article/details/46753275 前言 打算换个工作&#xff0c;近一个月面试了不少的公司&#xff0c;下面将一些面试经验和思考分享给大家。另外校招也快要开始了&#xff0c;为…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...