Python杂题

news2024/11/16 11:51:20

目录

一、前言

二、例题1——修剪灌木

三、例题2—— 付账问题

四、例题3——最少砝码

五、例题四——矩形拼接

六、例题五——蜂巢


一、前言

竞赛题有很多不需要什么算法的题目,只要学过编程语言就能做,其考核思维、逻辑、编码能力。而这种题有“模拟题、构造题、思维题、找规律题”,统称“杂题”,每次蓝桥杯都会出现,而且可能有好几题,是重要的得分点!这些题可能比较简单,也可能比较难。下面就让我们一起来看看。

二、例题1——修剪灌木

修剪灌木 2022 年第十三届省赛, lanqiao0J 题号 2107

【问题描述】

爱丽丝要完成一项修剪灌木的工作。有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。当修剪了最右侧的灌木后,她会调转方向,下一天开始向左修剪灌木。直到修剪了最左的灌木后再次调转方向。然后如此循环往复。灌木每天从早上到傍晚会长高 1 厘米,而其余时间不会长高。在第一天的早晨,所有灌木的高度都是 0 厘米。爱丽丝想知道每棵灌木最高长到多高?

【输入格式】一个正整数 N,含义如题面所述。

【输出格式】输出 N 行,每行一个整数,第 i 行表示从左到右第 i 棵树最高能长到多高。

【评测用例规模与约定】对于30%的数据,N < 10;对于100%的数据,1 < N < 10000。

注意上面的循环是 0 ~ n-1。

三、例题2—— 付账问题

付账问题  2018年第九届蓝桥杯省赛,lanqiao0J 题号174

【题目描述】

有 n 个人出去吃饭,他们总共消费了 S 元。其中第 i 个人带了 ai 元。所有人带的钱的总数是足够付账的。

现在问题来了:每个人分别要出多少钱呢?

为了公平起见,我们希望在总付钱量恰好为 S 的前提下,最后每个人付的钱的标准差最小。

我们约定,每个人支付的钱数可以是任意非负实数,即可以不是 1 分钱的整数倍。你需要输出最小的标准差是多少。

标准差:是多个数与它们平均数差值的平方平均数,一般用于刻画这些数之间的“偏差有多大”。设第 i 个人付的钱为 bi 元,那么标准差为:

解题思路:

如果每人带的钱够多,人均完全一样,bi = S/n = avg,那就简单了,得 X = 0。不过总有人钱不够,分两种情况讨论:

(1)第 i 人带的钱不够平均数 avg,他只能出他带的全部钱 ai。

(2)第 i 人带的钱比平均数 avg 多,他可以多摊一些。

求解步骤:

(1)对 ai 从小到大排序;

(2)前一部分人的钱不够,那么就出他们所有的钱;

(3)从总付钱数中扣除前一部分人出的钱,得剩余钱数为S',以及后一部分人的出钱平均数avg' 。

(4)后一部分人的钱多,他们多出一些。怎么出?这部分人也分两类:

(i)比较有钱的,但是他的的钱还是要全出

(ii)非常有钱的,不管怎么摊他都有富余

from math import *
n,s=map(int,input().split())
a=list(map(int,input().split()))
a.sort()

avg=s/n
sum=0
for i in range(n):
    if a[i]*(n-i)<s:
        sum+=pow(a[i]-avg,2)
        s-=a[i]
    else:
        cur_avg=s/(n-i)   # 更新平均出线
        sum+=pow(cur_avg-avg,2)*(n-i)
        break
print("{:.4f}".format(sqrt(sum/(n))))

10 30
2 1 4 7 4 8 3 6 4 7
0.7928
>>> 

四、例题3——最少砝码

最少砝码  2021年第十二届蓝桥杯省赛,lanqiao0J题号1461

【问题描述】

你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。那么这套砝码最少需要包含多少个砝码?注意砝码可以放在天平两边。

【输入格式】

输入一行包含一个正整数 N,1 < N < 10^9。

