备战蓝桥杯day2

2023-11-15

23-01-07

蓝桥杯day2

CH2 杂题

一、填空题

所谓杂题是指没有明确的解题算法,通过思考寻找最简单的解题路径。解题方式包括但不限于手算,编程,excel和简单的python程序
对于一些填空题,手算有时候更加方便快捷,当然手快选手除外。除了编程和手算,我们还可以合理利用电脑上的其他程序来进行计算。比如excel,计算器,word等。

例题1:《门牌制作》

题意:1-2020所有数字中有多少个2?

解题思路:显然,我们可以通过编程,循环mod10(类似day1中例题)来确定每一位是否是2并记录。除此之外,我们还可以输出1-2020,将其复制到word中,通过查找和替换来确定2的数量。或者在excel中下拉自动填充到2020。这两种方法对比编程来说可能更加方便,也不用再查找bug。

要合理的利用这些工具,帮助我们快速的解决填空题,腾出时间来处理后面的编程大题。

例题2:《卡片》

题意:有0-9,10种卡片,每种卡片2021张。问,最多可以用这些卡片组成1-多少的正整数。(如,0-9各30张最多可以拼到10)

解题思路:题干中明确写道建议使用计算机编程,确实,对于手快的,编程可能更加合适。书中依然使用excel进行解题,但书中写道“先估计可以拼出3000多个数”。对于我这种本b是估计不出来的,我可能更倾向于编程。编程的思路也类似与day1种的例题。循环每一位,记录cnt超过或等于时退出。如果超过则减一,如果相等则直接输出当前的i。

书中还给了python的代码。对于这种小题来说,python作为高级语言确实十分的方便,也更容易书写。大学生掌握一些python几千也是必须的。所以我建议大家可以稍微学习一下python语法,比赛时有可能会有奇效。但可能性价比不高,因为蓝桥杯不像xcpc,可以使用不同的编程语言提交程序。python只能用于解决填空题(或者写对拍?),不能在大题中使用,而填空题加起来才10分,相比于学习的付出,性价比不高,所以不用特地为此学习。只是之后如果有需求,不如早些以此为契机。

python代码:

s=['0','1','2','3','4','5','6','7','8','9']*2021
for i in range(1,10000):
    a=list(str(i))
    try:
        for j in a: s.remove(j)
    except:
        print(i-1)
        break

python代码确实非常的方便,直接进行模拟拼数字的过程,当找不到其中一种卡片时,就输出上一个数字。数组直接*2021、“j in a”、“s.remove(j)”这种操作时间复杂度很高,但也非常方便,确实是解决填空题的最优通解。

1.直接手模

有些填空题可以直接手动模拟来的得到答案,属于是最简单的一类题。

例题:《迷宫》

题意:在所给的地图中,每个位置有L(向左)、R、U(向上)、D四类指示,每个位置有个人,按指示走,多少人可以走出来。

解题思路:对于这道原题来说,100个位置,完全可以手动模拟一遍,但手模还是很费时间的。只针对这道题,可以用DFS来搜索,遍历每个位置,对可以走出去的人计数。两种方法个人感觉用时应该差不多。再进行思考,我们是否需要把所有位置都遍历呢?当一个人走不出去时,这个人走过的所有位置,都是走不出去的。这样想的话就很明显了。这个问题是闭环问题。

拓展:
即,给出一个有向图,问有多少个点不在环内。这样我们就把这个抽象成图论的一类问题。我们可以用记忆化搜索或者并查集、spfa这些算法来求解。当然对于数据量小的问题,还是可以用dfs来计算。单纯dfs的时间复杂度为O(n^2)(n为点数)。加上记忆化等操作可以优化为O(n)

下面给出纯暴力和带有简单标记的两种解法。
01-09 更新

暴力解法:暴力解法中也需要添加简单的vis标记。因为人可能会在途中进入循环,虽然不会回到起点但是还是会在环中转圈,这时候我们需要vis标记已经走过的地方,return之后清除标记。

