【蓝桥杯软件赛 零基础备赛20周】第2周——常考知识点+判题

文章目录

  • 0. 第1周答疑
  • 1. 常考知识点
  • 2. 蓝桥杯怎么判题
    • 2.1 判题系统如何判题
    • 2.2 测试数据和得分的关系
    • 2.3 自己做测试数据
  • 3. 备赛计划
  • 4. 本周刷题

0. 第1周答疑

问题1:蓝桥杯怎么报名,什么时候报名?

答:集体报名或个人报名。大学一般是指导老师集体报名。也可以用个人身份报名。报名的具体说明点击:https://dasai.lanqiao.cn/notices/839/

摘录如下:
(一)报名时间。院校报名时间:2023年10月7日——2023年12月15日。
(二)报名人数及方式
  1.各参赛学校需为每位参赛选手配备一名指导教师,每名选手的指导教师最多一名,同一名指导教师可指导多位选手。省赛和决赛比赛后指导教师原则上不能更改。
  2.报名方式:学校及选手登录蓝桥杯官方网站在线注册并报名。

问题2:参赛报名只能找学校老师统一报名吗?

答:可以学校统一报,也可以个人报。学校会进行选拔,选拔上了学校统一进行报名,并报销报名费。如果没选上,也可以自己去官网报名。但是,我还是建议不管能不能得奖,大一都报名参赛,目的是以赛促学、积累经验。谁都不能保证第一次参赛就有好的结果。

问题3:比赛时能不能看API帮助文档?

答:可以。点击下面链接,下载蓝桥杯赛场的官方编程环境(2024年第15届):https://dasai.lanqiao.cn/notices/1096/
  下载编译器的压缩包,里面有帮助文档。(但是,如果赛场上还要看帮助,那肯定考不好了)
  有三种语言的安装包和帮助文档,具体情况是:
  (1)学生机比赛环境-C&C++:C&C++帮助文档.chm、devcpp 5.11.exe
  (2)学生机比赛环境-Java:eclipse-java-2020-06-R-win32-x86_64.zip、JDK 1.8 API.chm、jdk-8u261-windows-x64.exe
  (3)学生机比赛环境-Python:python-3.8.6-amd64.exe
  平时编程训练时建议用这些编译器编程,熟悉比赛时的编程环境。

问题4:每年的蓝桥杯,可以同时参加C/C++、Java、Python组的比赛吗?

答:不能。每年只能选一种语言参赛,因为3种语言都是同一天比赛,时间冲突了。

问题5:初学者刚开始学的时候,每题都要看题解正常吗?

答:这很正常。初学者还没有建立计算思维,写代码也不熟练。这个阶段需要通过多看别人的题解和代码,来快速入门。等大概做了100题差不多入门后,后面应该少看题解,尽量靠自己做。自己做1题,比看题解做5题的收获更大。

问题6:在什么题库做题?

答:就在蓝桥杯题库做题:https://www.lanqiao.cn/problems/
洛谷也很好:https://www.luogu.com.cn/

问题7:蓝桥杯分年级吗?

答:不分年级,大一大二大三大四都参加同一场比赛。研一研二参加研究生组。

问题8:省一才能参加国赛 ?

答:是的。注意,很多学校保研加分时,只算蓝桥杯国赛的奖,不算蓝桥杯省赛的奖。

问题9:A、B、C、G组的难度差别大吗?

答:难度差别不大。参考:2022年第十三届蓝桥杯省赛–难度评价
https://blog.csdn.net/weixin_43914593/article/details/124540569

问题10:“蓝桥杯”的全称是?

答:“蓝桥杯全国软件和信息技术专业人才大赛”,简称“蓝桥杯”:https://dasai.lanqiao.cn/notices/839/

问题11:A、B、C、G组,C/C++、java、Python的比赛题,一样吗?有重复吗?

答:每个组题目不太一样,同一个组别不同语言也不太一样。约有30%的题目是重复的。据说以后出题的趋势是不重复。

1. 常考知识点

