NOIP注意事项

进考场第一件事

关闭360

关于知乎

在OI中,有哪些看似没大碍,却很致命的错误? - 知乎

关于数组:

数组名写错莫名全WA/RE,样例还过了

写对拍就可以避免

打表打了53个数组,循环到55,莫名全WA

如果开了二维数组,可能在比较大小时候只调用了一维。

例如d[][]二维数组,你可能写dij时写了d[x]+1<d[y],这个-Wall都救不了你。

关于MLE:

就算给了你1个G空间也要算一下。

算空间技巧:在main函数开头加上printf("%f\n", sizeof(arr) / 1000000.);return 0;就可以输出arr的大小。

一般只输出空间复杂度最大的数组。

注意不同平台指针数组的差异,64位机子是8字节,32位机子是4字节。

关于平台差异:

NOIP让用clock(),但是最好别用//为啥让用,因为我真的试过

Linux下CLOCKS_PER_SEC和Windows下好像不一样(反正知道Windows下好像是1K,Linux应该是100W)

注意模拟退火、造数据时候Linux下rand()的范围是[0,0x7FFFFFFF],而Windows下是[0,0x7FFF]

可以除以一个(double)RAND_MAX获得一个[0,1]内随机实数

Windows精度不够可以写ran30()=(rand()<<15)|rand()

关于long long:

涉及乘法、取模的可以在暴力程序#define int long long,正解程序该怎么写怎么写

对拍时候把数字的范围开满跑

如果正解过了,可以把正解#define int long long复制一份当暴力,把所有数据范围都开满对拍

在CCF的32位老爷机上,int比long long快好多

关于多组数据:

用一组相同的数据复制多份跑一遍,如果多次答案不一样那肯定是出锅了

用两组数据(规模差异尽量悬殊)交换着来,如果答案不一样肯定是出锅了

多组数据不能开static(例如邻接表加边的tmp)//我会说我不会在main里调用别的函数的static吗

关于CE:

按照C艹标准来。

如果来了-Wpedantic + -Werror 都没有CE,那么基本上是不会CE 了

在NOI Linux下测一遍。

关于头文件:

#include <bits/stdc++.h>
using namespace std;

如果bits不让用,那么

打开bits,把整个头文件复制进来

先什么头文件不加,然后一遍一遍CE一遍一遍加

注意y0 y1 yn j0 j1 jn

关于对拍:

建议用ghj1222的标准对拍板子

编译开关

-Wall一定要加

强推-Wshadow 将局部变量覆盖全局变量暴露出来

-Werror将所有警告视为错误

NOI Linux

HE

在桌面上有一个VMware的图标,双击打开之,打开虚拟机。

虚拟机密码123456。

进入虚拟机后,按Ctrl + Alt + T打开终端

在终端输入vim可以打开编辑器之神,强烈推荐

或者是nano打开轻量级编辑器

gedit打开GUI编辑器

emacs打开奇怪的编辑器

左上角菜单里有GUIDE(不太好用)、宇宙最强调试器DDD

虚拟机桌面上的noip快捷方式是Win7里的E:\noip

或者是虚拟机的\mnt\hgfs\noip

终端输入cd显示当前目录/跳转目录,ls列出所有目录下文件

diff对拍比较文件 clear清屏

重要的事情

注意审题,审题审错了打暴力对拍都救不了你,真的。

关于心态

心态不好可以去跑几圈,燕大的操场应该是不错的

posted @ 2018-11-08 06:31  ghj1222  阅读(673)  评论(0编辑  收藏  举报