21 Webb.S
memset 128 =-max (int) memset 0x3f= max (long long) memset-0x3f=-max (long long) memset的正规用法是只能用来初始化char类型的数组的,也就是说,它只接受0x00-0xFF的赋值 然而,在大多数情况下,需要对一个double或int的数组赋一个相对很大或很小的初值 以下的赋值方式是不正确的: memset(arr,2147483647,sizeof(arr)); 但是可以用一些技巧,来得到一个差不多的最大值,比如像: memset(arr,0x7F,sizeof(arr)); 它将arr中的值全部赋为2139062143 这是用memset对int赋值所能达到的最大值 类似的还有: memset(arr,0x80,sizeof(arr)); //set int to -2139062144 memset(arr,0x7F,sizeof(arr)); //set double to 1.38242e+306 memset(arr,0xFE,sizeof(arr)); //set double to -5.31401e+303 *** gdb
* 数组不够开可以打滚动 * 更改代码备份。
* 判断条件的顺序,在变化前判断 * I64d I大写 lld 均小写
* 在函数中递归进入的全局变量和过程变量 * 条件中\不是\* 比较中相等的额外处理
* 一个函数中的局部变量不能在另一个函数中使用 * sort只要写cmp很好用
* bool cmp(node a,node b) {return a.e
* 一题时间做太长了换题目
* for 循环 改变量i时 要都改,还要注意int i 是否在循环内使用 * c++里面也有continue,用法相同 * #define (替换成) (要替换的)
*** pow速度测试——貌似挺快的,不过精度不高
21
22 Webb.S
* math库的pow不靠谱,位数大失去精度,不用
* 求一个数的质因数,可以把2~sqrt(n)的数求出来,在除过去,得到的最后一个数即为质数
* 要使用或更改读入数据时,先进行备份 * 交程序前要把原来过程的输出//掉
* set中lower_bound指>=的而upper_bound指>的,lower可能用用方便点,iterator--就是<的了
* C++ STL iterator的常用方法有: iterator++ 移到下个元素 iterator-- 移到上个元素
*iterator 访问iterator所指元素的值
< > == != iterator之间的比较,例如判断哪个元素在前
iterator1 + iterator2 iterator之间的加法运算,类似于指针加法 * 递归处理数据较复杂,可以先存到数组里。 * 改完检查遍再调试。 *** 快速幂
* 看清题目规模,尤其是10^5与5*10^4这类区别 * string数组是动态内存
* 注意用int 与long long的使用 * 测时间: 创建enter文件, 再创建.bat文件,打入 time * max()函数在算法(algorithm)库中 * #include <>里面不能有空格 *** 找树的直径(>1的) * 由整数获得的实数要用(float)强制类型转换 * 用float可能可以解决double带来的一些精度的问题 *** 一个数组赋值给另一个数组——memcpy 与for 语句一样快 * 注意是<还是<= * 无论是函数还是过程,后面要加(),如swap(); * 特别考虑数据中0、1的情况 * NOIP搜索题倒着搜分数高 * for(int j = 1; j <=n; i ++) *** 位运算 * 二分注意边界 * NOIP动规都是不带优化的,便怀疑是贪心。 * while (scanf(\判断是否文件结尾 * 不用abs与fabs,还是自己写个函数吧。 * 字符串回车神马的用P吧。 * 加油!! 22