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

蓝桥杯思维训练营(一)

文章目录

  • 题目总览
  • 题目详解
    • 翻之
    • 一起做很甜的梦

蓝桥杯的前几题用到的算法较少,大部分考察的都是思维能力,方法比较巧妙,所以我们要积累对应的题目,多训练

题目总览

翻之
一起做很甜的梦

题目详解

翻之

在这里插入图片描述
在这里插入图片描述

思维分析:一开始比较难有思路,我们不可能一行行去翻转我们的行,然后去判断。
正确的思路:只要统计相同的列的数目就是所需的答案

原因:相同的列中,对于不是0的行是相同的,我们只要翻转对应的行即可实现列的全部的元素都为1
技巧:统计对应的列的数目,我们可以使用defaultdict字典进行存储,对于defaultdict(int),默认的值为0,并且该题还有一个可以使用一个翻转的操作(使用zip 和 *)

不理解这个二维列表的翻转的操作可以参考另一篇博客

from collections import defaultdict
n,m = map(int,input().split())strnum = []
for i in range(n):# 把输入的字符串拆分为单个的字符getstr = list(input())# 每组并入一个大的列表,形成二维列表strnum.append(getstr)
# 列表转置
transposed_matrix = [list(row) for row in zip(*strnum)]count = defaultdict(int)
ans = 0
for i in transposed_matrix:# 合并字符tmp = ''.join(i)# 计数count[tmp]+=1# 记录最大值ans = max(ans,count[tmp])
print(ans)

一起做很甜的梦

在这里插入图片描述

在这里插入图片描述

思路分析:一开始的话,我的思路是想通过,一开始确定一个起始点,然后进行加减数目可以得到序列,但是进行实验之后,发现重复并不可避免
正确的思路:发现偶数的n的时候,前面是偶数的排列,后面是奇数的排列,n为奇数的时候,前面是奇数排列,后面是偶数的排列

n = int(input())# 当n 是偶数的时候,偶数放前面
# 当n 是奇数的时候,奇数放前面
ou = [i for i in range(1,n+1) if i%2==0]
ji = [i for i in range(1,n+1) if i%2==1]
if n%2 ==0:# 偶数组合ans = ou+ji
else:# 奇数组合ans = ji+ou# 按格式输出
for i in ans:print(i,end=' ')
http://www.lryc.cn/news/530382.html

相关文章:

  • 【C语言】结构体对齐规则
  • 2025-工具集合整理
  • 快速提升网站收录:利用网站用户反馈机制
  • 图漾相机——Sample_V1示例程序
  • 如何使用C#的using语句释放资源?什么是IDisposable接口?与垃圾回收有什么关系?
  • HTML 字符实体
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_strerror_init()函数
  • 【c++】类与对象详解
  • nginx目录结构和配置文件
  • MacBook Pro(M1芯片)Qt环境配置
  • Kotlin 使用 Springboot 反射执行方法并自动传参
  • 网络安全技术简介
  • nginx 报错404
  • 【1.安装ubuntu22.04】
  • 【设计模式-行为型】备忘录模式
  • Linux环境下的Java项目部署技巧:安装 Mysql
  • 云原生(五十三) | SQL查询操作
  • 【前端知识】常用CSS样式举例
  • 硕成C语言1笔记
  • [SAP ABAP] Debug Skill
  • 理解 InnoDB 如何处理崩溃恢复
  • UE5 蓝图学习计划 - Day 8:触发器与交互事件
  • 根据接口规范封装网络请求和全局状态管理
  • Unet 改进:在encoder和decoder间加入TransformerBlock
  • work-stealing算法 ForkJoinPool
  • DeepSeek Janus-Pro:多模态AI模型的突破与创新
  • STM32-时钟树
  • hot100_21. 合并两个有序链表
  • 代码讲解系列-CV(一)——CV基础框架
  • C++ Primer 标准库类型string