省赛涉及的知识点比较基础,考核的是基本的算法思维、基本算法、编码能力。要成功参赛,最重要的是通过大量做基础题目,培养计算思维,提高快速准确的建模和编码能力。

有一些知识点几乎是必考的,因为它们也是整个算法竞赛知识库的基础。
(1)杂题。不需要算法和数据结构,只需要逻辑、推理的题目,难度可难可易。考察思维能力和编码能力,只能通过大量做题来提高。
(2)BFS搜索和DFS搜索,也就是暴力搜索。这是非常基本的算法,是基础中的基础。
(3)动态规划。线性DP,以及一些DP应用,例如状态压缩DP、树形DP等。
(4)简单数学和简单数论。
(5)简单的字符串处理、输入输出。
(6)基本算法,例如排序、排列、二分、倍增、差分、贪心。
(7)基本数据结构。队列、栈、链表、二叉树等。

下面用详细的表格列出常考的知识点,约有60多个。它们是《算法竞赛》中列出的算法大全的300多个知识点中的基础部分。

在这里插入图片描述

大一零基础的学生,要在几个月内学会这60多个知识点,难度很大。本系列博客《零基础备赛20周》从中再挑出一半知识点进行加强练习,学习量适合这几个月的强度。不能再少了。

2. 蓝桥杯怎么判题

蓝桥杯省赛有10题,2个填空和8个编程。

填空题5分,非对即错,要么0分要么5分。

编程题是怎么打分的?能得一部分分数吗?是的。每道编程题有多个个测试,通过多少测试,就能得多少比例的分数。例如20分的题目,做10个测试,通过3个,就能得6分。

2.1 判题系统如何判题

这里解释一个初学者疑问:在线判题系统(OJ,Online Judge)里面的“判题机器人”如何判定你提交的代码是正确的?

能直接通过看代码的方式,检查代码的每一行逻辑是否正确吗?这几乎是不可能的,因为看别人的代码极其痛苦,往往让人蒙头转向不知所云。即使是常年进行计算机教学的老师也痛苦,考试的时候,像“编码填空”、“程序设计”这样的题目,如果改卷的老师不是用机器验证,而是手批,很难打分。

所以OJ的判题机器人看不懂你的代码,它干脆就不看你的代码,它检验你提交代码的正确性的方法简单粗暴,用黑盒测试:
(1)先准备好标准测试数据,包括输入data.in和对应的输出data.out;
(2)运行你的代码,读入输入数据data.in,产生输出my.out;
(3)如果超出限定时间,代码还没运行结束,也就是没有产生输出,判错;
(4)对比data.out和my.out,如果完全一样,判为正确,否则就判错。

蓝桥杯比赛的判题允许得部分分数。一道题的测试数据中包含多组测试,例如有10组,每组占10%的分数。有的测试数据比较简单,容易通过,让你的代码能够得一些分数。

有新同学问,我写了代码不知对不对,判题系统能把测试的输入输出数据告诉我吗?我好对对答案。对不起,不能。测试数据是判题系统的绝密,绝对不会告诉你它是怎么测试的。如果告诉你了,就是泄题了。因为你可以在代码中什么也不干,而是直接打印输出正确的答案,“蒙骗”判题系统。

2.2 测试数据和得分的关系

下面用一道比较简单的编程题,说明测试数据和得分的关系。

2022年蓝桥杯省赛C/C++语言A组第C题。
求和:https://www.lanqiao.cn/problems/2080/learning/
在这里插入图片描述
注意题目最后画红线的【评测用例规模与约定】。

下面给出3个代码,分别得到30%、60%、100%的分数。

代码1:30%得分

题目的描述非常直白。大一刚学编程的同学也能做这一题,直接按题目给的公式算,用两个for循环实现。这称为模拟,就是模拟题目的要求,简单直接地编码。

#include<stdio.h>
int a[200010];
int main(){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)     //输入n个数
        scanf("%d",&a[i]);
    int sum=0;
    for(int i=1;i<=n-1;i++)   //按题目的公式求和
        for(int j=i+1;j<=n;j++)
            sum += a[i]*a[j];
    printf("%d",sum);
    return 0;
}

