蓝桥杯

第十届蓝桥杯E题 BFS解决

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-28 12:46:48
19蓝桥杯E题 迷宫 【问题描述】 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方。 010000 000100 001001 110000 迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。 对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫, 一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。 对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式, 其使用的步数最少,在步数最少的前提下,请找出字典序最小的一个作为答案。 请注意在字典序中D<L<R<U。 输入 01010101001011001001010110010110100100001000101010 00001000100000101010010000100000001001100110100101 01111011010010001000001101001011100011000000010000 01000000001010100011010000101000001010101011001011 00011111000000101000010010100010100000101100000000

蓝桥杯 试题 基础练习 十六进制转十进制——5行代码AC

∥☆過路亽.° 提交于 2020-02-28 10:07:45
注意 1、别用int,溢出, %x输入,%d输出就行了 2、注意:%x,如果是小写x,那么该十六进制数中的字母都是小写,反之同理。 3、千万不要被开头“输入字符串”给蒙蔽,想的太复杂。 我们最终的目的是解题,而不是通盘考虑去展现算法技巧,所以我们只需关注与问题有关的变量,并将其过程化 。 # include <stdio.h> int main ( ) { long long x ; scanf ( "%x" , & x ) ; printf ( "%lld" , x ) ; return 0 ; } 来源: CSDN 作者: 小张同学Dayday Up 链接: https://blog.csdn.net/weixin_43899069/article/details/104546056

蓝桥杯 秘密行动

丶灬走出姿态 提交于 2020-02-28 04:51:24
问题描述   小D接到一项任务,要求他爬到一座n层大厦的顶端与神秘人物会面。这座大厦有一个神奇的特点,每层的高度都不一样,同时,小D也拥有一项特殊能力,可以一次向上跳跃一层或两层,但是这项能力无法连续使用。已知向上1高度消耗的时间为1,跳跃不消耗时间。由于事态紧急,小D想知道他最少需要多少时间到达顶层。 输入格式   第一行包含一个整数n,代表楼的高度。 接下来n行每行一个整数ai,代表i层的楼层高度(ai <= 100)。 输出格式   输出1行,包含一个整数,表示所需的最短时间。 样例输入 5 3 5 1 8 4 样例输出 1 问题分析: 首先根据题意有两个状态,爬楼和跳跃,并且不能连续跳 跃,所以用两个状态表示跳跃(T[i])和爬楼P[i],那么 对于跳跃状态的路程T[i] = min(p[i - 1], p[i - 2]) (因为跳跃状态上一步只能是爬) 对于爬楼状态P[i] = min(T[i - 1], P[i - 1]) + a[i]( 当前楼层高度) (因为下一状态依旧可以跳跃,所以上一步可以是跳跃, 也可以是爬楼) 最后最短的路程就是min(P[i] , T[i]) # include <algorithm> # include <iostream> # include <string.h> using namespace std ; int a [ 10010

树状数组-蓝桥杯省赛C++B组-小朋友排队

寵の児 提交于 2020-02-27 23:53:32
树状数组-蓝桥杯省赛C++B组-小朋友排队 题目: n 个小朋友站成一排。 现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。 开始的时候,所有小朋友的不高兴程度都是 0。 如果某个小朋友第一次被要求交换,则他的不高兴程度增加 1,如果第二次要求他交换,则他的不高兴程度增加 2(即不高兴程度为 3),依次类推。当要求某个小朋友第 k 次交换时,他的不高兴程度增加 k。 请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。 如果有两个小朋友身高一样,则他们谁站在谁前面是没有关系的。 输入格式 输入的第一行包含一个整数 n,表示小朋友的个数。 第二行包含 n 个整数 H1,H2,…,Hn,分别表示每个小朋友的身高。 输出格式 输出一行,包含一个整数,表示小朋友的不高兴程度和的最小值。 数据范围 1≤n≤100000, 0≤Hi≤1000000 输入样例: 3 3 2 1 输出样例: 9 样例解释 首先交换身高为3和2的小朋友,再交换身高为3和1的小朋友,再交换身高为2和1的小朋友,每个小朋友的不高兴程度都是3,总和为9。 题解: 过 程 类 似 于 冒 泡 排 序 , 对 于 n 个 无 序 数 , 通 过 相 邻 两 项 交 换 得 到 有 序 序 列 , 每 一 个 数 h [ i ] 需 要 交 换 的

斐波那契变形 2013蓝桥杯C/C++ B组3 第39级台阶