【输出格式】

输出一行表示答案。

这他喵是一道规律题,有点意思的!

注意看下面的分析,学到了学到了。这个分析方法我不看答案确实没想出来。

发现规律了吧!代码炒鸡简洁!

N=int(input())
R=1
cnt=1
while R<N:
    R=R*3+1
    cnt+=1
print(cnt)

五、例题四——矩形拼接

矩形拼接  2022年第十三届省赛,lanqia00J 题号 2238

时间限制:1.0 s        内存限制:512.0 MB

【问题描述】

已知 3 个矩形的大小依次是 a1 × b1,a2 × b2 和 a3 × b3。用这 3 个矩形能拼出的所有多边形中,边数最少可以是多少?

解题思路:

本题是一道纯粹的构造题,思维简单,但是代码比较繁琐细致,目的是考核编码能力

3个矩形摆在一起,可能有几个边?在纸上手画观察,如果3个矩形完全不能匹配,是8边形;如果能完全匹配成一个新矩形,是4边形;其他情况是6边形。

本题只有3个矩形,并不复杂。3个矩形做任意组合,每个矩形有横竖两种摆法,共48种情况。T=1000组测试,总计算量是1000×48,计算量很小不会超时,所以简单地用暴力法组合出所有情况,取最小值即可。

def check1(x1,x2,x3):
    if x1>=x2 and x1>=x3:
        if x1==x2+x3 and a[2]+a[3]-x2==a[4]+a[5]-x3:
            return True
    if x2>=x1 and x2>=x3:
        if x2==x1+x3 and a[0]+a[1]-x1==a[4]+a[5]-x3:
            return True
    if x3>=x1 and x3>=x2:
        if x3==x1+x2 and a[0]+a[1]-x1==a[2]+a[3]-x2:
            return True

def check2(x1,x2,x3):
    if x1>=x2 and x1>=x3:
        if x1==x2+x3:
            return True
    if x2>=x1 and x2>=x3:
        if x2==x1+x3:
            return True
    if x3>=x1 and x3>=x2:
        if x3==x1+x2:
            return True
    return False

T=int(input())
for t in range(T):
    a=list(map(int,input().split()))
    ans=8
    for i in range(0,2):     # 第一个矩形
        for j in range(2,4):        # 第二个矩形
            for k in range(4,6):        # 第三个矩形
                x1,x2,x3 = a[i],a[j],a[k]
                if x1==x2 and x2 == x3:
                    ans = min(ans,4)
                if check1(x1,x2,x3):
                    ans = min(ans,4)
                if x1==x2 or x1==x3 or x2==x3:
                    ans = min(ans,6)
                if check2(x1,x2,x3):
                    ans = min(ans,6)
    print(ans)

六、例题五——蜂巢

蜂巢  2022 年第十三届省赛, lanqiao0J 题号 2134

时间限制:1.0 s    内存限制:512.0 MB

【问题描述】

蜂巢由大量的六边形拼接而成,定义蜂巢中的方向为:

0 表示正西方向,1 表示西偏北 60°,2 表示东偏北 60°,3 表示正东,4 表示东偏南 60°,5 表示西偏南 60°。

对于给定的一点 0,我们以 0 为原点定义坐标系,如果一个点 A 由 0 点先向 d 方向走 p 步再向 (d +2) mod 6 方向 ( d 的顺时针 120° 方向) 走 q 步到达,则这个点的坐标定义为 (d, p,q) 

在蜂窝中,一个点的坐标可能有多种。上图给出了点 B(0, 5, 3) 和点 C(2, 3, 2) 的示意。给定点 (d1, p1, q1) 和点 (d2, p2, q2) ,请问他们之间最少走多少步可以到达?

这里定义了 “蜂巢坐标系”,故是要斜着走!

xdir = [-2,-1,1,2,1,-1]
ydir = [0,1,1,0,-1,-1]

