算法分享三个方面学习方法(做题经验,代码编写经验,比赛经验)

2023-11-03

目录

0 . 前言:(遇到OI不要慌)(只要道路对了,就不怕遥远)

1. 做题经验谈

1.1 做题的目的

1.2 我对于算法比赛的题目的看法

1.2.1 类似题

1.2.2 套模型:

1.3 在训练过程中如何做题

1.4 一些建议:提高算法能力

1.5 一些建议:提高代码能力

1.6 选一个好的 OJ

1.7 分析问题的方法:我的一些经验

2. 代码编写经验谈

2.1 你 50% 的代码时间基本都浪费在调试上

2.2 模块化

2.3 有意义的变量名

2.4常见的代码错误

2.4.1 变量名打错

2.4. 2 不完全的修改

3. 比赛经验谈

3.1  对签到题要格外小心

3.2 考场策略问题

3.3 心态

3.4 实力

3.5 策略

3.6 对于比赛经验的一些总结

3.7 注意事项

3.8 比赛方法

3.8 .1 比赛方法 1 : 简单题

3.8.2 比赛方法 2 :困难题


0 . 前言:(遇到OI不要慌)(只要道路对了,就不怕遥远)

从大学0基础小白,基于刷了不完全统计大约2500道不同难度的题,到全球最强算法平台codeforces ,账号评分2347,全球排名约前1000,中国排名前200左右。

分享一下我在学习算法这几年,总结的一点心得。

题是刷不完的,掌握学习方法,才是王道。

我分别从三个方面进行讲解:

做题经验谈,代码编写经验谈,比赛经验。

1. 做题经验谈

1.1 做题的目的


做题的目的是学到新的东西以及锻炼代码能力,而不是盲目刷 OJ 的 rank,那没有任何意义。
提高算法能力(想出做法的能力,分析问题的方法等等)
提高代码能力(写出正确的代码的能力)
提高调试能力(将错误的代码改对的能力)

1.2 我对于算法比赛的题目的看法

1.2.1 类似题


对于大部分算法竞赛题目来说
大部分由于做过类似的,不用想就能解决。
之后的大部分顺着题目进行一些简单的分析,就也能转化成做过的问题。


1.2.2 套模型:


学习更多的解题模型,可能具体也可能抽象,要多加思考。

1.3 在训练过程中如何做题


选择一个好的 OJ/CF <- 优秀的题目来源
适度而不过量的思考 <- 节约时间
如果做不出来,在看了题解之后,总结自己做不出来的原因是什么,以完善
自己今后的做题方法。
做题方法是一个很抽象的概念,需要经验的积累 ( 和一定的智商? )

1.4 一些建议:提高算法能力


CF2100分的左右题目经常会有令人耳目一新的算法思路。注重解题的过程而不是罗列解法,当然由于难度较大自己做可能比较累。
而且刚刚接触的时候基本上是做不出来的吧大概 <_< 。

所以推荐的方法是看看题目不要想太多不会做就看题解。

就算自己做出来了也可以看一下题解的分析,这对提高算法能力非常有好处。

1.5 一些建议:提高代码能力


代码能力很大程度上取决于经验,你可能觉得这种可能需要大量的练习,但是其实也是有捷径的,那就是参考别人的代码。


 最佳的方法是找一些可能比较难写的题目,自己很可能写不出来,这时可以参考别人的代码,搞明白那些细节都是怎么处理的,优秀的代码风格能够极大的提高代码能力。


如果是在 CF 上刷题,可以经常参考每次比赛排行榜前10的前辈的代码学习一下,他们的代码风格都很好。

1.6 选一个好的 OJ

CF 的好处:有别人代码可以参考学习,有官方题解可以看。
同时可以参考很多前辈的代码和解题报告。
 

1.7 分析问题的方法:我的一些经验


1. 从简单的情况开始分析:经典方法,对原题没有思路,那么分析问题的简化版。
经典例子:找出字典序最小的解,那么我们先分析怎么找出一个解。
2. 人的思维很大程度上跟关键字有关系,比如一个题目怎么想都不会,有人跟你说“容斥”,你可能瞬间就会做了,不妨列出对于这类问题已知的一些解决方法关键字,思考思考能否做。

2. 代码编写经验谈

2.1 你 50% 的代码时间基本都浪费在调试上

90% 的错误都是傻逼错误。
正确的写代码方式。

2.2 模块化


功能直接使用各自的模块。

2.3 有意义的变量名


单词的 3 个缩写
Number->num amount ->amt ,count -> cnt

2.4常见的代码错误

2.4.1 变量名打错


写代码的时候集中注意力
变量名要有意义。

