一些方法技巧的收集(持续更新积累)

0.使用scanf_s
#ifdef ONLINE_JUDGE
#else
#define scanf scanf_s
#endif // ONLINE_JUDGE

1.string与char*,char[]的转化:https://www.cnblogs.com/Pillar/p/4206452.html

2.在打表的时候如果内容过多可以每10个打一个表,这样空间就会大大缩小比如说阶乘的打表
ll base = 1;
for (int i = 1; i < maxn; i++)
{
base = (base * i) % mod;
if (i % 10 == 0)
ary[i / 10] = base;
//对数据叠乘打表,每10个数打一个表
}
3.c++代码最多运算次数
for(ll i = 0;i < 1e15;i++){}(不超时)
for(ll i = 0;i < 1e16;i++){}(超时)

4.优先队列(好用的队列):https://www.cnblogs.com/huashanqingzhu/p/11040390.html
https://www.cnblogs.com/Deribs4/p/5657746.html

5.链式前向星存图:https://www.cnblogs.com/yangsongyi/p/9885608.html

6.把ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
加在main函数的最开始,部分电脑会使得cin,cout比scanf和printf还要快,cin.tie(0);的作用是解除与cout的绑定,但是使用了这个就不能使用scanf和printf了,可能会出问题
参考:https://www.cnblogs.com/LZShuing-xuan/p/12584916.html
https://blog.csdn.net/weixin_44772995/article/details/92839903

7.for(register int i = 0;i < n;i++);register int可以加快这个循环的速度
blog:https://blog.csdn.net/dghcs18/article/details/103335719

8.在题目说精度要在10-4以上的时候,在输出的答案要制定保留的位数(double默认的精度达不到这么多):
printf("%.10lf\n", cont * 1.0 / n);

9.读取一行内容包含空格:https://www.cnblogs.com/linruier/p/9972871.html

10.求一个点到另一个带至少需要多少次,可以用bfs(深度优先算法你)。如果是判断两个点相遇至少需要多少次,那么就可以用双重bfs。例题:https://ac.nowcoder.com/discuss/435795

11.位运算的gcd(最大公约数)超快:https://blog.csdn.net/Ljnoit/article/details/99319849

12.浮点数取整(向上取整ceil,向下取整floor):https://zhidao.baidu.com/question/2269165722450751748.html

13.高性能的随机数算法std::mt19937
blog:https://www.jianshu.com/p/6d9a7de995bb

14.清空队列的三种方法:https://blog.csdn.net/qq_20574421/article/details/80633727
1.queue<int> q1;q1 = queue<int>();
2.while (!Q.empty()) Q.pop();
3.void clear(queue<int>& q) {
queue<int> empty; swap(empty, q);
}</int></int></int></int>

全部评论

相关推荐

不愿透露姓名的神秘牛友
2024-11-06 13:02
待我拉个屎先:。。。😂中民族你碰瓷啥985哈,又搁着传播焦虑呢?吓得我看了自己学校毕业去向,发现都还行。所以没必要搞这一出,中央民族就中央民族,别非得拿政策985说事,就显得就业很差,然后大家一起焦虑难受😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务