蓝桥杯算法入门(Python) 课件 第2章杂题和填空题_第1页
蓝桥杯算法入门(Python) 课件 第2章杂题和填空题_第2页
蓝桥杯算法入门(Python) 课件 第2章杂题和填空题_第3页
蓝桥杯算法入门(Python) 课件 第2章杂题和填空题_第4页
蓝桥杯算法入门(Python) 课件 第2章杂题和填空题_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.1杂题和编程能力蓝桥杯算法入门杂题2杂题(AdHoc):不能归类为某个经典算法或数据结构的题目。杂题的代码也是有算法的,只是很难归类。杂题的求解不能或不需要套用现成的算法和数据结构,理论上只要学过编程语言就能做,考核思维、逻辑、编码能力。杂题:模拟、构造、思维、找规律杂题和编码能力3精通编程语言:程序员的基本功。数据类型、运算符、输入输出、简单字符处理、选择结构、循环结构、数组、结构体、函数、指针、文件、…杂题和计算思维4计算思维:运用计算机可行的基础概念去求解问题、设计系统和理解人类的行为。计算思维:通过约简、嵌入、转化和仿真等方法,把一个看起来困难的问题重新阐述成一个我们知道怎么解决的问题。计算思维体现了解决问题所需的技能:抽象、分解、泛化、评估、逻辑等。罗勇军2.2

杂题例题蓝桥杯算法入门杂题的做题技巧6纯粹的杂题,不需要用什么算法。尽量得满分。很多题的100%得分需要算法,30%得分可以用杂题的做法来做。由于蓝桥杯只有4小时比赛时间,往往来不及得到100%的分数,此时可以用简单的方法得30%的分数。例题2.1:油漆面积【lanqiaoOJ105】7例2.12017年第八届蓝桥杯省赛C/C++大学A组第10题:油漆面积

时间限制:2s内存限制:256MB本题总分:25分问题描述:X星球的一批考古机器人正在一片废墟上考古。该区域的地面坚硬如石、平整如镜。管理人员为方便,建立了标准的直角坐标系。每个机器人都各有特长、身怀绝技。它们感兴趣的内容也不相同。经过各种测量,每个机器人都会报告一个或多个矩形区域,作为优先考古的区域。矩形的表示格式为(x1,y1,x2,y2),代表矩形的两个对角点坐标。为了醒目,总部要求对所有机器人选中的矩形区域涂黄色油漆。小明并不需要当油漆工,只是他需要计算一下,一共要耗费多少油漆。其实这也不难,只要算出所有矩形覆盖的区域一共有多大面积就可以了。注意,各个矩形间可能重叠。本题的输入为若干矩形,要求输出其覆盖的总面积。输入:第一行,一个整数n,表示有多少个矩形,1≤n<10000。接下来的n行,每行有4个整数x1y1x2y2,空格分开,表示矩形的两个对角顶点坐标。0≤x1,y1,x2,y2≤10000。输出:一行一个整数,表示矩形覆盖的总面积。输入样例:

3151010312020271517输出样例:34081234567891011121314151617181920201918171615141312111098765432117*19+2*5+1*7=340简单做法9把平面划分成边长为1(面积也是1)的方格。每读入一个矩形,就把它覆盖的单位方格标注为已覆盖。输入所有矩形,统计所有被覆盖的方格数量,就是总面积。缺点:0≤x1,y1,x2,y2≤105,可能有1010个小方格。计算量很大,需要的存储空间也很大。只能通过30%的测试。10vis=[[False]*10001for_inrange(10001)]n=int(input())sum=0#sum:总面积forkinrange(n):x1,y1,x2,y2=map(int,input().split())#读一个矩形

ifx1>x2:x1,x2=x2,x1#坐标排序

ify1>y2:y1,y2=y2,y1foriinrange(x1,x2):forjinrange(y1,y2):ifnotvis[i][j]:#这个方格没有被覆盖过,需要累加面积

sum+=1#累加面积

vis[i][j]=True#标注为已经覆盖,后面不再累加print(sum)11蓝桥杯题库(/problems/),在“标签”中选择“语法进阶-模拟”,点击“难度”排序,有简单、中等、困难等三种难度。另外,读者任选题目,尝试用杂题的方法做,通过30%的测试。例题2.3:阶乘的和【lanqiaoOJ3527】122023年第十四届蓝桥杯省赛Python大学A组试题G:阶乘的和

时间限制:10.0s内存限制:512.0MB本题总分:20分问题描述:给定n个数Ai,问能满足m!为

的因数的最大的m是多少。其中m!表示m的阶乘,即1×2×3×···×m。输入:输入的第一行包含一个整数n。第二行包含n个整数,分别表示Ai,相邻整数之间使用一个空格分隔。输出:输出一行包含一个整数表示答案。输入样例:

