• 2020蓝桥杯C++B组省赛第二场个人感受和个人题解


    [2020**蓝桥杯C++B组省赛第二场个人感受和题解]

    简单的个人感受

    时间回到之前打校内模拟,那时候校排名11+,省排40+;感觉不尽人意,毕竟之前正常打比赛都能排很靠前,可能是我没认真打,也可能线上打水分有点大,总之那时候我觉得要不是自己能力欠缺,要不就环境太水了。

    后面真正到快开始比赛的前一周我才开始准备蓝桥杯,看了很多博客,和去年真题,感觉听起来拿奖挺容易的,听起来省一有手就行。就也没顾及太多东西了。

    打的那天我是很平和的心态,感觉能赢就冲刺一下,就冲刺一把,能参加国赛就去北京玩玩。结果比赛的机子和环境直接爆炸,我写完前面5个填空都没检查,想着后面回来测试代码,结果电脑死机,代码直接没了,中途等待换机耽误了半个小时,最后提交最后一个题目30%样例还发现比赛提前2分钟结束了,直接少了7.5分,而且压根不会给你补时间。。总之种种现场情况恶心到我了。而且很多人也出现类似我的情况。

    打完后就没心情对答案了,就隔了好久,才无意间打开博客随便逛了逛,发现好像我挺走运的,完全没检查过的填空题一遍过全对了,然后除了最后没交上的7.5其他貌似都还行。

    最后出成绩也在意料之中,省一,貌似也是省内b组排第6(如果7.5分加上可能还能冲一冲),但省一的确太多了,最神奇的理论就是电脑出问题的人省一都稳了。

    最后的最后,,就是还要交300打国赛,而且又是在学校线上考试,,害,这比赛就没什么仪式感了,真花钱买证。无解~

    建议与小技巧

    1. 熟练Excel
    2. 对于日期模拟时钟时间模拟一定要熟练
    3. 熟悉使用next_permutation全排列和二分查找等常见函数
    4. 能用long long 就别用int,很多题目就卡int 范围
    5. 了解常见的优化时间方法:scanf printf替代cin cout,变量的外部定义等等
    6. 熟悉Dev编译器的使用,学会查询api文档,或者干脆就记下常用的就行
    7. 切记需要return 0,正确使用标准库,和C版本,别写过时代码,也别写超前代码,老老实实走。
    8. 看好时间,有时候提前开考也会提前结束,实际要看比赛倒计时为准,别觉得时间充分就一开始慢悠悠的做。要尽快的写下去,后面有时间再回来。

    前言

    10月17日,蓝桥杯B组省赛第二场;
    答案是我自己的,,不一定正确~~
    分享题目+答案+思路
    代码之后更新

    一、试题A 门牌制作

    【答案】

    答案:624

    本题总分:5 分

    【问题描述】

    小蓝要为一条街的住户制作门牌号。这条街一共有2020 位住户,门牌号从1 到2020 编号。小蓝制作门牌的方法是先制作0 到9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017 需要依次粘贴字符1、0、1、7,即需要1 个字符0,2 个字符1,1 个字符7。请问要制作所有的1 到2020 号门牌,总共需要多少个字符2?

    【答案提交】

    这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
    个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

    代码

    待更新
    思路:暴力循环查找2的个数
    

    二、试题B: 既约分数

    【答案】

    答案: 2481215

    本题总分:5 分

    【问题描述】

    如果一个分数的分子和分母的最大公约数是1,这个分数称为既约分数。例如,3/4 , 5/2 , 1/8 , 7/1都是既约分数。请问,有多少个既约分数,分子和分母都是1 到2020 之间的整数(包括1和2020)?

    【答案提交】

    这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

    代码

    待更新
    思路:暴力双重for循环查找__gcd(i,j) == 1的个数(可能有坑?但感觉是直接1-2020循环没有特例)
    

    三、试题C 蛇形填数s

    【答案】

    答案:761
    本题总分:10 分

    【问题描述】

    如下图所示,小明用从1 开始的正整数“蛇形”填充无限大的矩阵。
    在这里插入图片描述

    容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20 行第20 列的数是多少?

    【答案提交】

    这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
    个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

    代码

    待更新
    1.暴力Excel解题,随手拉一拉,答案瞬间出来
    2.数组填数即可
    cnt = 1;
    num[1][1] = cnt++;
    int x = 0,y = 2;
    while(退出条件){
    	x++;
    	while(y>0){
    		num[x++][y--] = cnt++;
    	}
    	y++;
    	while(x>0){
    		num[x--][y++] = cnt++;
    	}
    }
    即可
    

    四、试题D 跑步锻炼

    【答案】

    答案:8879

    在这里插入图片描述

    代码

    待更新
    注意时间是包含关系,通过正常日期增加去判断即可;初始是周六,最后是周日,这里可以代码验证,好像也有excel大佬破解的;
    

    五、试题E: 七段码

    【答案】

    答案:80

    本题总分:10 分

    【问题描述】

    小蓝要用七段码数码管来表示一种特殊的文字。
    上图给出了七段码数码管的一个图示,数码管中一共有7 段可以发光的二极管,分别标记为a, b, c, d, e, f, g。小蓝要选择一部分二极管(至少要有一个)发光来表达字符。在设计字符的表达时,要求所有发光的二极管是连成一片的。
    例如:b 发光,其他二极管不发光可以用来表达一种字符。
    例如:c 发光,其他二极管不发光可以用来表达一种字符。这种方案与上一行的方案可以用来表示不同的字符,尽管看上去比较相似。
    例如:a, b, c, d, e 发光,f, g 不发光可以用来表达一种字符。
    例如:b, f 发光,其他二极管不发光则不能用来表达一种字符,因为发光的二极管没有连成一片。
    请问,小蓝可以用七段码数码管表达多少种不同的字符?

    【答案提交】

    这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
    个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

    abc
    fgc
    eed

    代码:

    待更新
    把相邻的看成一个二维数组(如上,个别考虑cc和ee两个),dfs枚举01情况即可,注意0000000不行。
    

    六、试题F 成绩分析

    在这里插入图片描述

    【思路】

    待更新
    思路:暴力暴力,破解就是了
    

    七、试题G 回文日期

    在这里插入图片描述

    【思路】

    待更新
    上面有个日期的了,这次也是按照day++。依次去判断,判断很好写的,就不说了,暴力就是了;
    

    八、试题 H:字串分值

    在这里插入图片描述

    【样例输入】

    ababc
    

    【样例输出】

    21
    

    【样例说明】

    子串f值:

    a     1
    ab    2
    aba   1
    abab  0
    ababc 1
     b    1
     ba   2
     bab  1
     babc 2
      a   1
      ab  2
      abc 3
       b  1
       bc 2
        c 1
    

    【评测用例规模与约定】

    对于20% 的评测用例,1 ≤ n ≤ 10;
    对于40% 的评测用例,1 ≤ n ≤ 100;
    对于50% 的评测用例,1 ≤ n ≤ 1000;
    对于60% 的评测用例,1 ≤ n ≤ 10000;
    对于所有评测用例,1 ≤ n ≤ 100000。

    【思路】

    待更新
    第八题忘记了0.0;
    思路,这题案结果要倒着看就很简单
    先定义一个填充数据的int numcnt[100000][27];
    前面100000对应第几个数,后面1-26个对应填充的字母,numcnt[i][0] 0位计数,a对应1,b对应2;
    cin >> str;
    reverse(str.begin(),str.end());
    for(i = 0; i < str.length(); i++){
    	for(j = 0; j <= i; j++){
    		if(numcnt[i][str[i]-'a'+1] == 0){   //str[i]-'a'+1就把abc转换123
    			numcnt[i][0]++;
    		}
    		numcnt[i][str[i]-'a'+1]++;  //标记有了
    		ans += numcnt[i][str[i]-'a'+1];  //每次加入ans即可
    	}
    }
    cout << ans;
    
    

    九、试题 I: 平面切分

    题目忘了,没找到

    【思路】

    本题关键是推出  
    1.切分平面和  几条线~几个交点的关系
    2.在去找输入的线段有几个交点
    对于一:首先找到i条线最多切分几个平面,最多几个点;
    	   dpArea[i] = i + dpArea[i-1]
    	   dpPoint[i] = i - 1 + dpPoint[i-1]
    	   然后发现规律如果交点没达到最多交点,有 
    	   【分割平面 = i条线对应最大分割平面 - (i条线最大交点 - 线段i)】
    	   这时候发现很多都能对应,但如果都交与一个点就不合适了
    	   但不着急,判断线段的时候是两层for循环依次输入和前面的判断是否平行的。
    	   每次i 对应 j循环就判断如果同一个交点就算一个一个,此时所有情况满足
    对于二:for(int i = 0; i < n; i++){
    			输入线段
    			for(int j = 0; j < i; j++){
    				//每条线段和前面已经输入的判断是否平行(A1 == A2)
    				如果平行
    					不敢啥
    				如果重合
    					当作初始线段减少1,并且后面的线段不和它进行判断
    				如果相交{
    					如果交点在j的循环内例遍过
    						交点不变
    					否则
    						交点++,标记该交点
    				}
    			}
    		}
    	   
    	   
    

    十、试题 J 冒泡排序

    在这里插入图片描述

    【样例输入】

    4
    1
    

    【样例输出】

    bbaa
    1
    

    【评测用例规模与约定】

    漏掉了没保存上
    大概是:
    对于30% 的评测用例,1 ≤ n ≤ 20;
    对于50% 的评测用例,1 ≤ n ≤ 100;
    对于100% 的评测用例,1 ≤ n ≤ 10000;

    【思路】

    待更新
    搜索暴力破解可以拿到30% —— 7.5分qwq;
    垃圾破电脑换机器浪费我2-30分钟,结果提交时间12:58就截止,老师之前允诺的延时也只是真的安慰。。
    这波学校破电脑背大锅。心态都蹦了,被电脑ex到考完都没啥心情吃饭了。
    这次真无语了
    

    感想:

    学校机房真的难受,希望今年能忽略那一点点小错误拿个高点的名次吧。真的。。

    现在大二真的有点忙,趁着还记得写点博客记录下吧。。害。。

    待更新。

  • 相关阅读:
    查询比分程序
    本周个人总结
    本周工作量及进度统计
    排球计分软件规格说明书
    我与计算机
    jenkins持续集成:定时构建语法
    kafka性能测试
    kafka简介
    kafka分区----分区如何分配到broker----生产者分区策略----消费者消费策略
    shell注释、变量、字符串、数组
  • 原文地址:https://www.cnblogs.com/404name/p/14634105.html
Copyright © 2020-2023  润新知