提交到蓝桥杯网站,返回结果:
在这里插入图片描述

代码2:60%得分

把上面的代码做个小小改动,得分立刻就上升到60%。

这个改动就是把int sum改成long long sum。int的最大值是 2 32 − 1 = 2 × 1 0 9 2^{32}-1=2\times10^9 2321=2×109 。题目说,对于所有评测,有1 ≤ n ≤ 200000,1 ≤ ai ≤ 1000。若每个ai都是1000,当n=100000时,sum= 1 0 11 10^{11} 1011 ,已经远远大于int,导致溢出错误。用long long就没有这个问题,即使n和ai都是最大值,sum也远小于long long的最大值。

#include<stdio.h>
int a[200010];
int main(){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)   //输入n个数
        scanf("%d",&a[i]);
    long long sum=0;
    for(int i=1;i<=n-1;i++)
        for(int j=i+1;j<=n;j++)
            sum += a[i]*a[j];
    printf("%lld",sum);
    return 0;
}

但是这个代码仍不能通过100%的测试。因为它的计算量太大,超过了题目要求的“时间限制:1.0秒”。为什么呢?

下面分析代码的计算量,也就是它需要花的时间。现在的普通计算机,一秒大约能计算5000万次。

代码1和2执行了多少步骤?花了多少时间?

代码第9、10行有2层for循环,循环次数是: n − 1 + n − 2 + . . . + 1 ≈ n 2 / 2 n − 1 + n − 2 + . . . + 1 ≈ n^2 / 2 n1+n2+...+1n2/2,把计算复杂度记为 O ( n 2 ) O( n^2 ) O(n2)。这称为“大O记号”,在“大O记号”中,常数1/2被忽略了。

对于30%的测试数据,n = 1000,循环次数= 50000。计算时间远远小于题目的时间限制1s,能够通过测试。
对于100%的测试数据,若n = 200000,循环次数= 2 × 1 0 10 2 × 10^{10} 2×1010。计算时间远大于题目的时间限制1s,超时了,不能通过测试。

上面的讨论称为“时间复杂度分析”。当拿到一个题目时,第一件事就是做复杂度分析,看用什么算法才能满足题目的评测要求。

对应的还有“空间复杂度分析”,就是看代码用到的空间是否超过了题目的限制。本题代码只用到了int a[200010];它需要的存储空间远小于题目的“空间限制:256M”。

一般来说,比赛题的空间限制容易通过,而时间限制是考核的主体。

代码3:100%得分

下面的代码用到了知识点“前缀和”。它的计算量,在12、13行只有一个for循环,循环n次,计算量远小于1秒的5000万次,所以顺利通过测试。“前缀和”这个知识点,在“第9周”的博客中介绍,有兴趣的同学可以先自学。

#include<stdio.h>
int a[200010];
long long s[200010];       //前缀和
int main(){
    int n;
    scanf("%d", &n);
    for(int i = 1; i <= n; i++) {
        scanf("%d", &a[i]);
        s[i] = s[i-1]+a[i];   //预计算前缀和
    }
    long long sum=0;          //注意局部变量定义时要初始化为0
    for(int i = 1; i <= n; i++)
        sum += a[i]*(s[n]-s[i]);
    printf("%lld\n", sum);
    return 0;
}

通过上面的例子,我们知道了系统是如何判题的。比赛的时候,如果不会100%的方法,也尽量用简单方法得到30%的分数。

据说,有人几乎不会算法,去“裸考”蓝桥杯,每题就用简单方法得到10%~30%的分数,也得到了三等奖。

所以接下来几周我们要大练特练简单方法,用最直白的方法解题,目的是锻炼编码能力,争取做到编码又快又准。

2.3 自己做测试数据

由于判题系统的测试数据是保密的,那我们编完代码,怎么才知道是否能通过测试呢?

如果是平时训练,在蓝桥杯网站上做题,或者在别的什么网站做题,能实时返回判题结果。

但是蓝桥杯比赛并不是实时判题的,而是4小时考完后,蓝桥杯把十几万参赛者的代码收回去,进行赛后判题。所以我们参赛的时候提交的代码,比赛时并不知道对不对。这时候我们可以自己检查,自己编造一些测试数据,然后运行代码,对比是否正确。