3222输出样例:3评测用例规模与约定:对于40%的数据,n≤5000;对于100%的数据,1≤n≤105,1≤Ai≤109。13//蓝桥杯通过率100%代码importosimportsysn=int(input())dic={}l=list(map(int,input().split()))minNumber=1e10#创建字典foriinl:minNumber=min(i,minNumber)ifinotindic:dic[i]=1else:dic[i]+=1whiledic[minNumber]>=minNumber+1:#只有可以取余为0才可以是因数ifdic[minNumber]%(minNumber+1)==0:#如果+1后的因数不在字典中,则创建ifminNumber+1notindic:dic[minNumber+1]=0#形如:2223334444#因为3*(2!)=3!#三个2的阶乘变为一个3的阶乘#=>33334444#因为4个3的阶乘可以变为4*(3!)=4!#=>44444=>5*(4!)=5!=>m=5,5为最大因数dic[minNumber+1]+=dic[minNumber]//(minNumber+1)minNumber+=1else:breakprint(minNumber)2!+2!+2!=3*2!=3!4!+6!+9!=4!(1+6*5+9*8*7*6*5)2!+2!+2!+3!+3!+3!+4!=3*2!+3*3!+4!=3!+3*3!+4!=4*3!+4!=4!+4!=4!*2罗勇军2.3

填空题概述蓝桥杯算法入门填空题152024年蓝桥杯软件赛的8题中有2题填空,每题仅有有5分。虽然填空题在竞赛中分值低,但是填空题仍然是很好的题型,能考核思维和编码能力。填空题只需要提交答案,不需要提交解题过程或代码,可以用任何方法求解,例如编码、纸上演算、软件工具等。填空题技巧:Python16Python:填空题如果和字符、大数字、日期问题有关,Python是首选,可以直接模拟和计算。即使参加的是C/C++、Java组比赛,也要学Python。或者用于快捷高效地完成填空题,或者用来做对比测试。填空题技巧:用简单方法17填空题的代码没有运行时间限制,只要能运行出答案即可。填空题的做题套路:用最简单的思路,最少的代码尽快完成,不要为填空题浪费时间。例如一道填空题有两种方法,第一种方法思路简单,编程仅需要3分钟,运行时间约3分钟;第二种方法编程需要10分钟,运行时间为2秒。应该用第一种方法。罗勇军2.4填空题例题蓝桥杯算法入门2023年第14届蓝桥杯省赛填空题19语言分组题目知识点难度值Python大学A组A题:特殊日期日期、枚举1.5

B题:分糖果DFS2

大学B组A题:2023枚举1.5

B题:硬币兑换枚举2

大学C组A题:求和简单数学1

B题:分糖果DFS2

研究生组A题:工作时长模拟2

B题:分糖果DFS22024年第15届蓝桥杯省赛填空题20语言分组题目知识点难度值Python大学A组A题:拼正方形简单数学,手算1

B题:召唤数学精灵简单数学,找规律1.5

大学B组A题:穿越时空之门进制转换1.5

B题:数字串个数枚举2

大学C组A题:拼正方形简单数学,手算1

B题:劲舞团模拟1.5

研究生组A题:劲舞团模拟1.5

B题:召唤数学精灵简单数学,找规律1.521问题描述:记一个日期为yy年mm月dd日,统计从2000年1月1日到2000000年1月1日,有多少个日期满足年份yy是月份mm的倍数,同时也是dd的倍数。例题2.5:特殊日期【lanqiaoOJ3495】模拟题,日期问题。大多数日期问题可以用Python的datetime()函数快捷实现,但是本题不行。因为datetime(year,month,day)中的year范围是1~9999,本题的year=2000000年,超出了。除了检查每个日期,似乎没有更巧妙的办法。代码运行时长约1分钟。2223defleap(y):#判断闰年

returny%400==0ory%4==0andy%100!=0ans=0d=[31,28,31,30,31,30,31,31,30,31,30,31]foriinrange(2000,1999999+1):#年

ifleap(i):d[1]=29else:d[1]=28forjinrange(1,12+1):#月

forkinrange(1,d[j-1]+1):#日

if(i%j)==0and(i%k)==0:ans+=1ans+=1#2000000.1.1不要忘记这个日期print(ans)#输出:3581306324问题描述:请求出在12345678至98765432中,有多少个数中完全不包含2023。完全不包含2023是指无论将这个数的哪些数位移除都不能得到2023。例如20322175,33220022都完全不包含2023,而20230415,20193213则含有2023(后者取第1,2,6,8个数位)。例题2.7:2023【lanqiaoOJ3496】cnt=0s='2023'defcheck(x):x=str(x);pos=0forjinrange(len(x)):#逐个搜2023的每个字符在x里面有没有

ifx[j]==s[pos]:pos+=1ifpos==4:returnTruereturnFalseforiinrange(12345678,98765432+1):ifnotcheck(i):cnt+=1print(cnt)#答案:85959030用最简单暴力的方法,逐个搜’2023‘的每个字符在数字x里面有没有。代码的缺点是运行时间很长,约5分钟。262023年第十四届蓝桥杯省赛C/C++大学C组试题B:工作时长问题描述:小蓝手里有一份2022年度自己的上班打卡记录文件(/courses/21074/records.txt),文件包含若干条打卡记录,每条记录的格式均为“yyyy-MM-ddHH:mm:ss”,即按照年-月-日时:分:秒的形式记录着一个时间点(采用24小时进制)。由于某些原因,这份文件中的时间记录并不是按照打卡的时间顺序记录的,而是被打乱了。但我们保证小蓝每次上班和下班时都会正常打卡,而且正好打卡一次,其它时候不会打卡。每一对相邻的上-下班打卡之间的时间就是小蓝本次的工作时长,例如文件内容如下的话:2022-01-0112:00:052022-01-0200:20:052022-01-0107:58:022022-01-0116:01:35表示文件中共包含了两段上下班记录,1)2022-01-0107:58:02∼2022-01-0112:00:05,工作时长为14523秒;2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论