天梯赛赛前总结

news/2024/5/3 19:20:18

某些函数后面有带小括号的注解,小括号中各参数的顺序就是传入的参数的顺序。

stl

  • queue
    声明:queue name;(其他容器如无特别标注则声明方式与此相同)

    函数:front,back,empty,size,push,pop,swap(c++11)

    比较运算符:==,<=,>=,<,>,!=:按照字典序比较两个queue(c++20)

  • priority_queue
    函数:top,empty,size,push,pop,swap

  • stack
    函数:top,empty,size,push,pop,swap(c++11)

    比较运算符:==,<=,>=,<,>,!=:按照字典序比较两个stack(c++20)

  • map/unordered_map
    声明:map<first值类型,last值类型> name;

    函数:[], begin,end,rbegin,rend,empty,size,clear,insert,erase,find,lower_bound(返回指向首个不小于给定键的元素的迭代器 ),upper_bound

    tips:如果map的键值是一个struct,那么需要定义比较(<)。定义方法:bool operator <(const item &a){return x < a.x}(以x升序),unordered_map则不需要定义比较;一定要使用mp.lower_bound()而不是lower_bound(),直接用lower_bound()时间复杂度是不对的。

  • set/multiset
    函数:begin,end,rbegin,rend,empty,size,clear,insert,erase,find,lower_bound,upper_bound

    tips:对于multiset,在erase时,如果只想擦除一个值的一个元素,不能使用erase(x),一个较好的实现方式是erase(find(x));一定要使用st.lower_bound()而不是lower_bound(),直接用lower_bound()时间复杂度是不对的。

  • vector
    函数:begin,end,rbegin,rend,empty,size,clear,insert(在pos前插入x/在pos前插入cnt个x),erase(擦除pos处的元素/擦除[first, last)处的元素),push_back,pop_back,lower_bound,upper_bound

    比较运算符:==,<=,>=,<,>,!=:按照字典序比较两个vector(c++20中移除)

  • bitset
    函数:[],count,size,二进制操作,set(pos,val),flip(pos)(翻转指定位)

    声明:bitset<长度> name。

bfs

注意每往队列里扔一个元素就要把vis标记为1,否则时间复杂度可能有问题。

字符串

以 string 为模板。

  • size
  • insert:(在pos处插入cnt个ch)(在pos处插入s)
  • erase:(擦除pos处字符)(擦除从pos处开始的len个字符)
  • find:(查找字符串s在pos处之后的首次出现位置)返回值是首个字符的下标,如果没有则返回s.npos
  • rfind:(查找字符串s在pos处之后的最后一次出现位置)返回值是首个字符的下标,如果没有则返回s.npos
  • substr:(获得从pos处开始的len个字符构成的字符串)
  • 比较运算符<,=,<=...:字典序比较
  • +=:拼接两个字符串
  • getline(cin,ss):读入带空格的字符串

输入格式

对于scanf,printf:

"%02d":两位整数(例如13,02,05)。

"%.2lf":两位double(例如0.13,0.02,0.05)。

杂项

memset赋足够大值用0x3f,0和-1可以直接赋。

关闭输入输出流以加速读写:

std::ios::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);

常用算法

Floyd:

for (int k = 1; k <= n; k++) {for (int x = 1; x <= n; x++) {for (int y = 1; y <= n; y++) {f[x][y] = min(f[x][y], f[x][k] + f[k][y]);}}}

并查集

void find(size_t x) { return pa[x] == x ? x : pa[x] = find(pa[x]); }

dijkstra

struct edge {int v, w;
};struct node {int dis, u;bool operator>(const node& a) const { return dis > a.dis; }
};vector<edge> e[maxn];
int dis[maxn], vis[maxn];
priority_queue<node, vector<node>, greater<node> > q;void dijkstra(int n, int s) {memset(dis, 63, sizeof(dis));dis[s] = 0;q.push({0, s});while (!q.empty()) {int u = q.top().u;q.pop();if (vis[u]) continue;vis[u] = 1;for (auto ed : e[u]) {int v = ed.v, w = ed.w;if (dis[v] > dis[u] + w) {dis[v] = dis[u] + w;q.push({dis[v], v});}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/22495.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

mysql 数据假删 保持数据唯一

解决方案 1.增加一个额外字段delid,默认为0,删除该行时,保存改行的id值。根据字段的默认值0(null不行,因为唯一索引对null的字段不起作用)来防止保持相同数据

我的SCRT颜色设置

//include_lib\system\debug.h /** LOG 通过常量控制*/ #elif (LOG_MODE == LOG_BY_CONST)#define log_info(format, ...) \if (LOG_IS_ENABLE(LOG_INFO)) \printf("\e[1;47;35m" "[%s %d]:" "log_info(format, ...)" "\e[0m",…

阿里云图片资源访问

第0张。第1张。第3张

动静态库

动静态库的概念和理解动静态库,动态库的加载8. 动静态库 8.1静态库静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库 静态库的名字一般是 libXXX.a ,有效名是XXX,去掉前缀lib去掉后缀.a在进行链接的时候是链接相应的二进…

数组题目

数组问题1 密码验证:程序设定的密码是“Y1N2ab”,从键盘输入密码(密码长度不超过 10),和设定密码相比较,密码正确的话输出“thats ok”,程序结束;错误的话提示再次输入密码,最多允许输3次数组问题二 编程将一个16进制的字符串转化为十进制数,如“2A”转化为42。字符串应…

第5章 复杂推理——像人类一样思考

【转载】https://github.com/datawhalechina/hugging-llm第5章 复杂推理——让大模型更加像人一样思考在之前的章节中,我们学习了如何使用大型语言模型来处理自然语言理解和文本生成任务。目前的大型语言模型已经能够轻松应对日常任务,但当任务的复杂度超过一定阈值时,这些模…

基础 IO (Linux学习笔记)

Linux下文件系统,语层的缓冲区,重定向,软硬链接,磁盘的结构基础IO 1.重谈文件空文件在磁盘也要占据空间 文件 = 内容 + 属性 文件操作 = 对文件内容+对属性 or 对文件内容加属性 标定一个文件,必须使用文件路径加文件名【唯一性】 如果没有指明对应得文件路径,默认是在当…

v-model的修饰符( .number .trim .lazy)

v-model的修饰符 .number的作用是将绑定的值从string类型变为number类型 在上述代码中,我们在input元素绑定了blur事件,作用为当鼠标移出当元素,触发该事件去响应方案 可以看到在鼠标移出后,控制台打印的number类型为string 当我们再v-model后加上修饰符.number后 控制台输…