前言:
你是否还在为了“TLE”(时间超限)而烦恼?
面对⑩一样的代码无动于衷。。。
分享几个好用的小技巧~
循环:
// 不好的实践
for (int i = 0; i < v.size(); i++) {
// ...
}
// 好的实践
for (register int i = 0; i < v.size(); ++i) {
// ...
}
tips:使用register定义局部变量,运行快很多。register直接将变量存储在寄存器中。(不可使用取地址符)
把xxx++改为++xxx 速度会更快那么一丢丢。
输入输出:
很多新学c++冲信奥的朋友都惯用cin cout
其实C语言里有一种东西叫scanf printf
超好用!!!
int x;
//scanf
scanf("%d",&x);//双引号内用“%”+特定数据类型缩写来表示变量类型 “,”后用“&”标注对应变量
//cin
cin>>x;//运算符重载
//printf
printf("%d",x);//同样的,“%”占位,不同的是printf无需“&”(取地址符)
//cout
cout<<x;//箭头反过来
简单介绍一下用法~
scanf和printf在使用时需标注变量类型,在编码时稍复杂一些(要记住不同类型的对应缩写),但在面对大数据输入输出时非常快!在OI赛制中常常限制1s时间限制,有时用cin单单输入数据就超时了,非常非常亏!!!此外,printf在格式化输出上非常方便。例如小数点和有效数字保留,左对齐右对齐等等。c++中cout也可以加入通过一大坨达到相同的效果,但相比之下printf完胜。
tips:printf和scanf还有好多好多花式操作和规则用法,这里不多说了,可以看看别人的博客都写的很详尽~
总结:
注重细节,不要因为信息差白白丢了分。
希望能给屏幕前的你一点帮助~