首页 > 编程语言 >c++学习由浅入深刷题指南

c++学习由浅入深刷题指南

时间:2024-01-23 22:35:53浏览次数:38  
标签:由浅入深 Section USACO BOSS 算法 c++ 动态 规划 刷题

新手村

任何一个伟大的目标,都有一个微不足道的开始。

洛谷的第一个任务

勇敢的迈出第一步,了解下语言和洛谷。跟着书本和老师走,不会难的。

顺序与分支

计算机的智能性开始得以体现,因为计算机能够根据不同的条件选择了。

循环!循环!循环!

计算机最不怕的就是重复。你让它做10000次同样的事它也不怕啦,但是让他做1亿亿次的话……

数组

跟数组有关的题目基本上都要用到循环,所以请先完成1-3。

简单字符串

计算机不仅可以处理数字,还能处理文字!就是其实跟数字也没什么差。

过程函数与递归

将代码串进行打包,就是过程与函数。过程与函数调用自己则为递归。有一点小难但不要怕哦。

BOSS战-入门综合练习1

这里将前面的内容综合起来了,会有点难,不过你可以问老师同学,也能上网查资料。

BOSS战-入门综合练习2

勇士,竟然来到了BOSS的老巢!来一场恶斗,证明自己的实力,解锁下一个级别!

普及练习场

普及组选手可冲刺训练,提高组选手亦可在此巩固基础。

简单的模拟

开始普及组的训练!所谓模拟,就是直接根据题意编写,思维难度简单。

交叉模拟

这里也是模拟,但是会混有些别的部分。思维难度不大,但是编写起来会有些难度。

排序

将杂乱无章的数据变得有规律。有各种各样的排序算法,看情况使用。

排序Ex

这里的排序就更上一层了。不仅融合了别的算法与技巧,排序本身也有各种花招。

字符串处理

这里的字符串处理还会变得更加的有意思,难度也更大。需要好好地思考一下。

贪心

贪心就是只考虑眼前的利益。对于我们人生来说太贪是不好的,不过oi中,有时是对的。

深度优先搜索

搜索可以穷举各种情况。很多题目都可以用搜索完成。就算不能,搜索也是骗分神器。

广度优先搜索

广度优先搜索可以用来找有关“最短步数”的问题。恩,也可以用来“地毯式搜索”。

带有技巧的搜索

这里的搜索不仅包含了dfs和bfs,还包括剪枝、记录等技巧以加快速度。

分治算法

将大问题拆分为小问题,分而治之,各个击破,然后在合并回来。

简单数学问题

用计算机解决某些麻烦数学问题,再合适不过了。这真是绝妙的搭配啊!

递推与递归二分

递推,层层递进,由基础推向顶层。二分不仅可以用来查找数据,还可以确定最合适的值。

线性数据结构

数组,链表,队列,栈,都是线性结构。巧用这些结构可以做出不少方便的事情。

树形数据结构

由一个根节点分叉,越分越多,就成了树。树可以表示数据之间的从属关系

动态规划的背包问题

这是最基础的动态规划。不过如果是第一次接触会有些难以理解。加油闯过这个坎。

线性动态规划

这也是基础的动态规划。是在线性结构上面的动态规划,一定要掌握。

多维动态规划

这里的动态规划就不止一维了。不仅要小心时间复杂度,也要注意空间复杂度。

更要技巧的动规与记忆化

这边的题目有各种搞法。当然有的题目也可以使用记忆化搜索来降低思维难度。

高精度算法

就算是long long(或int64)还不够怎么办?用高精度算法。自己动手丰衣足食。

贪心EX

虽然是贪心题,可能不是你当时你虐着玩的贪心惹qwq

简单数学

数学和oi是密切相关的,数学不仅是oi的基础,而且是算法的核心。

BOSS战-普及综合练习1

好不容易闯到这一关,你那还等什么呢?抄起家伙赶快上啊!

BOSS战-普及综合练习2

来搞定第二个BOSS。虽然战斗艰难,但你一定没有问题。

BOSS战-普及综合练习3

普及练习场的大BOSS:“一定让你有去无回”。怎么办呢?只能打倒他开启下一个级别!

普及常见模板

这里集中了比较基础的算法的模板。提高和省选也有模板题哦!

提高历练地

