蓝桥杯

蓝桥杯国赛心得

匿名 (未验证) 提交于 2019-12-03 00:22:01
去之前是有一点小期待的,毕竟是第一次去北京比(lv)赛(you),前一天,一行三人还去颐和园走了一圈,感觉体验还不错,就是 那个人太阳好像是想要热死我。 比赛在北京经济贸易大学,进去找考场找了好久,那一个楼尽然还有分东部和西部,还不连通,然后进考场,恩,那个考场就很闷了,四周都没有窗户(????)。 至于比赛, 第一题,十分钟,三分钟写完,七分钟用来确定是不是真的这么简单。 二三四题很正常。我觉得我写的都是对的。 第五题,最水的数据只有百分之十的分数,很好过。但是才百分之十,真的是很看不起的。于是在想过百分百数据的方法,想了一会儿,恩,就开始打过百分之的十的代码了。 第六题,暴力过百分之三十的数据。 就这样,感觉完全没有用到什么算法就拿到了一个二等奖。所以这个奖项含金量应该也是可想而知了。。。。不过明年还是想参加,毕竟免费去北京玩的机会真的不多,万一还送一个国一呢(= =),岂不是非常的美滋滋。 转载请标明出处: 蓝桥杯国赛心得 文章来源: 蓝桥杯国赛心得

第三届蓝桥杯决赛试题:DNA比对

匿名 (未验证) 提交于 2019-12-03 00:19:01
DNA比对 脱氧核糖核酸即常说的DNA,是一类带有遗传信息的生物大分子。它由 4 种主要的脱氧核苷酸(dAMP、dGMP、dCMT和dTMP)通过磷酸二酯键连接而成。这 4 种核苷酸可以分别记为:A、G、C、T。 DNA携带的遗传信息可以用形如:AGGTCGACTCCA.... 的串来表示。DNA在转录复制的过程中可能会发生随机的偏差,这才最终造就了生物的多样性。 为了简化问题,我们假设,DNA在复制的时候可能出现的偏差是(理论上,对每个碱基被复制时,都可能出现偏差): 1. 漏掉某个脱氧核苷酸。例如把 AGGT 复制成为:AGT 2. 错码,例如把 AGGT 复制成了:AGCT 3. 重码,例如把 AGGT 复制成了:AAGGT 如果某DNA串a,最少要经过 n 次出错,才能变为DNA串b,则称这两个DNA串的距离为 n。 例如:AGGTCATATTCC 与 CGGTCATATTC 的距离为 2 你的任务是:编写程序,找到两个DNA串的距离。 【输入、输出格式要求】 用户先输入整数n(n< 100 ),表示接下来有 2 n行数据。 接下来输入的 2 n行每 2 行表示一组要比对的DNA。(每行数据长度< 10000 ) 程序则输出n行,表示这n组DNA的距离。 例如:用户输入: 3 AGCTAAGGCCTT AGCTAAGGCCT AGCTAAGGCCTT

蓝桥杯_历届试题 对局匹配

匿名 (未验证) 提交于 2019-12-03 00:18:01
题目中只有积分差为k的才不能同时选,那么也就是和当前状态下只有差为k的才能产生相互影响,别的就没有一点影响了,那 么我们把能够相互影响的找出来,在每一组相互影响的里面找到最大值 ,在将每组的最大值加起来,就是最终的结果 在一组相互影响的里面,当前状态j只有两种,一种是选这个,另一种是不选这个,如果选的话dp[j] = dp[j-2] + cnt[j] (cnt表示j状态的数量),不选择的话:dp[j] = dp[j-1],那么最终的状态转移方程为 dp[j] = max(dp[j-1],dp[j-2] + cnt[j]) #include <iostream> #include <cstdio> #include <cstring> #include <vector> #include <cmath> #include <algorithm> #define INF 0x3f3f3f3f #define ll long long using namespace std; const int MAXN = 101000; int a[MAXN],num[MAXN],n,k; int cnt[MAXN]; int dp[MAXN]; //dp[i][0]:表示不选当前分数的情况 dp[i][1]:选择当前分数的情况 bool vis[MAXN]; int main() { int