普通题目用手算构造输入输出测试数据就行了。如果题目复杂,需要“对拍”,参考博客:Python在竞赛中的应用-测试数据的构造与对拍。

3. 备赛计划

算法竞赛除了蓝桥杯,还有ICPC、CCPC。蓝桥杯省赛是普及赛,参加人多得奖人多。蓝桥杯国赛、ICPC、CCPC都是精英赛,参加人少得奖人少。如果想走到蓝桥国赛和ICPC、CCPC,下面是建议。

很多大学生在中学阶段就已经参加过NOI信息学竞赛,或者学习过编程,那么他们已经有了基础,进入大学后投入更多时间、专心地进行编程训练。有这么好的起点,当然是很有优势的。

如果是完全的零基础,也不用担心自己落后。因为,相比已经有了基础的同学,只是晚学了几个月而已,只要多花一些时间,很快就能赶上。对于算法竞赛这样需要2、3年的长周期学习来说,坚持才是最重要的。

由于算法竞赛的艰难和长期性,不管有没有基础,都应该从大一上学期开始学习。
(1)大一上学期,熟悉C/C++、Java、Python语言之一,最好从C/C++开始。一些专业在大一上学期开设编程语言课。有些专业是在大一下学期,这些学生需要自学编程语言。大一上学期,做一些简单的中文题并开始准备蓝桥杯。任务是:进一步熟悉编程语言、学习如何在OJ上做题、掌握输入输出的用法、积累代码量。基本上每个题目,在网上都能搜到题解和代码。初学者可以多看看别人的代码,尽快提高自己的编码能力。另外,最好几个人一起编程,并互相改错。看懂别人的代码、找出别人代码的错误,也是很好的训练,重要性不亚于独立做题。
(2)大一上学期~下学期,做一些入门题,例如搜索、数学、贪心、简单动态规划等。第一次参加蓝桥杯。
(3)大一暑假,参加集训,学习数据结构、深入掌握STL、各种专题入门,熟悉队友。
(4)大二上学期,深入各类专题学习,并制定一年的计划,牢固掌握各种算法知识点。如有可能,在大二上学期参加ICPC区域赛。
(5)大二下学期,第2次参加蓝桥杯。最好能得省一等奖并进入国赛,这样才能顺利走完算法竞赛。
(6)大二暑假,组队参加网络赛和模拟赛。
(7)大三上学期,参加ICPC并获奖。
(8)大三和大四,开始难题、综合题的学习,使自己获得彻底的飞跃,成为“编码大师”,得到蓝桥杯国赛一等奖,ICPC、CCPC的金牌。能获得金牌的队伍,都至少能做出1题以上的难题。难题有三个特征:综合性强、思维复杂、代码冗长。这些难题,是绝大部分学编程的学生难以翻越的大山;能征服大山的竞赛队员,可以称为“杰出”了。

4. 本周刷题

本周刷下面这些题,目的是熟悉编程语言,提高编码速度。
链接请用PC机的浏览器打开,手机打不开。

成绩分析 https://www.lanqiao.cn/problems/497/learning/
合法日期 https://www.lanqiao.cn/problems/541/learning/
时间加法 https://www.lanqiao.cn/problems/548/learning/
扫雷 https://www.lanqiao.cn/problems/549/learning/
大写 https://www.lanqiao.cn/problems/1590/learning/
标题统计 https://www.lanqiao.cn/problems/325/learning/
求和 https://www.lanqiao.cn/problems/1442/learning/
天数 https://www.lanqiao.cn/problems/542/learning/
最大间隙 https://www.lanqiao.cn/problems/543/learning/
金币 https://www.lanqiao.cn/problems/357/learning/
天干地支 https://www.lanqiao.cn/problems/1029/learning/
明明的随机数 https://www.lanqiao.cn/problems/539/learning/
灌溉 https://www.lanqiao.cn/problems/551/learning/
特殊日期 https://www.lanqiao.cn/problems/2408/learning/
最大距离 https://www.lanqiao.cn/problems/155/learning/
最长递增 https://www.lanqiao.cn/problems/158/learning/
串的处理 https://www.lanqiao.cn/problems/287/learning/
幸运数字 https://www.lanqiao.cn/problems/3499/learning
缩位求和 https://www.lanqiao.cn/problems/181/learning/
ISBN号码 https://www.lanqiao.cn/problems/523/learning/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/118964.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Appium 移动端自动化测试,触摸(TouchAction) 与多点触控(MultiAction)

