蓝桥杯小白打卡第二天
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 前言 打算换个工作,近一个月面试了不少的公司,下面将一些面试经验和思考分享给大家。另外校招也快要开始了,为…...

Elasticsearch最新入门教程
文章目录 Elasticsearch最新入门教程1.Elasticsearch安装2.Kibana安装3.Elasticsearch关键概念4.SpringBoot整合Elasticsearch4.1 导入Elasticsearch数据4.2 创建SpringBoot项目4.3 修改pom.xml文件4.4 创建es实体类4.5 创建es的查询接口 5.DSL语句5.1 无条件查询5.2 指定返回的…...

字符串 金额转换
package heima.Test09;import java.util.Scanner;public class Money {public static void main(String[] args) {//1。键盘录入一个金额Scanner sc new Scanner(System.in);//请输入一个数据String result "";int money;while (true) {System.out.println("请…...
CentOS 7 如何安装llvm-project-10.0.0?
CentOS 7 如何安装llvm-project-10.0.0? 需要先升级gcc至7.5版本,详见CentOS 7如何编译安装升级gcc版本?一文 # 备份之前的yum .repo文件至 /tmp/repo_bak 目录 mkdir -p /tmp/repo_bak && cd /etc/yum.repo.d && /bin/mv ./*.repo …...

robot_lab——rsl_rl的train.py整体逻辑
文章目录 Go2机器人训练流程详细分析概述1. 训练启动流程1.1 命令行参数解析RSL-RL相关参数组Isaac Sim应用启动参数组 1.2 RL配置1.3 Isaac Sim启动 2. 环境配置加载2.1 Hydra配置系统 3. 环境创建与初始化3.1 Gym环境创建3.2 Manager系统初始化3.2.1 ObservationManager3.2.2…...

游戏开发中的CI/CD优化案例:知名游戏公司Gearbox使用TeamCity简化CI/CD流程
案例背景 关于Gearbox: Gearbox 是一家美国电子游戏公司,总部位于德克萨斯州弗里斯科,靠近达拉斯。Gearbox 成立于1999年,推出过多款史上最具代表性的视频游戏,包括《半衰期》、《战火兄弟连》以及《无主之地》。 团队…...
动态规划之01背包
首要 由于自己的个人原因(说白了就是懒),忙于各种事情,实在忙不过来(哭),只能把发文分享的事情一推再推,直到某天良心发现产生了想发文的想法,于是就写下了这篇文章,请各位大佬轻喷 背包问题 背包问题是一…...

【各种主流消息队列(MQ)对比指南】
主流消息队列对比分析 一、核心指标对比 特性/消息队列RabbitMQKafkaRocketMQActiveMQPulsar协议支持AMQP, MQTT, STOMP自定义协议JMS/自定义协议JMS, AMQP, MQTT, STOMPMQTT, AMQP, STOMP单机吞吐量万级百万级十万级万级百万级延迟微秒级(低吞吐)毫秒…...
DDD架构实战 领域层 事件驱动
目录 核心实现: 这种实现方式的优势: 在实际项目中,你可能需要: 事件驱动往往是在一个微服务内部实现的 领域时间是DDD架构中比较常见的概念 在领域层内部的一个模型更改了状态或者发生了一些行为 向外发送一些通知 这些通…...

前端flex、grid布局
flex布局 弹性布局是指通过调整其内元素的宽高,从而在任何的显示设备上实现对可用显示空间最佳填充的能力。弹性容器扩展其内元素来填充可用空间,或将其收缩来避免溢出 简单来说,弹性盒子模型,是为了你的网页可以在不同分辨率设…...

基于 Zynq 平台的 EtherCAT 主站的软硬件协同设计
摘要: 针对工业自动化对控制能力和强实时性的需求,提出了一种基于 FPGA 的改进型 EtherCAT 硬件主站方案 。 该方案利用 Zynq-7000 平台,在 PL 端实现 FPGA 协议栈,以保证核心功能的高效执 行 。 基于 AXI4 总线设计…...