时间超限问题处理(c++)

c++中 如果时间超上限

做题上:

考虑关于二进制的方法 比如说

find your present (2)

这道题 可以用异或运算 来发现不重复数

对于动态规划 状态压缩发面 方面应用更多

比如说poj 1185 炮兵布阵

其中地图用二进制表示 十进制储存 运算起来十分方便

输入输出:

c++ 的 cin(istream) 就不如scanf() 时间上速度

同样类比一下cout 不如printf 速度

 注意事项:

1 。用<<运算符申请空间或者表明大小时  必须加括号 这样申请

int a[1<<16];//error
int a[(1<<16)];//true;

  在oj上会超时(实测)

2.看了个大佬关于vector的详解 链接 

重点结论就是:

当动态数组内的元素比动态数组长度多一时,动态数组长度翻倍!

也就是说:if(v.size()-1==v.capacity()) v.resize(v.capacity()*2);

而长度翻倍是很花时间的。所以说做题的时候,记得事先把vector的长度拉得足够长,以免运行的时候,vector长度翻倍浪费时间。

原文地址:https://www.cnblogs.com/gongyanyu/p/10480154.html