USACO编程竞赛讲稿

本文是面向参加USACO和CCC的编程竞赛者的讲稿,强调了算法和C++在竞赛中的重要性。内容涵盖了基础、铜组到白金组的竞赛知识,包括C++语言、算法基础、时间复杂度和常用STL数据结构。建议参赛者使用C++,因为其运行速度快,适合竞赛环境。同时,文章也提醒选手注意时间限制和代码简洁性。
摘要由CSDN通过智能技术生成

本讲稿适合准备参加美国计算机奥林匹克竞赛USACO,加拿大计算机竞赛CCC的学生阅读。默认阅读者已经学过编程语言,最好是C++。
本讲稿覆盖USACO涉及的大部分算法/数据结构/技巧,分成基础,铜组(Bronze division),银组(Silver division),金组(Gold division),白金组(Platinum division)五部分。

学习算法不只是提高你的编程水平,而是培养你解决问题的能力,这种能力也有益于别的领域/学科。Thinking twice,coding once.在你开始敲代码前先仔细想清楚你的思路(算法)。

算法竞赛是在限定的时间内写代码来解决问题,然后把你的代码提交给评测系统,评测系统事先准备好若干组输入数据和相应的输出数据作为测试点test case,把输入数据喂给选手的程序,在限定的时间(通常2s)和内存(通常256M)范围内产生出结果,把输出结果与测试点比较,一致就得分,即“黑盒测试”。

算法竞赛和软件开发不一样,不要求可维护性,不需要注释/文档,只要编程快(算法易实现),运行快,结果正确,只要你自己可读就行(只在比赛时可读)。

USACO每个赛季举办4次比赛:12月,1月,2月,US open(3月)。一般是4小时(US open是5小时)完成3道题,总分是1000分,每题333分(如果有15个测试点,每个测试点22分),总得分达到一定分数线就晋级,

练习时选择适合自己水平的题目,所谓适合自己水平,就是需要费劲思考才有解决方案,或者只能得大部分分数,剩余的小部分测试点只能看题解。如果你一看题目就知道怎么解决,这是太简单了。如果你只能得0分或少数分,那对你来说太难了。一般铜组题目思考15-20分钟还一无所获,银组题目思考30-40分钟还没有思路,那就可以看题解了;看别人的题解时先看一点点前面的提示,如果这时自己恍然大悟,就不要继续往下看了,而应该试着自己完成剩余部分。

一、基础知识

1.1尽量使用C++语言
C++是使用最广泛的参赛语言/题解语言。参赛所用C++只是C++语言的一个小子集,只是C语言加上标准模板库STL。
虽然在USACO,Python、Java时间限制是C++的两倍(4s),但还是C++程序运行更快,更易于满足时间限制。白金组使用Python有些测试点可能会超时。

在2020年12月之前,USACO采用文件输入输出,如下:
#include <cstdio>
using namespace std;

int main(){
    freopen("problem-name.in","r",stdin);
    freopen("prob

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值