蓝桥杯
AndrewYB
这个作者很懒,什么都没留下…
展开
-
Prime算法 与 Kruskal算法的时间复杂度比较
评测环境:WindowsXP,FreePascal2.40,Pentium(R) Dual-Core CPU [email protected],2G内存通过上图可以看出:1.Prim在稠密图中比Kruskal优,在稀疏图中比Kruskal劣。2.Prim+Heap在任何时候都有令人满意的的时间复杂度,但是代价是空间消耗极大。【以及代码很复杂>_<】3.时间复杂度并不能反映出一个算...转载 2019-03-18 21:15:39 · 3180 阅读 · 0 评论 -
二分查找(分治法)
给定一个有序数组a,要求在a中找出一个比x大一点的数的位置。 思路:把一个大的数组拆分成左右两部分,而对于二分查找,有一个小技巧会省去小区间边界一些麻烦,那就是每划分的小边界都是一个左闭右开的区间,也就是[left,right);#include<iostream>using namespace std;int aleng;//含有begin,不含end; int f(int a[],in原创 2018-03-20 21:15:51 · 2119 阅读 · 0 评论 -
第八届蓝桥杯 日期问题
标题:日期问题小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。 比如02/03/04,可能是2002年03月04日、2004...原创 2018-03-30 11:10:10 · 245 阅读 · 0 评论 -
图搜索基础
递归框架 int robbot(int x,int y) //机器人的输入 if(边界条件) //什么时候不用造了(自己就能造完) return 0; int a=robbot(x1,y1); //造一个小的自己帮忙干活 int b=robbot(x2,y2); //再造一...原创 2017-11-11 00:04:59 · 208 阅读 · 0 评论 -
承压计算
标题:承压计算X星球的高科技实验室中整齐地堆放着某批珍贵金属原料。每块金属原料的外形、尺寸完全一致,但重量不同。 金属材料被严格地堆放成金字塔形。 7 5 8 7 8 8 9 2 7 2原创 2018-03-29 20:49:57 · 2864 阅读 · 0 评论 -
等差素数列
2,3,5,7,11,13,….是素数序列。 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。 上边的数列公差为30,长度为6。2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。 这是数论领域一项惊人的成果!有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:长度为10的等差素数列,其公差最小值是多少?注意:需要...原创 2018-03-29 20:45:33 · 402 阅读 · 0 评论 -
奇怪的比赛
奇怪的比赛 某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。 每位选手都有一个起步的分数为10分。 某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答原创 2018-03-23 23:42:21 · 333 阅读 · 2 评论 -
蓝桥杯 填空题 比酒量
有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复…… 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“……昨天,我正好喝了一瓶…….奉劝大家,开船不喝酒,喝酒别开船……”请你根据这些信息,推断开始有多少人,每一轮原创 2018-03-23 23:37:56 · 501 阅读 · 0 评论 -
古堡算式 结果填空
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!” 于是,两人沉默了好久,还是没有算出合适的结果来。 请你利用计算机的优势,找到破解的答案。 把 ABCDE 所代表的数字写出来。 答案写在“解答.txt”中,不要写在这里! 参考答案:21978 本人思路:纯原创 2018-03-23 22:58:33 · 256 阅读 · 0 评论 -
蓝桥杯 结果填空 微生物增殖
假设有两种微生物 X 和 YX出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。如果X=10,Y=90 呢?本题的要求就是写出这两种初始条件下,60分钟后Y的数目。题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的原创 2018-03-23 20:43:03 · 192 阅读 · 0 评论 -
蓝桥杯 取球游戏(博弈论)
今盒子里有n个小球,A、B两人轮流从盒中取球,每个人从盒子中取出的球的数目必须是:1,3,7或者8个。 A先取球,然后双方交替取球,直到取完。 被迫拿到最后一个球的一方为负方(输方) 请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢? 程序运行时,从标准输入获得数据,其格式如下: 先是一个整数n(n<100),表示接下来有n个整数。然后是n个整数,每个占一行(整数<1原创 2018-03-23 20:28:23 · 756 阅读 · 0 评论 -
购物单 蓝桥杯 填空题
标题: 购物单小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。 小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。 现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。取款机只能提供100元面额的纸币。小明想尽可能少取些现金,原创 2018-03-29 19:41:25 · 512 阅读 · 0 评论 -
迷宫问题(求最短路径)
...1111111111111111111111111111111.111111........1111111111.111111.111111..111.11111111.....111111.11111111111.1111111111.11111111.111111.................11111111.111111.11111111111.11111.111111.原创 2018-03-22 21:34:47 · 1227 阅读 · 0 评论 -
蓝桥杯-罗马数字
古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止在数字中出现0的概念!罗马数字的表示主要依赖以下几个基本符号:I 1V 5X 10L 50C 100D 500M 1000这里,我们只介绍一下1000以内的数原创 2018-03-05 19:28:25 · 332 阅读 · 0 评论 -
求子集合(递归算法)
现输入N,求(S)的子集。 input: 一个整数即N。 Output: 输出所有子集,每个子集占一行。 case: input1: 2 output1: () (b) (a) (a b)思路:实际上求子集的问题,可转化为求所有的N位二进制数,设N=2,则所有的二位二进制数为00、01、10、11,若第一位代表字母“a”,第二位代表字母”b”,1代表取该字母,0代表不取该字母原创 2018-03-12 20:28:25 · 2620 阅读 · 0 评论 -
最大子序列和(分治求法)
这已经是一道家喻户晓的题了,给出一个数组,里面是一串数字,求出子序列中和最大的,输出这个和。思路:这道题有很多经典解法,其中最典型应该是动态规划,而我们今天要讨论的是用二分法怎么求解这道题。#include<iostream>using namespace std;int aleng;int f(int a[],int begin,int end){ if(end-begin==1){原创 2018-03-20 21:29:42 · 1403 阅读 · 0 评论 -
错误票据(水题不水)
标题:错误票据某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。你的任务是通过编程,找出断号的ID和重号的ID。假设断号不可能发生在最大和最小号。要求程序首先输入一个整数N(N<100)表示后面数据行数。 接着读入N行数据。原创 2018-03-25 02:15:27 · 228 阅读 · 0 评论 -
连通性(DFS)
给定一个方阵,定义连通:上下左右相邻,并且值相同。 可以想象成一张地图,不同的区域被涂以不同颜色。 输入: 整数N, (N<50)表示矩阵的行列数 接下来N行,每行N个字符,代表方阵中的元素 接下来一个整数M,(M<1000)表示询问数 接下来M行,每行代表一个询问, 格式为4个整数,y1,x1,y2,x2, 表示(第y1行,第x1列) 与 (第y2行,第x2列) 是否连通。 连通原创 2018-03-28 20:44:38 · 519 阅读 · 0 评论 -
分酒问题(bfs)
有4个红酒瓶子,它们的容量分别是:9升, 7升, 4升, 2升 开始的状态是 [9,0,0,0],也就是说:第一个瓶子满着,其它的都空着。允许把酒从一个瓶子倒入另一个瓶子,但只能把一个瓶子倒满或把一个瓶子倒空,不能有中间状态。 这样的一次倒酒动作称为1次操作。假设瓶子的容量和初始状态不变,对于给定的目标状态,至少需要多少次操作才能实现? 本题就是要求你编程实现最小操作次数的计算。输入:最终状态原创 2018-03-28 20:29:23 · 3363 阅读 · 1 评论 -
蓝桥杯 移动距离
移动距离X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3… 当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为6时,开始情形如下:1 2 3 4 5 6 12 11 10 9 8 7 13 14 15 …..我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)输入为3个整数w m n,空格分开,都在原创 2018-03-26 17:13:08 · 859 阅读 · 0 评论 -
格子刷油漆(动态规划(递推))
X国的一段古城墙的顶端可以看成 2*N个格子组成的矩形(如图所示) 现需要把这些格子刷上保护漆。你可以从任意一个格子刷起,刷完一格,可以移动到和它相邻的格子(对角相邻也算数),但不能移动到较远的格子(因为油漆未干不能踩!)比如:a d b c e f 就是合格的刷漆顺序。 c e f d a b 是另一种合适的方案。当已知 N 时,求总的方案数。当N较大时,结果会迅速增大,请把结果对 10000原创 2018-03-22 09:38:50 · 595 阅读 · 0 评论 -
蓝桥杯 加法变乘法 (填空题)
加法变乘法我们都知道:1+2+3+ … + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015比如: 1+2+3+…+10*11+12+…+27*28+29+…+49 = 2015 就是符合要求的答案。请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。注意:需要你提交的是一个整数,不要填写任何多余的内容。思路:这道题目拿下原创 2018-03-26 10:51:40 · 275 阅读 · 0 评论 -
大数乘法包含大数加法(分治法)
题目: 用串的形式表示大数的乘法。即求类似: “23234845847839461464158174814792” * “6457847285617487843234535” 要求结果返回一个串。思路:大数乘法的思路就是把一个长的数字串拆分成两个部分,子串a1和子串a2,然后结果就是a1+00…000+a2。递归的边界条件就是当每个子串的长度都小于等于4的时候,就可以通过直接*运算返回结果。原创 2018-03-21 19:48:46 · 665 阅读 · 0 评论 -
C++中string和Int的相互转换
在算法竞赛中处理长数据的时候,我们往往采用string去存储一个数字,因为C++不像Java有BigInteger类,所以,string和Int的转换需要用到特殊的函数。只介绍最常用的方法。Int->string(需要包含sstream头文件)#include<iostream>#include<sstream>using namespace std;int a = 1234;stringst原创 2018-03-21 17:55:28 · 178 阅读 · 0 评论 -
李白打酒
标题:李白打酒话说大诗人李白,一生好饮。幸好他从不开车。一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:无事街上走,提壶去打酒。逢店加一倍,遇花喝一斗。这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。 请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有原创 2018-03-25 21:10:28 · 198 阅读 · 0 评论 -
2014年第五届——第一题:啤酒和饮料(水题不水)(注意浮点数精度)
啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。注意:答案是一个整数。请通过浏览器提交答案。 不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。思路:水题不水,本来我的代码是这样的。#include<iostream>using namespace std;int main(){for(原创 2018-03-25 19:47:32 · 491 阅读 · 6 评论 -
方格填数(DFS)
方格填数原创 2018-02-20 22:16:15 · 432 阅读 · 1 评论 -
分巧克力 第八届蓝桥杯
儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足:1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。当然小朋友们都希望得到的巧克力原创 2018-03-30 20:39:07 · 216 阅读 · 0 评论 -
组合问题一般形式
组合问题=组合计数+组合枚举。 f(m,n)=f(m-1,n-1)+f(m,n-1);#include<iostream>using namespace std;int f(int m,int n){if(n<m)return 0;if(m==n)return 1; if(m==0)return 1;return f(m,n-1)+f(m-1,n-1);}int main(){原创 2018-03-12 10:08:22 · 170 阅读 · 0 评论 -
比赛名次(Race,UVa12034)组合,递推
A、B两人赛马、最终名次有3种可能:并列第一;A第一B第二;B第一A第二。输入n(1<=N<=1000),求n人赛马时最终名次的可能性的个数除以10056的余数。分析:见刘汝佳紫书第二版332页,设答案为f(n).假设第一名有i个人,有C(n,i)种可能性,接下来有f(n-i)种可能性,因此答案为∑C(n,i)f(n-i)。#include <iostream>#include <cstdio>原创 2018-03-30 17:21:09 · 543 阅读 · 0 评论 -
翻硬币(水题不水)
题目标题:翻硬币小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。比如,可能情形是:**oo***oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们约定:把翻动相邻的两个硬币叫做一步原创 2018-03-25 02:20:31 · 339 阅读 · 0 评论 -
盾神与条状项链
问题描述 有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成一条项链然后送给他心仪的女生~于是他用其中一些珠子做成了长度为n的项链。当他准备把项链首尾相接的时候,土方进来了。 “哇这么恶心的项链你也做得出来!!!” 盾神自知审美不是他的长项,于是他很谦虚地请教土方,怎么才能把项链做得漂亮。 “这个嘛~首先你要在这里加上一个这种颜色的珠子,然后在这里去掉原创 2018-02-25 17:53:46 · 221 阅读 · 0 评论 -
蓝桥杯 搭积木
题目搭积木 小明最近喜欢搭数字积木, 一共有10块积木,每个积木上有一个数字,0~9。 搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。 最后搭成4层的金字塔形,必须用完所有的积木。 下面是两种合格的搭法: 0 1 2 3 4 5 6 7 8 90 3 1 7 5 2 9 8 6 4 请你计算这样的搭法一共有多少种?原创 2018-03-12 09:07:40 · 178 阅读 · 0 评论 -
蓝桥杯 公园票价(递归)
公园票价为5角。假设每位游客只持有两种币值的货币:5角、1元。 再假设持有5角的有m人,持有1元的有n人。 由于特殊情况,开始的时候,售票员没有零钱可找。 我们想知道这m+n名游客以什么样的顺序购票则可以顺利完成购票过程。 显然,m < n的时候,无论如何都不能完成; m>=n的时候,有些情况也不行。比如,第一个购票的乘客就持有1元。 请计算出这m+n名游客所有可能顺利完成购票的不同情况原创 2018-03-09 21:44:30 · 587 阅读 · 0 评论 -
程序中怎么表达π的大小
根据数学原理,cos(π)=-1,所以acos(-1.0)就会得出π。 我们只需要在C语言的头文件中加上cmath。还是上代码吧。#include<cmath>#include<iostream>#define pi acos(-1.0)using namespace std;int main(){cout<<pi<<endl;...原创 2018-02-23 10:25:06 · 1273 阅读 · 0 评论 -
算法训练 Balloons in a Box
问题描述 你要写一个程序,使得能够模拟在长方体的盒子里放置球形的气球。 接下来是模拟的方案。假设你已知一个长方体的盒子和一个点集。每一个点代表一个可以放置气球的位置。在一个点上放置一个气球,就是以这个点为球心,然后让这个球膨胀,直到触及盒子的边缘或者一个之前已经被放置好的气球。你不能使用一个在盒子外面或者在一个之前已经放置好的气球里面的点。但是,你可以按你喜欢的任意顺序使用这些点,而且你不需要转载 2018-02-23 10:15:06 · 1738 阅读 · 0 评论 -
广度优先搜索(Nunber of Islands、Surrounded Region)
广度优先:伪代码void BFS(int x) visited[x]=true; Queue.push(x); while(!Queue.empth()) v=Queue.pop(); for(v的每个邻接点w) if(!visited[w]) visited[w]=true;...原创 2018-02-08 10:46:30 · 182 阅读 · 0 评论 -
算法提高 判断名次
问题描述 某场比赛过后,你想要知道A~E五个人的排名是什么,于是要求他们每个人说了一句话。(经典的开头……-_-!)得了第1名的人23,说了假话;得了第5名的人不好意思,也说了假话;为了使求解问题简单,第3名同样说了假话。(奇数名次说假话) 输入格式 共5行,各行依次表示A~E说的话。 每行包含一个形如“A>=3”的名次判断,即一个大写字母+关系运算符+一个数字,不包含空格。原创 2018-02-27 14:32:31 · 337 阅读 · 0 评论 -
算法提高 扶老奶奶过街 (逻辑推理)
一共有5个红领巾,编号分别为A、B、C、D、E,老奶奶被他们其中一个扶过了马路。 五个红领巾各自说话: A :我和E都没有扶老奶奶 B :老奶奶是被C和E其中一个扶过大街的 C :老奶奶是被我和D其中一个扶过大街的 D :B和C都没有扶老奶奶过街 E :我没有扶老奶奶 已知五个红领巾中有且只有2个人说的是真话,请问是谁扶这老奶奶过了街? 若有多个答案,在一行中输出,编号之间用空格隔开原创 2018-02-26 11:43:33 · 389 阅读 · 0 评论 -
蓝桥杯 ADV-158 算法提高 新建Microsoft Word文档
问题描述 L正在出题,新建了一个word文档,想不好取什么名字,身旁一人惊问:“你出的题目叫《新建Microsoft Word文档》吗?”,L大喜,一拍桌子,说:“好,就叫这个名字了。” 仔细观察,当你新建一个word文档时,会得到一个名为“新建 Microsoft Word 文档.doc”的文件,再新建一个,则名为“新建 Microsoft Word 文档(2).doc”,再新建,便是原创 2018-02-26 10:27:56 · 121 阅读 · 0 评论