#include<bits/stdc++.h>
using namespace std;
const int N=110;//此算法在1s的时间内最多处理m和n的乘积为10000的数据量
int n,m;
char mp[N][N];
char dir[4]={'L','R','U','D'};//四个方向记录下来,方便if判断
int ans=0;
bool vis[N][N];
void dfs(int x,int y){
    if(vis[x][y]==1)//如果之前访问过就return
        return;
    else
        vis[x][y]=1;
    if(mp[x][y]==dir[0]){
        if(y-1<0){//超出边界ans++
            ans++;
            return;
        }
        else{
            dfs(x,y-1);//还在图内则递归判断
            vis[x][y-1]=0;//判断完成后清除标记
        }
    }
    else if(mp[x][y]==dir[1]){
        if(y+1>=m){
            ans++;
            return;
        }
        else{
            dfs(x,y+1);
            vis[x][y+1]=0;
        }
    }
    else if(mp[x][y]==dir[2]){
        if(x-1<0){
            ans++;
            return;
        }
        else{
            dfs(x-1,y);
            vis[x-1][y]=0;
        }
    }
    else if(mp[x][y]==dir[3]){
        if(x+1>=n){
            ans++;
            return;
        }
        else{
            dfs(x+1,y);
            vis[x+1][y]=0;
        }
    }
}

int main(){
    scanf("%d%d",&n,&m);//n为行数m为列数
    for(int i=0;i<=n;i++){
        for(int j=0;j<=m;j++)
            vis[i][j]=0;
    }
    for(int i=0;i<n;i++){
        scanf("%s",&mp[i]);
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            dfs(i,j);
            vis[i][j]=0;
        }
    }
    printf("%d\n",ans);
    return 0;
}

非暴力解法可以使用并查集来进行求解。在之后碰到并查集算法时再以此举例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

备战蓝桥杯day2 的相关文章

  • 为什么这个 Web api 控制器不并发?

    我有一个 Web API 控制器 里面有以下方法 public string Tester Thread Sleep 2000 return OK 当我调用它 10 次 使用 Fiddler 时 我预计所有 10 次调用都会在大约 2 秒后
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • Rx.NET 中是否有一个Subject 实现,其功能类似于BehaviourSubject,但仅在值发生更改时才发出?

    有没有Subject https learn microsoft com en us previous versions dotnet reactive extensions hh229699 v vs 103 Rx NET 中的实现在功能
  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 如何将AVFrame转换为glTexImage2D使用的纹理?

    如您所知 AVFrame 有 2 个属性 pFrame gt data pFrame gt linesize 当我从视频 sdcard test mp4 android平台 读取帧后 并将其转换为RGB AVFrame副 img conve
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点