已经去除了普及组难度的,请组织放心。成长大牛之必写题!!!

搜索Ex

开始提高组的试炼。这里已经去除了所有普及组难度的题目。哼哼,怕了吧。。

动态规划TG.lv(1)

这是提高组难度中比较基础的动态规划,也许一两个转移方程就可以写出。

动态规划TG.lv(2)

这里的动态规划稍稍有所加大难度,思考转移方程的时间可能会与编写程序的时间持平。

动态规划TG.lv(3)

比较需要技巧的动态规划。有的不仅仅需要状态转移方程,可能还会与别的算法综合。

数论

数论就是研究整数的理论。包括公约公倍数、质数、欧拉定理和同余方程等。

博弈论

博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。

其他数学问题

听说学oi的同志们数学都挺好。那么。就请完成下面的题目证明这一点吧!

图的遍历

图是一种非常重要的数据结构,描述对象复杂的练习。这里开始接触图的基本概念。

最短路问题

最短路是图论中最重要的部分,多种算法可以应用。很多题目都可以抽象成这种模型。

最小生成树

最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。

较复杂图论I

别的些图论问题,包括树、拓扑排序等。要过这一关,需要学习不少新的算法。

较复杂图论II

更高级的图论算法。包括差分约束、强连通、二分图等。会更难一些。

并查集

用于处理一些不相交集合的合并及查询问题。常常在使用中以森林来表示。

堆总是一棵完全树;堆中某个节点的值总是不大于或不小于其父节点的值。

线段树树状数组基础

这都是比较高级的线性数据结构。在处理一些询问与修改线性问题时,是很好用的。

神奇的解法

有些问题刚开始觉得无从下手。好好想一想,尽量别看题解,否则你会大呼“简单”。

倍增

一种特殊的枚举算法,但可大大加快效率。近年noip有考到。难度较大。

强连通分量

强连通分量

BOSS战-提高综合练习1

年轻人,又是个送上门的,让我来看看你真实的本领。啊哈哈哈哈哈!

BOSS战-提高综合练习2

再来!这里有的题目并非单纯的考察某个算法,而是考察一种综合性的思维。

BOSS战-提高综合练习3

既然已经打倒了前面2个boss,那么第3个也是没有问题的。少年,来吧!

提高模板-nlogn数据结构

虽然这些算法不是noip必须的,但是不算困难,很多题目可以使用这些方法。

省选斗兽场/NOI神殿

为省选及以上选手制作的训练场。其实,省选水平的oier不需要一些外加的刷题列表,本栏仅供参考,也欢迎各位指出不足。

省选基础-读入/输出优化

读入/输出优化是省选刷题时必要的一个东西,这里给出了几题,需要自己手写相应的读入输出处理。作为第一关,这一关相对简单。

省选基础-位运算

位运算往往在必要的时候,能带你优化一下常数,也许是空间;也许是时间;有的时候这样可以多过很多分

省选基础-打表

打表虽然很赖皮,而且基本都是非正解,但是这种办法能让我们在省选中拿到一些会超时或者会超空间的一些数据点

动态规划1

动态规划

动态规划2

动态规划

网络流——最大流

最大流

网络流——费用流

费用流

单调队列

单调队列

概率期望

概率期望

二分图

二分图

点分治

点分治

后缀数组

后缀数组

主席树

主席树

数位DP

数位DP

AC自动机

AC自动机

平衡树

平衡树

树链剖分

树链剖分

动态树

动态树

树套树

树套树

可持久化Trie树

可持久化Trie树

莫队算法

莫队算法

分块

分块

莫比乌斯反演

莫比乌斯反演

其他

其他

USACO

美国经典的算法练习题库,值得一刷

USACO Section 1.1

USACO Section 1.2

完全枚举

USACO Section 1.3

贪心

USACO Section 1.4

有技巧的枚举

USACO Section 1.5

二进制数

USACO Section 2.1

图论和洪水填充

USACO Section 2.2

数据结构与动态规划

USACO Section 2.3

USACO Section 2.4

最短路径

USACO Section 3.1

最小生成树

USACO Section 3.2

背包问题

USACO Section 3.3

欧拉回路

USACO Section 3.4

计算几何

USACO Section 4.1

最优化

USACO Section 4.2

网络流