2017蓝桥杯C++B组 国赛

匿名 (未验证) 提交于 2019-12-03 00:18:01
个人理解,仅供参考,欢迎讨论 (5) 标题:对局匹配 小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。 小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起。如果两人分差小于或大于K,系统都不会将他们匹配。 现在小明知道这个网站总共有N名用户,以及他们的积分分别是A1, A2, … AN。 小明想了解最多可能有多少名用户同时在线寻找对手,但是系统却一场对局都匹配不起来(任意两名用户积分差不等于K)? 第一行包含两个个整数N和K。 第二行包含N个整数A1, A2, … AN。 对于30%的数据,1 <= N <= 10 对于100%的数据,1 <= N <= 100000, 0 <= Ai <= 100000, 0 <= K <= 100000 一个整数,代表答案。 样例输入: 10 0 1 4 2 8 5 7 1 4 2 8 样例输出: 6 再比如, 样例输入: 10 1 2 1 1 1 1 4 4 3 4 4 样例输出: 8 资源约定: 峰值内存消耗 < 256M CPU消耗 < 1000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意: main函数需要返回0 注意: 只使用ANSI C/ANSI C++ 标准

蓝桥杯2018c组决赛第五题:交换次数

匿名 (未验证) 提交于 2019-12-02 23:34:01
版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/weixin_43835482/article/details/90343060 标题:交换次数 IT产业人才需求节节攀升。业内巨头百度、阿里巴巴、腾讯(简称BAT)在某海滩进行招聘活动。 招聘部门一字排开。由于是自由抢占席位,三大公司的席位随机交错在一起,形如: ABABTATT,这使得应聘者十分别扭。 于是,管理部门要求招聘方进行必要的交换位置,使得每个集团的席位都挨在一起。即最后形如: BBAAATTT 这样的形状,当然,也可能是: AAABBTTT 等。 现在,假设每次只能交换2个席位,并且知道现在的席位分布, 你的任务是计算:要使每个集团的招聘席位都挨在一起需要至少进行多少次交换动作。 输入是一行n个字符(只含有字母B、A或T),表示现在的席位分布。 输出是一个整数,表示至少交换次数。 比如,输入: TABTABBTTTT 程序应该输出: 3 再比如,输入: TTAAABB 程序应该输出: 0 我们约定,输入字符串的长度n 不大于10万 资源约定: 峰值内存消耗(含虚拟机) < 256M CPU消耗 < 1000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 不要使用package语句

蓝桥杯 - [算法提高VIP]分苹果(差分数组)

匿名 (未验证) 提交于 2019-12-02 23:34:01
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lzyws739307453/article/details/90319048 题目链接: http://lx.lanqiao.cn/problem.page?gpid=T345 时间限制:1.0s 内存限制:256.0MB 问题描述 小朋友排成一排,老师给他们分苹果。 小朋友从左到右标号1..N。有M个老师,每次第i个老师会给第Li个到第Ri个,一共Ri-Li+1个小朋友每人发Ci个苹果。 最后老师想知道每个小朋友有多少苹果。 输入格式 第一行两个整数N、M,表示小朋友个数和老师个数。 接下来M行,每行三个整数Li、Ri、Ci,意义如题目表述。 输出格式 一行N个数,第i个数表示第i个小朋友手上的水果。 数据规模和约定 40%的数据,N、M≤1000。 100%的数据,N、M≤100000,1≤Li≤Ri≤N,0≤Ci≤100。 解题思路 直接差分数组就行了,不需要用线段树。 #include <bits/stdc++.h> using namespace std; int p[100005]; int main() { int n, m, l, r, v; scanf("%d%d", &n, &m); for (int i = 0; i < m; i++) { scanf("%d

蓝桥杯练习:母牛的故事

