备战蓝桥杯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 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 图机器学习课程笔记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程序 对于一些填空题 手算有时候更加方便快捷 当然手快选