本篇文章是本人 各地搜刮 整理的来的,不喜勿喷!
会继续完善!(第一次用富文本,好不习惯呐!望各位dalao斧正!)
题目分布情况:第一题:
基本语法编程题目(难度上升、偏思维逻辑)+推公式(过程,用代码边推边写)+实现细节
数学方面
唯一分解定理
素数筛(埃氏筛、欧拉筛(线性筛))
最大公约数(__gcd()函数)
最小公倍数
杨辉三角公式
入门算法
枚举法
模拟法
暴力、找规律
时间(空间)复杂度优化(数据类型、数组大小等)
第二题:
模拟
基础算法+时间(空间)优化
基础算法
高精度算法(加、减、乘、除(高精度除以低精度))
排序算法(十大排序)
洪水填充算法(Flood Fill)
贪心法
递推法(斐波那契公式(f(n)= f(n - 1) + f(n - 2))
递归法(一定要注意时间复杂度!)
二分法
倍增法
第三题:
DP动态规划(线性/背包/区间)
搜索 (DFS/BFS)
模型化题目
第四题:
DP动态规划
最短路径(图论+动态规划)
拓扑排序
哈希表(unordered_map)
链表
队列
树形数据结构(栈+树+搜索+结合题意)
2024可能会考的知识点(即以前未考过的):递归法
倍增法
高精度算法
搜索(DFS/BFS)
重点放在第一题和第二题!!!第三、四题骗分即可!!!
注意事项:1、一定要检查文件名!防止意外的爆0!!!
2、MLE(Memory Limit Exceeded:内存超限):
①一般的,开个int数组不要超过5500。二维不要超过[220][220]。
②减少递归算法的使用(很占空间!!!)
3、文件读写操作写错:
①每道题都要加上读写操作。如果没有的话会又意外的爆0(freopen)。
②专门留下几分钟检查读写操作!
4、RE(Runtime Error:运行错误):
①主函数必须用int !!!
②主函数末尾必须加return 0; !!!
③数组越界!!!(注意下标!)
④除以0
5、可能会丢分的操作
①代码(算法)错误
②TLE(Time Limit Exceeded:时间超限):
循环次数太多
搜索未记忆化※
6、(划重点!!!)一定要结合样例说明以及数据范围等条件来分析题目!!!不要着急写代码!!!
考试技巧:1、暴力
仅可作为打表,不可作为程序!
暴力程序因情况来定
俗话说得好:“暴力出奇迹,打表过样例!”
2、骗分
例如只要有否定输出,如impossible,F,NO之类的,输出他,即可“偏分”!
3、调试DEV-C++
把项目管理一栏勾上。再设置断点,慢慢调试。就可以模拟计算机的运行啦!
4、编写生成随机数的程序❤
这样你在过了样例不放心时,就可以再生成一组数据了!
※记忆化代码:
int h[100][100];
int dfs(int n,int m){
if(h[n][m]) return h[n][m];
h[n][m] = h[n][m + 1] + h[n + 1][m];
return h[n][m];
}
❤生成随机数代码:
#include
using namespace std;
int main(){
srand(time(NULL));
int n = rand() % 10000 + 1; //生成一个随机数,其区间在1~10000之间。
Cout