输入挂与手动加栈

来源:互联网 发布:打赏危害网络直播 编辑:程序博客网 时间:2024/05/29 12:47

参考blog

http://www.cnblogs.com/xiaohongmao/archive/2012/05/29/2523760.html
G++防止TLE利用输入挂加速

整数

inline bool scan_d(int &num)  {        char in;bool IsN=false;        in=getchar();        if(in==EOF) return false;        while(in!='-'&&(in<'0'||in>'9')) in=getchar();        if(in=='-'){ IsN=true;num=0;}        else num=in-'0';        while(in=getchar(),in>='0'&&in<='9'){                num*=10,num+=in-'0';        }        if(IsN) num=-num;        return true;}

实数

inline bool scan_lf(double &num)  {        char in;double Dec=0.1;        bool IsN=false,IsD=false;        in=getchar();        if(in==EOF) return false;        while(in!='-'&&in!='.'&&(in<'0'||in>'9'))                in=getchar();        if(in=='-'){IsN=true;num=0;}        else if(in=='.'){IsD=true;num=0;}        else num=in-'0';        if(!IsD){                while(in=getchar(),in>='0'&&in<='9'){                        num*=10;num+=in-'0';}        }        if(in!='.'){                if(IsN) num=-num;                return true;        }else{                while(in=getchar(),in>='0'&&in<='9'){                        num+=Dec*(in-'0');Dec*=0.1;                }        }        if(IsN) num=-num;        return true;}

手动防止爆栈代码
C++

#pragma comment(linker, "/STACK:102400000,102400000")

G++

    int size = 256 << 20; // 256MB    char *p = (char*)malloc(size) + size;    __asm__("movl %0, %%esp\n" :: "r"(p));