优化
咳咳,在洛谷,必不可少的是——卡常技巧
然后,作为洛谷的萌新懒癌晚期患者,对于某些TLE的题目,总会来一些优化
eg1:手动吸氧
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast","-funroll-loops","-fdelete-null-pointer-checks")
#pragma GCC target("ssse3","sse3","sse2","sse","avx2","avx")
我也不知道为什么这样写,我只知道很有用
然后,就是
eg2:
inline int qwq(puts("qwq"));
for(register int i=1;i<=n;++i) cnt++;
就比
int qwq(puts("qwq"));
for(int i=1;i<=n;++i) cnt++;
快
eg3:
直接给代码(不给std::cin,std::cout,scanf,printf的)
//快读:
inline int read()
{
register int x=0,f=1;register char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return x*f;
}
//快输
inline void output(int x) {if(x/10) output(x/10);putchar(x%10+'0');}
//手打cin
struct istream{
char buf[23333333],*s;
inline istream(){
buf[fread(s=buf,1,23333330,stdin)]='\n';
fclose(stdin);
}
inline istream&operator>>(int&d){
d=0;
for(;!isdigit(*s);++s);
while(isdigit(*s))
d=(d<<3)+(d<<1)+(*s++^'0');
return*this;
}
}cin;
//手打cout
struct ostream{
char buf[8000005],*s;
inline ostream(){s=buf;}
inline ostream&operator<<(int d){
if(!d){
*s++='0';
}else{
static int w;
for(w=1;w<=d;w*=10);
for(;w/=10;d%=w)*s++=d/w^'0';
}
return*this;
}
inline ostream&operator<<(const char&c){*s++=c;return*this;}
inline void flush(){
fwrite(buf,1,s-buf,stdout);
s=buf;
}
inline~ostream(){flush();}
}cout;
其原理:(效率)putchar(getchar)>puts(putchar)>printf(scanf)>cout(cin)
我谔谔
告一段落吧