【计蒜客-算法】蓝桥杯介绍

2024-03-11 1562阅读

温馨提示:这篇文章已超过396天没有更新,请注意相关的内容是否还可用!

一、蓝桥杯介绍

蓝桥杯是工信部组织的一项面向在校大学生的程序设计竟赛,分为软件组和电子组。

【计蒜客-算法】蓝桥杯介绍
(图片来源网络,侵删)

其中,软件组分为 C/C++组和 Java组,电子组分为嵌入式组和单片机组。

二、蓝桥杯赛制

竞赛分为两个阶段:初赛(省赛) 和决赛。初赛时长4个小时,一共两个方向共计6个组别同时比赛。决赛时长也为4小时,分为上午和下午两个场次。

竞赛形式为个人赛,每个人一台电脑,全程使用电脑进行答题,不能访问互联网,也不能使用 USB 等电子设备,只能访问所在考场的局域网。但是可以使用电脑的所有功能:excel、ppt、记事本、计算器。

在比赛期间会通过局域网将试题发放到你的电脑里,你需要完成题目并通过网络提交答案。

每场比赛的题型有三类:结果填空题、代码填空题和编程大题。所有题目都是客观题,以选手提交答案的评测结果为评分依据。

判题过程几乎都由机器完成,只有编程大题会有少量的人工参与(需要对代码风格和可读性进行评判,只占题目里很少的分数)。

三、题目类型

1、结果填空题

结果填空题是一类具有确定解的问题,要求你填入正确的答案。

无须写出解题过程,不限定计算的过程,你可以通过编程、在纸上计算、甚至用excel 和 Windows 自带的计算器算出答案,只要最终答案正确就能得到满分,否则得0分。

答案确保唯一性,如果你填入的格式和比赛要求的不一样也会被判为0分。

2、代码填空题

代码填空题描述了一个具有确定解的题目,并给出了该问题的某一解法的代码,其中会空缺一部分,需要读懂代码的逻辑,并对其中的空缺部分补充代码,使整段代码完整。

可能有多种正确答案,比如p[i]、*(p+i),只要填入的代码是正确的,验证程序都会认为答案正确。

3、编程大题

编程大题具有一定难度梯度、分值不等的编程题目。这些题目的要求明确、答案客观。**程序必须使用标准输入、标准输出(cin、cout、scanf、printf),以便于机器评卷时重定向。**不要输出没有要求的、多余的内容,例如:“请您输入xx数据:”

判题规则:将标准输入和输出重定向到文件,用文件输入并输出到文件中,将输出文件与标准答案进行文本比对。

要求选手通过编程,对给定的标准输入求解,并通过标准输出,按题目要求的格式输出解。题目一般会给出示例数据。

题目的考察点一般集中于对算法的设计和逻辑的组织上。理论上,选手不可能通过猜测或其它非编程的手段获得问题的解。选手给出的解法应具有普遍性,不能只适用于题目的示例数据(当然,至少应该适用于题目的示例数据)。

为了测试选手给出解法的性能,评分时用的测试用例可能包含大数据量的压力测试用例,选手选择算法时要尽可能考虑可行性的问题。

四、注意事项

1、c/c++

主函数结尾必须return 0。

代码中允许使用 STL类库。

所有依赖的函数必须明确地在源文件中 #include ,不能通过工程设置而省略常用头文件。

万能头文件:

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。提交时,注意选择所期望的编译器类型。

2、Java

不要使用 package 语句。

主类名必须为:Main

五、复杂度

算法的复杂度是评估算法性能优劣一个重要的指标,可以帮助估算出算法在执行之后所需要的时间和空间,所以分析算法的复杂度几乎成了每个选手必须掌握的能力。

在竞赛中,我们认为计算机一秒能执行 5 ∗ 1 0 8 5*10^8 5∗108次计算,如果题目给出的时间限制为1s,那么你选择的算法执行的计算次数最多应该在 1 0 8 10^8 108 量级才有可能解决这个题目。

时间复杂度数据范围
O(n)n ≤ 10^8
O(nlogn)n ≤ 10^6
O(n√n)n ≤ 10^5
O(n^2)n ≤ 5000
O(n^3)n ≤ 300
O(2^n)n ≤ 25
O(n!)n ≤ 11

六、代码

1、循环节长度

/**
 * 循环节长度
 * @author  王铭颢
 * @Date  2022/11/20 13:37
 */
/*
 * 除法是在余数后面不断补零的过程直到除尽
 * 而小数就是余数除以除数产生的,所以小数位的循环等价于余数的循环
 * (理论上最长的循环节的长度=分母的大小-1)
 *
 * 这里为什么用余数来判断呢?
 * -- 因为小数可能会出现数字重复但不是循环节的情况,而当余数一样的时候,
 * -- 其操作仍是余数除以除数,所以可以判断是已经进入循环的!!!
 */
#include "iostream"
#include "vector"
#include "algorithm"
using namespace std;
int f(int n, int m) {
    n = n % m;
    vector v;
    for (;;) {
        v.push_back(n);
        n *= 10;
        n = n % m;
        if (n == 0) return 0;
        if (find(v.begin(), v.end(), n) != v.end())
        // find(...)查找失败返回end()迭代器
        {
            return (int) (v.end() - find(v.begin(), v.end(), n));
        }
    }
}
int main() {
    int m, n;
    cin >> n >> m;
    cout 
    return y ? gcd(y, x % y) : x;
}
int main() {
    int a, b;
    cin  a >> b;
    cout 
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]