2.4. 2 不完全的修改


复制粘贴一段代码的时候,急于求成,没有根据上下文改对。
复制粘贴的时候尽量注意,或者不复制粘贴使用独立的函数。
发现一个地方要改一下,这个地方可能影响很多其它的地方,没有考虑全,导致错误。
突然发现要改一个地方的时候,好好想想这里会影响哪里。

3. 比赛经验谈

3.1  对签到题要格外小心

注意细节

3.2 考场策略问题


 不够冷静

3.3 心态


正确的做题顺序
正确的比赛策略
最后是以上两点导致的优秀的心态。

3.4 实力


实力碾压

3.5 策略


正确的比赛策略,没有在坑爹题上浪费太多时间,并且 AC 了一道稍有难度
的题目,之后全力确保一道很容易错的题目,并成功 AC 。

3.6 对于比赛经验的一些总结


1. 良好的心态是必须的,不冷静只会让自己水平暴跌。
2. 首先把题目都认真的看一遍,绝对不要看错题目,保险起见可以使用看两
遍的方法,确保题意是对的,不要放过任何可能重要的条件,可能只写在数
据范围里!
3. 对每一题,都使用自己平常的方法做一做,而不是看到会的就立刻去写。
这个时间每题不要过长。
4. 在此基础上决定一个良好的做题顺序。

3.7 注意事项

1. 绝对绝对绝对不要看错题目或者输入输出的格式。
2. 签到题你没 AC 别人满分你就完蛋了,绝对不要错签到题。
3. 对于可以对拍的题,一定一定一定要对拍。
4. 千万不要成为错误 ( 没删调试语句,文件名打错 )list 上的主人公。

3.8 比赛方法

3.8 .1 比赛方法 1 : 简单题


特点:题目简单,数据也弱。
面对简单题,我们需要的是稳定的 AC 。
不要求速度,先认真的看完题目,然后从容解决签到题。
然后一般来说会有一道不是那么简单的题目,先确保其它的简单题没有
问题,简单的题目往往可以简单的对拍,不需要花多少时间。
然后把时间都花在略难题上,争取得到自己能得的最高分。
注意使用特判法,不能确保做法正确性的时候最稳妥的做法是特判。
暴力的范围然后暴力范围用暴力。

3.8.2 比赛方法 2 :困难题

特点:题目有一定难度,无法全部做出。
易犯错误:考场看都没看,放过了本来应该是非常简单的题目。
在这种比赛中,正确的做题顺序非常重要,但是做题顺序来源于对题目的了解,
而对题目的了解又需要花费你的时间,这两个方面各自牵制,并非独立。
我个人的做法是首先要抽出半小时看完所有题目并且随便想一想,然后对每题都
可以标出使用你第一眼想到的做法。
然后再每题花 10 分钟略微细致的分析加想一下。

基本上不难的题目都可以做出,就算做不出也会有“这题不是很难”的感觉,并且标上目前这题你能得出来的概率。

