程序设计竞赛学习总结
前言
我从大一就开始接触程序设计竞赛,一直比到大四,眼看着即将毕业,今后应该也和这没什么交集了,所以写下这篇文章做做总结,不知道能给大家带来多大帮助。
因为在这之前我们学院并没有专门的集训队,也更没老师教我,所以我学的知识基本都是自学的(外加学长学姐的提点),所以我所做的总结没有那么系统;另外其实我本身掌握的知识就很少,参加的比赛都是很低的level,赛场上更多的也是靠更快的做出签到题拿奖(而不是靠题数),因此可能干货很少(求大佬不要笑话),是否有用还请各位酌情比较。
在这里我也简单列举一下我参加并获奖的比赛,在各位大佬面前应该只是入门级水平,写在这里方便各位参考决断自己要不要往下读。
- 内蒙古自治区大学生程序设计竞赛
- 东北地区大学生程序设计竞赛
- 蓝桥杯C++/C大学A组
- 团体程序设计天梯赛
看到这些是不是感到心灰意冷,发现这个作者菜得离谱还写文章。要是胆子大不怕被我带歪的往下看吧。
赛制
我自认为,既然打算打比赛,首先我们要先把赛制搞明白,据我了解,目前主流的总共有三种赛制
赛制 | 介绍 |
---|---|
ACM |
每次提交都会立即返回结果(正确、答案错误、段错误。。。),如果提交错误会有罚时(我记得是20min),排名优先按照通过题目的数量,如果题数相同则按照耗时从小到大排名。 CCPC、ICPC等三人一组的团队赛基本都是这总赛制 |
IOI |
每次提交都会立即返回结果,可以过测试点的分(即不通过也可能拿到一定的分数),按照总分排名。 我只知道天梯赛是这种赛制,还请大佬继续补充 |
OI |
以最后一次提交为准,比赛结束后才进行判题,可以过测试点的分,按照总分排名 蓝桥杯采用此赛制 |
比赛经验
至少在我的角度上看,我认为这里应该是读到这的你认真思考的。
很多人,包括我自己刚开始也是,认为尽快的学习高级一点的算法很重要,但至少我这三年的经历告诉我,这恰恰是错的。
至少我接触的有很多人,在一些较复杂的模拟(但恰恰是很多比赛拉开差距的关键)题还做的有问题的基础上,都开始看诸如动态规划、数论等较难的知识,因为毕竟我的level有限并没有过多的提醒他们,但既然写总结了,我还是想谈谈我的看法。
其实在我刚开始的时候,我也是看了很多算法,然后其实到了比赛场上完全没用上,甚至还耽误了我的时间。因为你学会一个算法,能打板子题和能够上场比赛之前差的是很多的,需要很大量的训练,可能需要照着这个算法做几十到上百题,而这个前提就是你基础得打好,因为复杂的算法应用到题目上,需要很强的实现能力(比如快速实现复杂模拟的能力),并且很多时候,一道题在考察一个复杂算法的同时,还会牵扯很多简单的知识点。
其实想想挺讽刺的,在我这三年的比赛里,我学的高级一点的算法没有一次用得上,因为这些算法应用到题目上需要根据题目进行算法的简单改造,而很显然我没有那个能力,所以我获得的奖,所牵扯到的无非只有:
- 模拟
- 二分查找
- 字符串处理
- 基本的搜索与剪枝
- 基础的贪心
- 图论(并查集)
- 脑筋急转弯等找规律题
而我所写过的最复杂的,就是记忆化搜索了(我很多高一点的奖项,这个算法是关键),至于像背包、树状数组、线段树等我看的知识完全没用上。。。如果你目前只是想到我这个level,你就可以抛弃那些高级算法了。
所以后来我的比赛思路就是以最快的速度写完简单题,而我做的训练就是不停的做同level题,效果很明显。当然我也承认,这种方法很难有更大的突破,所以我认为至少刚开始,你最好抛弃那些高级算法,等到你的成绩、能力有所稳定(能够保证所学的知识的题大概率能做上来的时候,再去看进一步的算法)。
算法
应该很多人想看这部分吧,在这里,我简单总结了我总共了解过哪些算法,如果你能完全掌握我说的这些知识(不是会默写板子,是真的不看题解能a题),那你应该能得到比我高的奖,在那之后,就请你再找大佬的总结吧,我的水平已经跟不上你了。
模拟
我单独说一下模拟,是不希望你小瞧他,赛场上,很多时候,你可能做出来的题目和其他人一样,这时候就得比时间,越早做出来模拟,你就更大可能的得奖。而OI和IOI赛制,你如果不够熟练,你的模拟很可能拿不满,这种小分的差距最致命了。
二分查找
贪心
搜索与剪枝
- 深度优先搜索(dfs)、记忆化搜索
- 广度优先搜索(bfs)
图论
- 最短路径
- 最小生成树
- 并查集、种类并查集
- 欧拉图
字符串
- KMP算法
- 最长上升子序列(复杂度分别为n^2,nlogn两种方法)
- 最长公共子序列
- 最长公共上升子序列(我记得是叫这,实际我没学会,只是了解)
- 后缀数组(我感觉挺难的,至少我没学会)
树
- 树状数组
- 线段树(有一定难度)
- 主席树(可持久化线段树)(我感觉很难,只会打板子)
动态规划
- 背包问题
- 状压DP
- 树形DP
数论
- 素数筛
先写到这吧,如果有想起来的我还会更新,今后如果有时间我可能会写一下简单算法的教程,如果我写了会把链接附到这篇文章。
程序设计竞赛学习总结相关推荐
- 《挑战程序设计竞赛》推荐及算法相关书籍吐槽
前几天,秋叶拓哉(iwi).岩田阳一(wata)和北川宜稔(kita_masa)所著,我(watashi).庄俊元(navi)和李津羽(itsuhane)翻译的<挑战程序设计竞赛>,终于通 ...
- 算法学习:最富盛名的程序设计竞赛
世界级规模–GCJ Google Code Jam是一项由Google主办的国际程序设计竞赛.该项赛事始于2003年,旨在帮助Google发掘潜在的工程领域顶级人才.比赛内容包括一系列的算法问题,参赛 ...
- 《挑战程序设计竞赛(第2版)》习题册攻略
本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...
- c语言程序竞赛,2015年江西理工大学C语言程序设计竞赛(初级组)
JankTao相亲记 解法:排序 #include #include #include #include #include #include #include #include using names ...
- ACM竞赛学习整理--矩阵运算
ACM竞赛学习整理–矩阵运算 了解矩阵类 [任务] 实现矩阵的基本变换 [接口] 结构体:Matrix 成员变量: int n,m 矩阵大小 int a[][] 矩阵内容 重载运算符: +.-.x 成 ...
- 辽宁省大学生计算机系统与程序设计竞赛,2019CCF大学生计算机系统与程序设计竞赛(华东分赛区)在我校顺利举办...
5月18日,2019CCF大学生计算机系统与程序设计竞赛(CCSP)华东分赛区比赛及颁奖会在我校举办.今年是CCSP大赛首次采用区域分赛区的比赛,共分为7个赛区,包括东北区(哈尔滨工业大学承办),华北 ...
- 挑战程序设计竞赛_我系首次参加第六届中国大学生程序设计竞赛网络预选赛
点击上方蓝字关注 「龙外信息工程系」 讲述有温度的故事 传递有态度的思想 2020年9月20日12时至17时,第六届中国大学生程序设计竞赛网络赛预选赛在杭州电子科技大学OJ成功举办,黑龙江外国 ...
- 哈尔滨理工C语言程序设计精髓_计算机科学与信息工程学院C语言程序设计竞赛圆满完成!...
2020年10月14日下午,哈尔滨师范大学计算机科学与信息工程学院于理工一号楼五楼机房举办了程序设计竞赛(C语言个人赛).本次比赛由计算机科学与信息工程学院主办,旨在激发大学生对程序设计的学习兴趣.提 ...
- icpc西部区域赛_信息学子在ACMICPC 2020中国(西部)大学生程序设计竞赛中喜获佳绩...
2020年10月31日ACM-ICPC 2020中国(西部)大学生程序设计竞赛圆满结束,信息科学与工程学院组织51支队伍参赛,荣获2枚金牌,4枚银牌,17枚铜牌,成绩优异. 国际大学生程序设计竞赛(简 ...
最新文章
- MediaSource 非当前窗口
- dropdownlist三级联动怎么实现_Excel下拉菜单不会做?15秒教会你制作一二三级联动下拉菜单,从此做表不求人!...
- 基于机器学习的捡球机器人设计与实现(探索)第3篇——opencv基础知识学习(2019-02-02)
- 删除静态 IP 路由
- 使用java进行文件编码转换
- colab把数据放在content下面以及放在drive下面的训练速度比较
- java获取大乐透开奖_java生成大乐透中奖号码
- position的用法小结
- 把CAS部署远程服务器上,在本地client访问CAS会出现无法统一注销的问题
- 2018大学计算机选择题题库,2018年9月计算机二级选择题题库(31-40)
- 电阻触摸屏原理及电容触摸屏原理(附上原图)以及各自优缺点
- 读书笔记(一):双脑记
- linux有线无线同时使用教程,巧用无线路由器 让有线、无线网络互通
- android 短信 易用性总结,详解短信验证和邮件验证的区别
- matlab中怎么输入特殊符号
- iOS开发 Tips 保存视频文件到相册
- 28行python代码实现哈工大一键申请出校41天
- 噪音测试标准:行业标准
- GTA5内置html菜单源码,GTA5免费内置菜单辅助
- 多线程高速下载百度云