标签:
性质: 常系数可忽略:O(f(n)) = O(c × f(n))
低次项可忽略:O(n^a + n^b) = O(n^a), a > b > 0
常数(constant function)
2 = 2010 = 2010*2010 = 20102010 = O(1)
这类算法的效率最高
对数 O(logn):lnn | lgn | log100n | log2010n
常底数无所谓
? 常数 a, b > 0,lna / lnb = logab = O(1)
? n > 0 都有 logan = logab × logbn = O(logbn),反之亦然
常数次幂无所谓
? 常数 c > 0,log(n^c) = c × logn = O(logn)
这类算法非常有效
复杂度无限接近于常数
初始化int类型的数组
只能初始化为 -1 和 0
初始化bool类型的数组
只能初始化为 false 和true
初始化char类型的数组
可初始化为任意的ASCII码字符
int -2147483648~2147483647 (-2e+9 ~ 2e+9)
unsigned int 0~4294967295 (0 ~ 4e+9)
long long
-9223372036854775808 ~ 9223372036854775807 (-9e+18 ~ 9e+18)
unsigned long long 0 ~ 18446744073709551615 (0 ~ 1e+19)
__int64
-9223372036854775808 ~ 9223372036854775807 (-9e+18 ~ 9e+18)
unsigned __int64 0 ~ 18446744073709551615 (0 ~ 1e+19)
__int64与long long 都是在32位平台开始使用的64位整数的数据类型,在存储方式和使用方式上没有区别
两者的区别在于,它们命名的发起人不同,支持的平台不同
long long这个数据类型,是UNIX平台发起并支持的
而__int64是微软从win95(VC6)开始发起并支持的
在老的windows开发平台下(如VC6),不识别long long
而老的UNIX,也不识别_int64
当然,现在比较新的平台,两种数据格式和相关的定义、函数都可以兼容了
同样,作为64位整数的printf输出格式定义,也是一样
微软使用的是%I64d
而UNIX使用的是%lld以及%llu(无符号64位)等形式
实际上,无论哪一种,在实际效果上没有不同,只是因为定义者和使用环境造成的支持或不支持的问题
float
只能提供6~7位有效数字
占4字节(32位)内存空间,其数值范围为 |3.4e-38| ~ |3.4e+38|
double
精确度比float高,可提供15~16位有效数字
占8 个字节(64位)内存空间,其数值范围为 |1.7e-308| ~ |1.7e+308|
请使用 scanf 和 printf 来代替 cin 和 cout,某些情况下后者效率远远远远低于前者
Runtime Error 是指程序在运行过程中出现了问题
通常是内存访问的问题,比如数组下标越界
一般这些问题在小规模测试的时候不会发现,而在 OJ 上大规模数据测试时候就容易暴露出来,所以请自行构造一些数据来调试程序
此外,需要注意的是, main
函数必须以 return 0;结束,如果返回值非 0,也会被认为是 Runtime Error
常见的是除 0 错误 和 内存访问错误
标签:
原文地址:http://blog.csdn.net/only_air/article/details/51165201