那么根据之前对题目的了解,就可以决定做题的顺序了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法分享三个方面学习方法(做题经验,代码编写经验,比赛经验) 的相关文章

  • 【CTF必看】从零开始的CTF学习路线(超详细),让你从小白进阶成大神!

    最近很多朋友在后台私信我 问应该怎么入门CTF 个人认为入门CTF之前大家应该先了解到底 什么是CTF 而你 学CTF的目的又到底是什么 其次便是最好具备相应的编程能力 若是完全不具备这些能力极有可能直接被劝退 毕竟比赛的时候动不动写个脚本
  • 用通俗易懂的方式讲解:大模型 RAG 在 LangChain 中的应用实战

    Retrieval Augmented Generation RAG 是一种强大的技术 能够提高大型语言模型 LLM 的性能 使其能够从外部知识源中检索信息以生成更准确 具有上下文的回答 本文将详细介绍 RAG 在 LangChain 中的
  • 关于整型提升与截断的一道题目

    关于整型提升与截断 可以看我的博客 C语言 整型提升 c语言整形提升 CSDN博客 C语言 截断 整型提升 算数转换练习 c语言unsigned CSDN博客 一 题目 二 题解 char a 101截断 由于101是整型数据 需要32比特
  • 2024年网络安全十10大发展趋势发布

    2023年网络安全十10大发展趋势发布 近日 中国计算机学会 CCF 计算机安全专委会中 来自国家网络安全主管部门 高校 科研院所 大型央企 民营企业的委员投票评选出2023年网络安全十大发展趋势 福利 趋势一 数据安全治理成为数字经济的基
  • 排序:计数排序

    一 概念 计数排序是非比较排序 是对哈希直接定址法的变形应用 二 思想 利用数组统计相同数据出现的次数 例如整型数据m出现n次 就在数组m位置记录数据为n 最后从头遍历数组打印数据即可 通俗来讲就是 数组下标即为数据 下标所指位置的值即为数
  • 2024年华为OD机试真题-小明找位置-Java-OD统一考试(C卷)

    题目描述 小朋友出操 按学号从小到大排成一列 小明来迟了 请你给小明出个主意 让他尽快找到他应该排的位置 算法复杂度要求不高于nLog n 学号为整数类型 队列规模 lt 10000 输入描述 1 第一行 输入已排成队列的小朋友的学号 正整
  • 蒙特卡洛在发电系统中的应用(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 2024年华为OD机试真题-手机App防沉迷系统-Java-OD统一考试(C卷)

    题目描述 智能手机方便了我们生活的同时 也侵占了我们不少的时间 手机App防沉迷系统 能够让我们每天合理的规划手机App使用时间 在正确的时间做正确的事 它的大概原理是这样的 1 在一天24小时内 可注册每个App的允许使用时段 2 一个时
  • 利用CHAT写实验结论

    问CHAT 通过观察放置在玻璃表面上的单个水滴 人们可以观察到水滴充当成像系统 探究这样一个透镜的放大倍数和分辨率 CHAT回复 实验报告标题 利用玻璃表面的单一水滴观察成像系统的放大倍数和分辨率 一 实验目的 通过对比和测量 研究和探索玻
  • 思政课程如何提升学习效率?这个方法分享给你

    在当今社会 思政学习具有重要的意义 思政通学习小程序为我们提供了一个优质的学习平台 通过不断深入思考和学习 我们能够更好地认识社会 提升自我素质 客户案例 陈同学 思政通学习小程序提供了涵盖政治 经济 文化 科技等多个领域的学习内容 使我能
  • 矩阵基本操作

    问题描述 已知一个n n的矩阵 方阵n lt 100 把矩阵主副对角线上的元素值加上x 然后输出这个新矩阵 输入格式 一行两个变量 用空格隔开 代表n和x 接下来的n行每行n列 表示矩阵的数值 用空格隔开 输出格式 输出新矩阵 每个数字5个
  • 矩阵基本操作3

    题目描述 问题描述 定义一个N M N M lt 100 的矩阵 将一个该矩阵的行和列的元素互换 存到另一个二维数组中 输入格式 一行两个整数 N M 中间用空格隔开 表示矩阵有N行 M列 接下来共N行M列表示矩阵 输出格式 输出转置以后的
  • 矩阵基本操作2

    题目描述 问题描述 将方阵 n 行n列 n lt 100 置成下三角矩阵 主对角线右上角数字全部清零 输入格式 第一行输入n 接下来的n行每行n列 表示矩阵的数值 用空格隔开 输出格式 n行n列下三角矩阵 每个数字3个占位符 左对齐 输入样
  • 【一种新的Burton-Miller型奇异边界方法(BM-SBM)】用于声学设计灵敏度分析,2D和3D声学设计灵敏度分析的奇异边界方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 2D 2 2 3D
  • 2024年华为OD机试真题-虚拟游戏理财-Python-OD统一考试(C卷)

    题目描述 在一款虚拟游戏中生活 你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局 现有一家Bank 它提供有若干理财产品m 风险及投资回报不同 你有N 元 进行投资 能接受的总风险值为X 你要在可接受范围内选择最优的投资方式获得最大回报
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系统的轨迹跟踪(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 第1部分 2 2 第2部分
  • 5_机械臂运动学基础_矩阵

    上次说的向量空间是为矩阵服务的 1 学科回顾 从科技实践中来的数学问题无非分为两类 一类是线性问题 一类是非线性问题 线性问题是研究最久 理论最完善的 而非线性问题则可以在一定基础上转化为线性问题求解 线性变换 数域 F 上线性空间V中的变
  • 肿瘤的转录调控:Cell子刊揭示原发性肝癌中转录因子活性的全基因组图谱|国自然热点

    转录调控的研究历史比较长 相关研究在近十年来仍一直增长 也是近年来高分文章的焦点之一 在2023年最佳国自然 中标 研究热点 转录调控中标率高达189 作为国自然热点之一的肿瘤微环境的研究在近几年也一直处于上升趋势 转录调控在肿瘤发生 发展
  • 最大流-Dinic算法,原理详解,四大优化,详细代码

    文章目录 零 前言 一 概念回顾 可略过 1 1流网络 1 2流 1 3最大流 1 4残留网络 1 5增广路

随机推荐