标签:自己实现 灵活 eof memset 优先 输入输出重定向 恰恰 空间 can
规则:以最少的时间过题
(这意味着0ms与1000ms是一样的)
了解规则,善用规则
虽然这个题我不会但是AC是没有问题的
--ACRush
读题之后,数据的规模基本决定了算法的复杂度
通常 1e8的复杂度 是极限
1e6:n nlogn(慎用)
1e5、1e4:n nlogn n√n
1e3:nn nnlogn(慎用)
对于1000ms来说的
当然还要考虑常数系数
有时恰恰相反,看上去暴力过不了,而实际上加上一些优化之后正好能过。
输入输出是整个程序的瓶颈,对于Java来说尤其如此
数据规模较大时(>1e5)
明显减少运行时间
速度:getchar>scanf>cin
要用memset,而非循环进行初始化
memset(num,0,sizeof(int)*n)
memset(num,-1, sizeof num);
memset(num,0x3f,sizeof num);
memset(num,0,sizeof num);
int loc=lower_bound(num,num+n,value)-num;
loc:排好序的数组里二分查找第一个>=value的下标
m=unique(num,num+n)-num;
unique将排好序的数组去重且顺序不变
m:去重后的数组大小
手速=读题+思维+代码
不是你编码慢错误就可以少,不要把时间浪费在打字上,一有思路马上实现、快速实现,闻斯行之,行斯到之。
善用工具是提高代码速度的必由之路。君子生非异也,善假于物也。
标签:自己实现 灵活 eof memset 优先 输入输出重定向 恰恰 空间 can
原文地址:https://www.cnblogs.com/weiyinfu/p/9629508.html