為{幸葍}努か 提交于 2020-02-27 08:46:21
题面 现有39级台阶 一次只能迈出1、2步,并要求总步数为偶数 求一共有多少种走法 dfs # include <bits/stdc++.h> using namespace std ; const int maxn = 39 ; int deta [ 2 ] = { 1 , 2 } ; int num = 0 ; void dfs ( int floor , int step ) { if ( floor == maxn ) { if ( step % 2 == 0 ) { num ++ ; } return ; } if ( floor > maxn ) { return ; } for ( int i = 0 ; i < 2 ; i ++ ) { int dx = floor + deta [ i ] ; dfs ( dx , step + 1 ) ; } } int main ( ) { dfs ( 0 , 0 ) ; cout << num ; return 0 ; } 递推 bfs 洛谷相似题 台阶问题 注 用dfs搜索不失为一种万金油方法,数据规模为2^39~10e12 掌握递推思想更重要 答案51167078 斐波那契问题很重要,dp思想 来源: CSDN 作者: GOD_Dian 链接: https://blog.csdn.net/qq_39685968

蓝桥杯2013-省赛-C/C++-A组3题

若如初见. 提交于 2020-02-26 23:56:59
题目 标题: 振兴中华 小明参加了学校的趣味运动会,其中的一个项目是:跳格子。 地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg) 从我做起振 我做起振兴 做起振兴中 起振兴中华 比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。 要求跳过的路线刚好构成“从我做起振兴中华”这句话。 请你帮助小明算一算他一共有多少种可能的跳跃路线呢? 答案是一个整数,请通过浏览器直接提交该数字。 注意:不要提交解答过程,或其它辅助说明类的内容。 代码 1 /*2013 蓝桥杯-省-A-3*/ 2 #include<iostream> 3 using namespace std; 4 int func(int x,int y){ 5 if(x==3||y==4) 6 return 1; 7 return func(x+1,y)+func(x,y+1); 8 } 9 int main(){ 10 cout<<func(0,0)<<endl; 11 } 来源: https://www.cnblogs.com/memocean/p/12369682.html

蓝桥杯2013-省赛-C/C++-A组1题

拜拜、爱过 提交于 2020-02-26 23:19:27
之前开学了比较忙,一直没时间做题,最近抽时间做做题…… 题目 题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日。 在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。 高斯获得博士学位的那天日记上标着:8113 请你算出高斯获得博士学位的年月日。 提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21 请严格按照格式,通过浏览器提交答案。 注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。 代码 1 /*2013 蓝桥-省-A-1 */ 2 #include<iostream> 3 int leap_mon[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; 4 int comm_mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 5 bool isleap(int y){ 6 if((y%4==0&&y%100!=0)||(y%400==0)) 7

学习蓝桥杯编程的第八天

限于喜欢 提交于 2020-02-26 20:05:17
区间k大数查询 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入格式 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表示询问个数。 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。 输出格式 总共输出m行,每行一个数,表示询问的答案。 样例输入 5 1 2 3 4 5 2 1 5 2 2 3 2 样例输出 4 2 数据规模与约定 对于30%的数据,n,m<=100; 对于100%的数据,n,m<=1000; 保证k<=(r-l+1),序列中的数<=106。 解题思路: 我直接使用冒泡法将l与r之间的数进行排序,最后输出r-k即可 import java . util . Scanner ; public class Main { public static void main ( String [ ] args ) { Scanner sc = new Scanner ( System . in ) ; int a = sc . nextInt ( ) , b ; int aa [ ] = new int [ a ] ; for ( int i = 0 ; i <

蓝桥杯 java 基础练习 回文数

浪尽此生 提交于 2020-02-26 14:51:47
基础练习 回文数 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。 输出格式 按从小到大的顺序输出满足条件的四位十进制数。 public class Main { public static void main(String[] args) { for (int i = 1000; i <= 9999; i++) { int a=i/1000; int b=i%1000/100; int c=i%1000%100/10; int d=i%1000%100%10%10; if(a==d && b==c){ System.out.println(i); } } } } 来源: CSDN 作者: 看书程序员 链接: https://blog.csdn.net/weixin_44570019/article/details/104515472

蓝桥杯 算法训练 阶乘(c语言版详细注释)

百般思念 提交于 2020-02-26 02:45:43
试题 算法训练 阶乘 蓝桥杯试题解答汇总链接 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5! = 1 * 2 * 3 * 4 * 5 = 120,因此5!最右边的那个非0的数字是2。再如:7! = 5040,因此7!最右边的那个非0的数字是4。请编写一个程序,输入一个整数n(n<=100),然后输出n! 最右边的那个非0的数字是多少。 输入格式 输入只有一个整数n。 输出格式 输出只有一个整数,即n! 最右边的那个非0的数字。 样例输入 6 样例输出 2 代码 # include <stdio.h> int main ( ) { int n , i , t = 1 ; scanf ( "%d" , & n ) ; for ( i = 1 ; i <= n ; i ++ ) { t * = i ; while ( t % 10 == 0 ) { //去掉末尾0 t / = 10 ; } t % = 1000 ; //因为n<