一、触摸 TouchAction 在所有的 Appium 客户端库里&#xff0c;TouchAction 触摸对象被创建并被赋予一连串的事件。 规范里可用的事件有&#xff1a; * 短按(press) * 释放(release) * 移动到(moveTo) * 点击(tap) * 等待(wait) * 长按(longPress) * 取消(cancel) * 执行(per…

记录腾讯云重置密码之后ssh就连不上的踩坑

腾讯云轻量级服务器SSH连不上 解决方案在最后&#xff0c;点我跳转 问题背景&#xff1a; 首先ssh ubuntu用户我是能用xshell带上密钥正常连接的 其次我重置了root密码&#xff0c;自己改了一个root密码&#xff0c;因为我要用root账号使用ftp传输文件 然后重置密码之后&…

设计模式—结构型模式之桥接模式

设计模式—结构型模式之桥接模式 将抽象与实现解耦&#xff0c;使两者都可以独立变化。 在现实生活中&#xff0c;某些类具有两个或多个维度的变化&#xff0c;如图形既可按形状分&#xff0c;又可按颜色分。如何设计类似于 Photoshop 这样的软件&#xff0c;能画不同形状和不…

Chrome插件精选 — 广告拦截插件

Chrome实现同一功能的插件往往有多款产品&#xff0c;逐一去安装试用耗时又费力&#xff0c;在此为某一类型插件挑选出比较好用的一款或几款&#xff0c;尽量满足界面精致、功能齐全、设置选项丰富的使用要求&#xff0c;便于节省一个个去尝试的时间和精力。 1. Adblock Plus 广…

Qt应用开发--国产工业开发板T113-i的部署教程

Qt在工业上的使用场景包括工业自动化、嵌入式系统、汽车行业、航空航天、医疗设备、制造业和物联网应用。Qt被用来开发工业设备的用户界面、控制系统、嵌入式应用和其他工业应用&#xff0c;因其跨平台性和丰富的功能而备受青睐。 Qt能够为工业领域带来什么好处&#xff1a; - …

最受欢迎的程序员副业排行榜TOP6

程序员接单的情况并不少见&#xff0c;因为程序员职业工种的特殊性&#xff0c;能够比较快的衔接上新项目和新技术&#xff0c;所以接私活做副业成了许多程序员的不二之选。 程序员的副业是指程序员在业余时间里从事与编程相关的兼职工作&#xff0c;或者是与技术相关的创业项…

【渗透测试】垂直越权(高危)、水平越权(中危)

目录 一、简介1.1 水平越权&#xff08;中危&#xff09;1.2 垂直越权&#xff08;高危&#xff09;1.3 方便记忆方法 二、修复方案2.1 水平越权修复2.2 垂直越权修复 一、简介 1.1 水平越权&#xff08;中危&#xff09; 漏洞危害&#xff1a; 水平越权 是相同级别&#xff0…

Photoshop图片处理

工具 Photoshop剪映 步骤 打开photoshop 工具主界面 2. 导入素材图片 或者直接将图片拖入主界面 3. 双击图层&#xff0c;将背景图改为可编辑图层 4. 使用多边形套索工具勾画需要搽除的区域 5. 希望删除的区域使用多边形套索工具勾画出来后&#xff0c; 按“del”键&a…

Flink SQL时间属性和窗口介绍

&#xff08;1&#xff09;概述 时间属性&#xff08;time attributes&#xff09;&#xff0c;其实就是每个表模式结构&#xff08;schema&#xff09;的一部分。它可以在创建表的 DDL 里直接定义为一个字段&#xff0c;也可以在 DataStream 转换成表时定义。 一旦定义了时间…