随机推荐

  • 图机器学习课程笔记6

    维生素C吃多了会上火 个人CSDN博文目录 cs224w 图机器学习 2021冬季课程学习笔记集合 目录 1 思维大纲 2 中文笔记 1 思维大纲 2 中文笔记
  • 面试经典(19)--求二叉树中节点的最大距离

    题目描述 写一个程序求二叉树中相距最远的两个节点之间的距离 图3 11 A和B即为所求距离最远的两个节点 我们先作图 看能否找到规律 我们可以看到 所求的两个节点可能经过二叉树的根结点 也可能不经过二叉树的根结点 每个节点维护左右子树最大距
  • 【笔记】C++库函数——bitset

    笔记 C 库函数 bitset 看到有大佬掏出这个库函数 一愣 这绝对是未曾想象过的道路 长见识 有时候做题总能碰见稀奇古怪的库函数 每个都令我大开眼界 以后看到感兴趣的都会记录一下 感觉是个好东西 算是学习道路上的小小积累吧 抓紧记录一下
  • VSCode相对路径问题

    习惯了anaconda等环境写程序的同学 在使用VSCode时 遇到的一个问题就是相对路径问题 在anaconda中 相对路径是针对当前的文件的相对路径 在VSCode中 相对路径是针对当前项目文件夹的 如果需要将VSCode内的相对路径设
  • 对不起,其实我是.......

    大家好 最近在后台收到有同学问我 你是哪个学校的 又或者问我你今年大几了 其实 我想这些答案在大家心里面应该早已经有了答案 不过 今天说的不是这些 而是 没错 今天我来给大家推荐一款 马克思原理复习必背的小程序 由我们学校 校级组织 清泽心
  • Linux Top 命令指南

    top 命令允许用户监视 Linux 上的进程和系统资源使用情况 它是系统管理员工具箱中最有用的工具之一 并且在每个发行版中都预装了它 与 ps 等其他命令不同 它是交互式的 我们可以浏览进程列表 终止进程 等等 本文中 我们将了解如何使用
  • 倾斜摄影三维模型五种常见格式

    在倾斜摄影三维数据中 OSGB数据居多 航拍的影像经过建模软件处理产出之时 有很多成果的数据需要我们去选择输出 对于不同的项目需求 我们需要选择合适的输出数据格式 他们之间有什么区别 分别是应用在哪些个领域 今天分别以OSGB OBJ FB
  • ipsec.conf(5) - Linux man pag 中文翻译

    ipsec conf 5 Linux man page 英文网址 https linux die net man 5 ipsec conf 未经许可 禁止转载 请知悉 Name 名称 ipsec conf IPsec配置和连接 Descri
  • Java内存分配介绍

    Java内存分配为 栈 堆 方法区 本地方法栈和寄存器 字节码文件加载时进入的内存方法区 方法运行区域为栈 变量也是存储在栈中 new出来的东西会在堆内存中开辟空间并产生地址 public class ArrayDemo public st
  • esp8266-12f介绍与使用

    nodemcu 体积相对较大 而且价格也相对较高 这时候 esp12f就可以用来代替 使用 nodemcu v2 v3 使用的是esp12e 与esp12f只有布线上有所差别 是esp8266 12的增强版 esp 12F 引脚图 各个引脚
  • 成员函数在类外定义的时候,函数名为啥不能加static

    今天清理手机微信没用的数据 惊人啊 删了1G 的图 再删删其它没用的数据 腾出来3G 的空间 无意间发现了一张以前聊天时候的图 回忆了一下 当时讨论的是 为啥成员函数在类外定义时 函数名不能加static class Point publi
  • (一)python库httprunner4 用法

    4个命令 httprunner V httprunner h hrun xxx 运行yaml json pytest 会内部执行hmake hmake xxx 把yaml json格式转成pytest测试用例 一个yaml用例结构 由一个c
  • 服务器查看系统盘位置,云服务器ecs怎么查看系统盘

    云服务器ecs怎么查看系统盘 内容精选 换一换 本节介绍将Windows操作系统的KVM实例变更为擎天架构实例的操作步骤 KVM实例 参考规格清单 查询对应规格的虚拟化类型 擎天架构实例 选择 通用计算增强型C7 变更规格时不支持修改网络类
  • 小样本目标检测综述 --刘浩宇,王向军 --阅读笔记

    文章目录 1 基本背景 2 大样本与小样本的对比 3 在没有大量数据支持的情况下 小样本检测保证检测效果 有哪些解决方法 3 1 数据域 3 1 1 转化原有数据集 D t D t
  • Intel编译器的强大pragma:unroll_and_jam()/nounroll_and_jam()

    Intel官方文档 Hints to the compiler to enable or disable loop unrolling and jamming These pragmas can only be applied to ite
  • Vim快速移动光标至行首和行尾 、第一行和最后一行

    vi中跳到文件的第一行和最后一行 由于vi编辑器不能使用鼠标 所以一个大文件如果要到最后一行只用键盘下键的话会是一个很痛苦的过程 还好有各种比较快捷的方法归我们使用 1 vi 编辑器中跳到文件的第一行 a 输入 0 或者 1 回车 b 键盘
  • 如何一次性选中WORD文档中的所有表格

    1 将下面的脚本复制 Sub SelectAllTables Dim tempTable As Table Application ScreenUpdating False 判断文档是否被保护 If ActiveDocument Prote
  • B-S模式API数据传输方案

    随着面向服务技术架构的兴起 越来越多的应用系统开始进行分布式设计和部署 系统由原来的单一的技术架构变成了面向服务的多系统架构 原来在一个系统之间就可以完成的业务流程 现在要通过多系统之间的多次交互实现 那么面向服务的多系统架构之间必然有着大
  • 【openwrt】【编译问题】openwrt编译问题

    undefined reference to pthread once 在某次openwrt编译过程中出现了undefined reference to pthread once错误 具体报错信息如下 openwrt staging dir
  • 备战蓝桥杯day2

    23 01 07 蓝桥杯day2 CH2 杂题 一 填空题 所谓杂题是指没有明确的解题算法 通过思考寻找最简单的解题路径 解题方式包括但不限于手算 编程 excel和简单的python程序 对于一些填空题 手算有时候更加方便快捷 当然手快选