USACO Section 4.3

高精度

USACO Section 4.4

USACO Section 5.1

二维凸包

USACO Section 5.2

USACO Section 5.3

启发式搜索

USACO Section 5.4

USACO Section 5.5

标签:由浅入深,Section,USACO,BOSS,算法,c++,动态,规划,刷题
From: https://www.cnblogs.com/BadBadBad/p/17983577/ShuaTi

相关文章

  • C++ 项目结构
    1.C++项目结构C++项目包含几千个文件,当构建项目时,需要选择编译哪些文件,选择哪种工具编译这些文件组织称可执行文件1.1编译计算机处理器只能执行底层二进制指令,编译器需要将C++源码转换成处理器能执行的指令集。编译器配置的内存称为栈帧(Stackframe),配置内存传递数......
  • 每日刷题 凯撒密码
    一.题目给定一个单词,请使用凯撒密码将这个单词加密。凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即a变成d,b变成e,…,w变成z,x变成a,y变成b,z变成c。二.题目要求1.输入要求输入一行,包含一个单词,单词中只包含一个小写英文字母,单词中的......
  • 【干货】VS Code中配置C/C++运行环境
    1、安装MinGW-w64有个很重要的工具:MinGW-w64,里面包含了在windows上编译调试C++代码所需要的所有环境(以及一些其他的小工具包,例如linux风格的命令ls,将这个包解压缩后的路径添加到系统环境变量PATH中就可以用了)。他的具体的发布和下载位置:Releases·skeeto/w64devkit(github.co......
  • Leetcode刷题第二天-贪心
    655:非递减数列链接:665.非递减数列-力扣(LeetCode)直接找最大最小值进行替换不行,[1,5,4,6,7,8,9]最大最小值所处位置可能是非递减数列如果nums[i]>nums[i+1],当前这俩个数递减,修改谁,记录前一个数,比较前一个数和当前数的大小,前一个数大,小变大,后一个数大,大变小统计次数,出现两次......
  • C++U5-第04课-广度优先搜索1
    学习目标广度优先搜索简称广搜搜,英文缩写(BFS)顾名思义就是按照广度顺序优先进行枚举,其本质也是一种暴力枚举的思想。 广度优先搜索(Breadth-FirstSearch,简称BFS)是一种图搜索算法,用于遍历或搜索图数据结构的所有节点。该算法从起始节点开始,逐层地向外扩展,先访问当前节点的所有......
  • C++U5-第03课-深度优先搜索3-连通块类型
    学习目标 本节课主要学习一种类型的深度优先搜索-连通块  [数水坑]  【思路分析】相连的水坑可以被认为是一个水坑,求水坑的个数,就是求连通块的个数。可以采用搜索来访问每个点。每访问到一个W表示至少有一个水坑,通过搜索8个方向,得到这个点连通的所有的......
  • C++U5-第02课-深度优先搜索2
    学习目标  迷宫地图类的深搜 对于二维数组中一个点的行和列x,y;与周围8个方向位置的关系[迷宫的相邻点] 遍历(x,y)的周围的四个方向,判断是否越界,无越界输出。【参考代码】#include<iostream>usingnamespacestd;intn,m,x,y;intdir[4][2]={0,1......
  • UE C++一些记录
    #include<windows/WindowsWindow.h>#include"Windows/AllowWindowsPlatformTypes.h"#include<windows.h>#include<shellapi.h>#include"Windows/HideWindowsPlatformTypes.h"UUETuioBPLibrary::UUETuioBPLibrary(constFO......
  • C++auto关键字
    auto用来干啥在C语言中,auto是用来修饰局部变量的,意味着该变量在该代码块内要有效,出代码块自动销毁但是在C++中,有了新的用法:自动推导变量类型inta=10;autob=a;//自动推导b的类型为a的类型(整形)autoc='c';//自动推导c的类型为字符型autosum=Add(a,b);//自动推导su......
  • C++引用 | 什么是引用
    引用我们知道C语言以指针著名C++大佬在发明C++的过程中,觉得指针有些难,就发明了引用引用是什么?引用并不是定义一个新的变量,而是给一个已存在的变量取一个别名.编译器不会给引用变量开辟内存空间,这个别名和它引用的的变量(原变量)共用同一块内存空间简单来说就是:......