菜鸟打印组件系列-vue3快速接入

文章目录 前言1. 相关名词或语句2. CAINIAO打印组件能力3. 安装与下载4. vue3集成步骤4.1 使用pina 创建websoket相关处理的模块。4.2 创建本地自定义模板&#xff08;要打印的模板以及样式&#xff09;4.3 结合el-table &#xff0c;实现批量打印 总结 前言 文章主要记录不注…

Kubernetes Dashboard 用户名密码方式登录

Author&#xff1a;rab 前言 为了 K8s 集群安全&#xff0c;默认情况下 Dashboard 以 Token 的形式登录的&#xff0c;那如果我们想以用户名/密码的方式登录该怎么操作呢&#xff1f;其实只需要我们创建用户并进行 ClusterRoleBinding 绑定即可&#xff0c;接下来是具体的操作…

【Docker】Docker中 的AUFS、BTRFS、ZFS、存储池概念的详细讲解

前言 作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&…

Jupyter Notebook交互式开源笔记本工具

1、官网 http://jupyter.org/ 2、什么是Jupyter Notebook Jupyter Notebook一个交互式的开源笔记本工具&#xff0c;可以用于编写、运行、和共享代码、文本、图形等内容。 如下文本、代码、图形 支持多种编程语言&#xff0c;包括python、R和Julia等&#xff0c;可以走一个…

【elasticsearch+kibana基于windows docker安装】

创建网络&#xff1a;es和kibana容器互联 docker network create es-net加载镜像 docker pull elasticsearch:7.12.1运行 docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -v $…

【ES专题】ElasticSearch搜索进阶

目录 前言阅读导航前置知识特别提醒笔记正文一、分词器详解1.1 基本概念1.2 分词发生的时期1.3 分词器的组成1.3.1 切词器&#xff1a;Tokenizer1.3.2 词项过滤器&#xff1a;Token Filter1.3.3 字符过滤器&#xff1a;Character Filter 1.4 倒排索引的数据结构 <font color…

Nacos本地修改编译源码2.2.3

下载Nacos源码 由于github访问速度慢&#xff0c;所以在gitee上下载 git clone https://gitee.com/mirrors/Nacos.git切换2.2.3版本 git checkout 2.2.3或者直接下载2.2.3的源码 本地编译 源码导入idea&#xff0c;然后编译 mvn -Dmaven.test.skiptrue -Drat.skiptrue c…

【owt】p2p client mfc 工程梳理

1年前构建的,已经搞不清楚了。所以梳理下,争取能用较新的webrtc版本做测试。最早肯定用这个测试跑通过 【owt】p2p Signaling Server 运行、与OWT-P2P-MFC 交互过程及信令分析官方的mfc客户端 估计是构造了多个不同的webrc版本的客户端

github使用教程

配置Git 首先在本地创建ssh key&#xff1b; $ ssh-keygen -t rsa -C "your_emailyouremail.com"后面的your_emailyouremail.com改为你在github上注册的邮箱&#xff0c;之后会要求确认路径和输入密码&#xff0c;我们这使用默认的一路回车就行。成功的话会在~/下生…

科技云报道:不卷自研大模型,金山办公如何创新生成式AI?

科技云报道原创。 过去大半年里&#xff0c;很多人对大模型的前景寄予厚望。主流观点认为&#xff0c;每个行业、每款产品都可以通过大模型“重做一遍”。 “重做一遍”听起来想象空间很大&#xff0c;但实际上多数大模型产品需要漫长的训练周期和海量资源投入&#xff0c;落…

unraid 安装并设置 zerotier 内网穿透安装 unraid 局域网内其他设备

Read Original 最近看了以下两个文章&#xff0c;感谢发布的各种精彩文章&#xff0c;让我受益匪浅。OPENWRT 的固件在设置了&#xff0c;【自动允许客户端 NAT】后&#xff0c;可以直接访问局域网其他设备&#xff0c;而我 unraid 部署 zerotier 后&#xff0c;只能访问 unra…