关于卡常与卡时(玄学)

关于卡常与卡时(玄学)

关于卡常与卡时(玄学)

卡常

1. 什么是卡常

“卡掉时间复杂度的常数”简称“卡常”。“卡常”显而易见就是让你的代码更快,取得更好的成绩!像cin、cout的常数比 scanf、printf差,而以此替换、改进及是“卡常”。

2. 怎么实现卡常

卡常的方法有十分多,有快读快输、改变算法(同类型)、开O2优化(应该…算吧)…

快读快输

简单易打版(数据量大时比系统内置的快),还有更快的,可以感性学习。

//快读

inline void read(int &z)

{

z=0;

int ftr=1;

char ch=getchar();

while(ch<'0'||ch>'9')

{

if(ch=='-') ftr=-1;

ch=getchar();

}

while(ch>='0'&&ch<='9')

{

z=(z<<3)+(z<<1)+ch-'0';

ch=getchar();

}

z*=ftr;

}

//快输

inline void write(int num){

int op[30],tot=0;

if(num<0){

putchar('-');

num=-num;

}

while(num!=0){

op[++tot]=num%10;

num/=10;

}

while(tot) putchar(op[tot--]+'0');

putchar('\n');

}

最大最小

有时自己手打的max、min会比系统的快。

inline int mymax(int pp,int oo) {return pp>oo?pp:oo;}

inline int mymin(int pp,int oo) {return pp

部分用来卡常的东西

inline 及把函数带入代码直接使用,节省部分用函数的时间。 register 寄存器,让变量使用等一系列变快。(不能开太多) …

改变算法(同类型)

举例子: 像线段树,在部分情况下,树状数组的时间复杂度会比其优。

卡常部分结束了 O_O

卡时

1. 什么是卡时

“卡时间以获得更准确的答案”简称“卡时”。“卡时”很简单,像模拟退火这种算法就会用卡时以让答案更精确。

2. 怎么实现卡时

有个名为clock()的函数,返回程序运行时间,然后再看题目时间限制,做循环至时间的极限,让答案更准确,正确率更高。 例题:P1337 [JSOI2004] 平衡点 / 吊打XXX

或者计算进入循环的次数,然后大概猜一下时间限制下最多能做多少次,到达极限就退出,输出答案。

卡时部分结束了 O

π

\pi

πO

谢谢观看!!!o( ̄▽ ̄)o

其实还有O优化和火车头(不推荐)

#pragma GCC optimize(3)

#pragma GCC target("avx")

#pragma GCC optimize("Ofast")

#pragma GCC optimize("inline")

#pragma GCC optimize("-fgcse")

#pragma GCC optimize("-fgcse-lm")

#pragma GCC optimize("-fipa-sra")

#pragma GCC optimize("-ftree-pre")

#pragma GCC optimize("-ftree-vrp")

#pragma GCC optimize("-fpeephole2")

#pragma GCC optimize("-ffast-math")

#pragma GCC optimize("-fsched-spec")

#pragma GCC optimize("unroll-loops")

#pragma GCC optimize("-falign-jumps")

#pragma GCC optimize("-falign-loops")

#pragma GCC optimize("-falign-labels")

#pragma GCC optimize("-fdevirtualize")

#pragma GCC optimize("-fcaller-saves")

#pragma GCC optimize("-fcrossjumping")

#pragma GCC optimize("-fthread-jumps")

#pragma GCC optimize("-funroll-loops")

#pragma GCC optimize("-fwhole-program")

#pragma GCC optimize("-freorder-blocks")

#pragma GCC optimize("-fschedule-insns")

#pragma GCC optimize("inline-functions")

#pragma GCC optimize("-ftree-tail-merge")

#pragma GCC optimize("-fschedule-insns2")

#pragma GCC optimize("-fstrict-aliasing")

#pragma GCC optimize("-fstrict-overflow")

#pragma GCC optimize("-falign-functions")

#pragma GCC optimize("-fcse-skip-blocks")

#pragma GCC optimize("-fcse-follow-jumps")

#pragma GCC optimize("-fsched-interblock")

#pragma GCC optimize("-fpartial-inlining")

#pragma GCC optimize("no-stack-protector")

#pragma GCC optimize("-freorder-functions")

#pragma GCC optimize("-findirect-inlining")

#pragma GCC optimize("-fhoist-adjacent-loads")

#pragma GCC optimize("-frerun-cse-after-loop")

#pragma GCC optimize("inline-small-functions")

#pragma GCC optimize("-finline-small-functions")

#pragma GCC optimize("-ftree-switch-conversion")

#pragma GCC optimize("-foptimize-sibling-calls")

#pragma GCC optimize("-fexpensive-optimizations")

#pragma GCC optimize("-funsafe-loop-optimizations")

#pragma GCC optimize("inline-functions-called-once")

#pragma GCC optimize("-fdelete-null-pointer-checks")

#pragma GCC optimize(2)

相关发现

应用宝上架app审核多久时间呢?
bat365在线登录官网

应用宝上架app审核多久时间呢?

🌼 07-10 🌻 6690
手机屏边缘开胶怎么办 手机屏幕为啥会开胶
bat365在线登录官网

手机屏边缘开胶怎么办 手机屏幕为啥会开胶

🌼 07-03 🌻 4390
永恒纪元龙骑士PK怎么样 龙骑士强不强
365提款限制

永恒纪元龙骑士PK怎么样 龙骑士强不强

🌼 07-10 🌻 5003
北方十月去哪里旅游好
365提款限制

北方十月去哪里旅游好

🌼 07-09 🌻 6517