[置顶] 各种要有认知的常识、技巧(updating~~)
2017-12-22 21:21
337 查看
说在前面的:
看到很多dalao的博客都有这种东西,想起NOIP的经历,不禁心酸。为了避免那样的事情再发生,防止发生,禁止发生(重要的事情说三遍!!!),博主经过深思熟虑,决定开这篇博文。
这篇博文的内容可能来自于博主自身的车祸,或者是博主身边基友的车祸,或者是博主在网上看到的车祸,总之都是经验。
由于某P将被淘汰,所以这篇博客讲的都是C++的错误。
头文件:
知乎上告诉我们:NOI官网告诉我们:
理论终归是理论,最好还是不要用什么奇奇怪怪的东西,翻车就……呵呵了。
#include<cmath> #include<string> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<iostream> //一般要打上面的头文件,注意string和cstring是不一样的。 #include<ctime> #include<set> #include<queue> #include<bitset> //上面的自行选择,其它的黑科技我暂时不会,所以头文件也没有。 #define fo(i, x, y) for(int i = x; i <= y; i ++) #define fd(i, x, y) for(int i = x; i >= y; i --) #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b)) //上面是常用宏,缩代码用的。 //注意min,max中a,b不能是一些运算量大的函数,如果是相当于计算了两遍。 using namespace std;
读入输出:
printf注意事项:
long long:在没有某插件的WindowsXP下,%lld变成%d(NOIP考场亲测),此时64位长整型只能用%I64d。
在打了补丁的WindowsXP及Window7以上的系统,%lld,%I64d都可以。
在Linux下,只能用%lld,所以在比赛中,如果出现电脑不能用%lld,可以用%I64d代替调试或直接忽略,但是在提交时一定要改成%lld。
unsigned long long:用%llu。
long double:用%Lf。
实数保留小数:%.xlf或%.xLf(x是保留的位数)。
高精度补零:%0xd或%0xlld(x是补齐零后的位数)。
三种输出方法的时间比对:
OI c++主要的读入输出方法有三种:1.cin,cout
2.scanf,printf
3.getchar()读入优化,putchar()输出优化。
读入输出优化的板子链接。
由于cin关同步我们不知道能不能用,所以不考虑它。
接下来给出三种方法的时间(按上面的顺序,仅作参考):
读入:
1MB: 63ms,42ms,10ms
10MB:631ms,410ms,97ms
输出:
1MB:35ms,13ms,11ms
10MB:355ms,102ms,103ms
相信读者从上面的数据可以得出自己什么时候该用什么东西。
空间:
以前不知道谁说过5000*5000的题就不要开6000*6000.计算:
记住每个变量占的字节,空间=字节*大小/1024^2(MB)。查看:
当太多数组不好计算时,infleaking提供了一种方法:程序末尾加while(1);
运行。
去任务管理器里找。
栈:
NOI系列赛的栈和正常空间是一起算的了,我们不用打那个TMD人工栈。但是本机爆栈如何调试?
打开c++,工具,编译选项,在编译时加入以下命令的框里输入:
-Wl,--stack=134217728
即可开大栈,后面数字自己可以调。
精度:
实数判等于的时候一定要作差取绝对值再判小于一个1e-8左右。实数高斯消元时记得提当前系数最大的上来。
实在不行可以用__float128这种黑科技,但是巨慢,并且考试时不能用。
常数:
如果模块化的函数太多了,可以提至主程序。尽量不要用algorithm自带的min,max,超级慢,可以用define+三目运算符搞,注意没有记忆化的函数调用时不能这样用。
做数论题时最好不要全文替换long long,以前我就被一个分块时用了long long慢了一倍坑惨了。
调试:
其实博主不太会用c++自带的调试,博主依然采用传统的断点输出调试(好吧一定会改的),c++自带调试有些东西也做不了,但是在简单调试时没有问题。尽量把代码风格练的明朗一些吧,有些人的代码简直不忍直视(真不知道他们怎么坚持下来的)。
相关文章推荐
- [置顶] iOS 小技巧笔记(持续更新)
- Windows下Dos命令和Linux下基本命令集合收藏<以及各种操作奇淫技巧>
- 各种银行卡的收费情况,赶紧给自己储备点生活常识
- [置顶] 算法笔记(3) 学习技巧
- [置顶] 有关搜索引擎的思考与实用技巧的总结(Google)
- iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
- Linux小白-各种实用技巧
- 计算机常识 和 应用技巧
- iOS时间相关各种技巧
- 分辨率类[置顶] c# winform窗口自适应各种分辨率类
- [置顶] 自定义吐司以及Toast的各种用法,详解。教你学会使用各种各样的Toast
- 关于VISTA系统的各种技巧与经验
- IntelliJ Idea各种技巧设置笔记和错误解决
- matlab各种技巧笔记
- [置顶] 与位运算相关的编程算法技巧的总结java实现
- [置顶] 恶意代码--杀毒软件查杀的对抗技巧分享
- Python 内编写类的各种技巧和方法
- [置顶] hive 动态加载数据到指定分区,以及其他hive使用的技巧
- Django REST framework的各种技巧——3.权限