天梯赛经验总结(细节篇)

天梯赛L1,L2的常考考点:

L1:

  • 输入输出、字符串处理
  • 简单数学:整除、取余、最大公约数、最小公倍数、素数判断
  • 简单循环、条件判断
  • 结构体/简单排序
  • 水题占比极高,不卡算法,只卡细心

L2:

  • 基础数据结构:栈、队列、链表、二叉树遍历

  • 排序、二分查找

  • 简单图:连通性、最短路(Dijkstra 简化版)

  • 简单递归 / 暴力枚举

  • 模拟题(逻辑长,但不难)


    需要注意的细节处理:

天梯赛的基础题不难,但是有的时候可能卡在细节处理上,比如赋值,数值溢出,越界访问等细节,导致一些案例WA,下面是我总结的比较容易犯错的几个点还有需要记住的细节。

vector数组的插入:

在写vector数组进行读取数值的操作的时候,需要注意有没有一开始就给数组开辟了空间,如果已经开辟了空间,直接用下标,如果没有,用push_back()。因为有可能出现你已经开辟了空间,但是写入数据使用的是push_back(),这样你取出来的数据就有可能不对。

你可能觉得没什么,但是有时候脑子一热就有可能写错,检查的时候却反应不过来,所以最好养成这样一个习惯。


栈的读取:

注意在读取栈中的元素时一定要确保栈是非空的,否则程序会出错,每次写一句**!st.empty()**总是没有问题的,多一重保险嘛。


string字符串的常用操作(常考):

string是天梯赛的常考知识点,所以下面的常见操作一定要掌握:

以string s="hello"为例

1.清空字符串:s.clear()
2.插入/删除:

插入:s.insert(2,"xx"),表示在索引2前面插入字符串"xx"

删除:s.erase(2,2),表示从索引2开始删除两个字符

3.访问字符:

s.front()/s.back(),分别为访问第一个和最后一个字符

4.查找:

int pos=s.find("h"),find函数返回字符的索引 ,如果字符串中找不到这个字符,则返回string::npos

5.分割空格:

分割空格操作:

下面是分割字符操作的代码模板,考试时可以直接写;

cpp 复制代码
vector<string> parts;//parts里存的是分割的字符串
string temp;
stringstream ss(s);
while(ss>>temp){
parts.push_back(temp);
}
6.分割指定字符,如!,&等,

我们将这些字符记为delim,函数模板如下;

cpp 复制代码
vector<string>split(string& s,char delim){
    vector<string> parts;//parts里存的是分割的字符串
    string temp;
    stringstream ss(s);
    while(getline(ss,temp,delim)){
    parts.push_back(temp);
    return parts;
}

还有要注意的一点是,如果你用cin>>s;那么程序在读取到空格后会终止的,如果你想要读取含有空格的字符串,例如"hello world",需要用getline(cin,s);

还有在使用getline时,最后看一下前面是否有空行,若有需要用cin.ignore(),否则就算你用了getline,也读取不了字符串


优先级队列:

天梯赛考优先级队列考的也相对较多,下面是优先级队列的几个模板。

优先级队列默认是大顶堆,小顶堆的写法如下:

cpp 复制代码
priority_queue<vector<int>,vector<vector<int>>,greater<vector<int>>heap;

那如果我想要自定义比较函数呢?也很简单,priority_queue的模板如下:

priority_queue<元素类型,底层容器,比较函数>

例如;其中cmp是自定义比较函数,

cpp 复制代码
priority_queue<vector<int>,vector<vector<int>>,decltype(cmp)>heap(cmp);

总结:

好了,要说的就这么多了,其实天梯赛想要拿100+还是很容易的,注意一下细节不要犯错就可以了,但是想要拿到高分还是要多练算法。

相关推荐
hqyjzsb3 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
辰烨chenye3 小时前
LeetCode Hot 100 题解 · 二分篇
java·算法·leetcode
微功夫信息技术3 小时前
分层多智能体强化学习驱动的非急救转运公平 - 效率统一调度系统研究与实践
人工智能·学习·算法·动态规划
sanjiaomao3334 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
乐迪信息4 小时前
如何通过AI防爆摄像机精准判断船舶超速?
大数据·人工智能·算法·安全·目标跟踪
大圣编蚕5 小时前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法
小玮看世界6 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
黎阳之光6 小时前
数字孪生赋能全域水网,实现水资源管控与节水降碳双向提升
人工智能·物联网·算法·安全·数字孪生
随意起个昵称6 小时前
【BFS】冰面滑行
算法·宽度优先
IT小白杨7 小时前
多店铺防关联指纹浏览器哪个好:从账号关联判定模型到环境隔离架构的一次拆解
经验分享·物联网·矩阵·架构·指纹浏览器