def walk(d,q,x,y):
    x += xdir[d]*q
    y += ydir[d]*q
    return x,y

d1,p1,q1,d2,p2,q2=map(int,input().split())

x1,y1 = walk(d1,p1,0,0)
x1,y1 = walk((d1+2)%6,q1,x1,y1)
x2,y2 = walk(d2,p2,0,0)
x2,y2 = walk((d2+2)%6,q2,x2,y2)
dx,dy = abs(x1-x2),abs(y1-y2)

if dx>=dy:
    print((dx+dy)//2)   # 先横着走,再斜着走,这公式是要推理出来的
else:
    print(dy)       # 一直斜着走

以上,Python杂题

祝好

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/134270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法题解】 8. K 个一组翻转链表

文章目录题目解题思路代码实现复杂度分析题目 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持…

Python中编码(encode)解码(decode)讲解

嗨害大家好鸭&#xff01;我是小熊猫~ 这次也是给大家带来一点干货~ 所用素材:点击此处跳转文末名片获取 一、python3中str与unicode 在python3中&#xff0c;字符串有两种形式&#xff1a;str和bytes&#xff0c;两者区别如下&#xff1a; unicode string(str类型)&#xf…

【经验】关于区分cin、getline、cin.getline三种字符串输入的区别

cin 既可以输入char[]数组&#xff0c;也可以输入string类型&#xff0c;输入会被空格打断 cin对char进行输入 #include<bits/stdc.h> using namespace std; int main(){char ch[50];cin>>ch;cout<<strlen(ch)<<endl;for(int i0;i<strlen(ch);i){…

1.移动机器人发展现状

移动机器人主要应用场景&#xff1a; 场景1.仓储机器人(AGV自动导引运输车)&#xff1a;电商企业用户下单后机器人可以实现自动分拣和发货。需要多个传感器配合 2.自动驾驶领域(AMR自主移动机器人):车辆避让行人、导航等 热点研究领域&#xff1a; 环境感知和建模、人机交互…

2022简要总结和2023行动指南

在这辞旧迎接之际&#xff0c;心存感恩&#xff0c;放眼未来。 祝宝妈妈宝&#xff0c;幸福快乐&#xff1b; 祝国泰民安&#xff0c;政通人和。 祝百融云创系&#xff0c;生意兴隆&#xff1b; 祝公司老板们&#xff0c;大展宏图&#xff1b; 祝同事同行er&#xff0c;身…

Java算法_LeetCode:旋转数组

旋转数组 给你一个数组&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,…

Fastsapi的小疑问

1. Fastapi中的get和post区别是什么&#xff1f; 答&#xff1a;get参数传输暴露在外&#xff0c;post隐式传输 GET参数获取&#xff1a;获取一个URL后面带?param11&param22这种形式。 特点&#xff1a;URL上直接编辑传输&#xff0c;方便快捷&#xff0c;但是信息暴露在…

【nowcoder】笔试强训Day16

目录 一、选择题 二、编程题 2.1扑克牌大小 2.2完全数计算 一、选择题 1.在关系型是数据库中&#xff0c;有两个不同的事务同时操作数据库中同一表的同一行&#xff0c;不会引起冲突的是&#xff1a; A. 其中一个DELETE操作&#xff0c;一个是SELECT操作 B. 其中两个都是…

植物大战僵尸:代码实现无限阳光

通过逆向分析植物阳光数量的动态地址找到阳光的基址与偏移&#xff0c;从而实现每次启动游戏都能够使用基址加偏移的方式定位阳光数据&#xff0c;最后我们将通过使用C语言编写通用辅助实现简单的无限阳光辅助&#xff0c;在教程开始之前我们先来说一下为什么会有动态地址与基址…

光缆单盘检测与光缆线路测试需使用双窗口吗?

1 引言 光缆线路和宽带接入工程中&#xff0c;通常会涉及光缆单盘检测与光缆线路的测试工作&#xff0c;光缆线路测试包括&#xff1a;中继段测试、用户光缆测试等。这些测试条目&#xff0c;有的只需采用测试仪表的1个波长进行测试&#xff0c;即单窗口测试&#xff0c;有的则…

代码随想录算法训练营第2天 977. 有序数组的平方、209. 长度最小的子数组

代码随想录算法训练营第2天| 977. 有序数组的平方、209. 长度最小的子数组 有序数组的平方 力扣题目链接(opens new window) 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 数组其实是有…

C 语法--编译相关

1&#xff0c; 单下划线和双下划线 #pragma #pragma 用于指示编译器完成一些特定的动作。#pragma 所定义的很多指示字是编译器特有的&#xff0c;在不同的编译器间是不可移植的 #pragma section APP_VERSION //__far const unsigned long version 0x01010101; __far const un…

redis缓存淘汰策略-基于LinkedHashMap实现LRU算法

redis缓存淘汰策略-LRU算法&#xff08;最近最少使用&#xff09; LRU是Least Recently Used的缩写&#xff0c;即最近最少使用&#xff0c;是一种常用的页面置换算法&#xff0c; 选择最近最久未使用的数据予以淘汰。 1&#xff0c;所谓缓存&#xff0c; 必须要有读写两个操作…

【叨叨与总结】2022年总结

如果我记得没错&#xff0c;这个记录时间的软件应该是在6月份或者7月份才开始用的&#xff0c;大概记录的时间有半年。个人觉得还是不错的&#xff0c;下面还是简单的总结一下。   首先睡眠时长是有一定保障的&#xff0c;甚至有好多时候还睡了9、10个小时&#xff0c;当然这…

【Python基础】模块化编程-包调用

datitle: Python Module&&Invoking date: 2020-05-12 00:16:58 img: https://gitee.com/github-25970295/blogImage/raw/master/img/woman-3219507__340.webp categories: 编程语言 reprintPolicy: cc_by cover: false tags: python ​ 无论我们选择用何种语言进行程序…

2022年度总结:凝神聚力 踔厉奋发

2021年底手里握了几份offer&#xff0c;有研究型大学&#xff0c;也有教学型大学。是选择去前者继续拼搏&#xff0c;还是选择去后者直接躺平&#xff1f;二者的权衡和取舍确实不太容易抉择。尽管也咨询了很多前辈&#xff0c;最后还是得自己做决定。尽管我还是很喜欢做研究工作…

spark理论

前言&#xff1a; 本文是之前19年学生时学习林子雨老师《Spark大数据 》网易公开课的中关于spark的理论部分的部分笔记。主要包括大数据产品与spark的一些概念与运行原理介绍。 目录 大数据产品与hadoop生态系统 Spark概念 MapReduce与spark的比较 Spark运行 Spark运行基本流程…

【Spring 系列】Spring Session 深度解析

文章目录Spring Session 架构及应用场景为什么要spring-sessionSR340规范与spring-session的透明继承Spring Session探索特点核心 APIservlet session 与 spring-session 关系webflux 与 spring session 的关系基于 Servlet 的 Spring Session 实现思考题背景1、注册到 Filter …

Pytorch—模型微调(fine-tune)

随着深度学习的发展&#xff0c;在大模型的训练上都是在一些较大数据集上进行训练的&#xff0c;比如Imagenet-1k&#xff0c;Imagenet-11k,甚至是ImageNet-21k等。但我们在实际应用中&#xff0c;我们自己的数据集可能比较小&#xff0c;只有几千张照片&#xff0c;这时从头训…

RHCE——ansible环境配置(1)

配置ansible学习环境实现以下要求&#xff1a; 1.控制主机和受控主机通过root用户通过免密验证方式远程控住受控主机实施对应&#xff08;普通命令&#xff0c;特权命令&#xff09;任务 2.控制主机连接受控主机通过普通用户以免密验证远程控住受控主机实施指定&#xff08;普通…