◇◆丶佛笑我妖孽 提交于 2019-12-02 23:13:43
1.母牛的故事 题目描述 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。 请编程实现在第n年的时候,共有多少头母牛? 输入 输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。 n = 0表示输入数据的结束,不做处理。 输出 对于每个测试实例,输出在第n年的时候母牛的数量。 每个输出占一行。 样例输入 2 4 5 0 样例输出 2 4 6 两种方法:<将方法一或者方法二取消注释就能运行> #include <stdio.h> void main() { int N; ////方法一:递归 //while (scanf("%d",&N)&&N!=0)/*这里注意下,‘scanf’默认有个int类型的返回值,若输入的数字未被接收(这里是N接收输入的值),则返回0,若有n个输入值,则 返回n,若读入数据时遇到了“文件结束”则返回 EOF(即-1);所以,将条件 scanf("%d",&N)&&N!=0 换成scanf("%d",&N)!=0无法跳出while循环(按照题目要求,输入0跳出循环)。*/ //{ // int a1 = 1, a2 = 2, a3 = 3,an; // int i; // if (N<4&&N>0)//小细节,注意N要大于0 // { // printf("%d\n",

java实现蓝桥杯密码脱落

匿名 (未验证) 提交于 2019-12-02 21:52:03
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 ( Creative Commons ) 一 问题描述 X星球的考古学家发现了一批古代留下来的密码。 这些密码是由A、B、C、D 四种植物的种子串成的序列。 仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。 由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。 你的任务是: 给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。 输入一行,表示现在看到的密码串(长度不大于1000) 要求输出一个正整数,表示至少脱落了多少个种子。 例如,输入: ABCBA 则程序应该输出: 0 再例如,输入: ABDCDCBABC 则程序应该输出: 3 资源约定: 峰值内存消耗(含虚拟机) < 256M CPU消耗 < 3000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。 二 解决方案 import java.util.Scanner; public class Main { public static String A;

Java蓝桥杯――贪心算法

匿名 (未验证) 提交于 2019-12-02 21:52:03
贪心算法:只顾眼前的苟且。 即在对问题求解时,总是做出在当前看来是最好的选择 如买苹果,专挑最大的买。 货物重量:Wi={4,10,7,11,3,5,14,2} 海盗船载重:C 求如何拿货件数最多 package bb; import java.util.Arrays; public class 最优装载 { static int[] W = { 4, 10, 7, 11, 3, 5, 14, 2 }; static int C = 30; // 开发效率: // 运行效率: public static void main(String[] args) { int count = 0; Arrays.sort(W); for (int n : W) { System.out.println(n); } System.out.println("------------"); // 从小的开始装 for (int i = 0; i < W.length; i++) { if (C < W[i]) { // 剩余的载重量装不下一件 break; } else { System.out.println(W[i] + " "); count++;// 装进来 C = C - W[i]; } } System.out.println("一共带走:" + count + "件"); } }

蓝桥杯――压缩变换(2016JavaB组第9题)

匿名 (未验证) 提交于 2019-12-02 21:52:03
小明最近在研究压缩算法。 他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比。 然而,要使数值很小是一个挑战。 最近,小明需要压缩一些正整数的序列,这些序列的特点是,后面出现的数字很大可能是刚出现过不久的数字。对于这种特殊的序列,小明准备对序列做一个变换来减小数字的值。 变换的过程如下: 比如,序列(a1, a2, a3, a4, a5)=(1, 2, 2, 1, 2)在变换过程为: a1: 1未出现过,所以a1变为-1; a2: 2未出现过,所以a2变为-2; a3: 2出现过,最后一次为原序列的a2,在a2后、a3前有0种数字,所以a3变为0; a4: 1出现过,最后一次为原序列的a1,在a1后、a4前有1种数字,所以a4变为1; a5: 2出现过,最后一次为原序列的a3,在a3后、a5前有1种数字,所以a5变为1。 现在,给出原序列,请问,按这种变换规则变换后的序列是什么。 原序列 1 2 2 1 2 变换后 -1 -2 0 1 1 输入格式: 输入第一行包含一个整数n,表示序列的长度。 第二行包含n个正整数,表示输入序列。 输出格式: 输出一行,包含n个数,表示变换后的序列。 例如,输入: 5 1 2 2 1 2 程序应该输出: -1 -2 0 1 1 再例如,输入: 12 1 1 2 3 2 3 1 2 2 2 3 1 程序应该输出: -1 0 -2