zoukankan      html  css  js  c++  java
  • 输入输出优化(黑科技)

    正常版,输入输出优化比较正常,无论是scanf/printf/cin/cout都可以混用

    用法:int x=gi; pint(x); 类似这样。

    #define gc getchar()
    int g_i()
    {
        int tmp=0; bool fu=0; char s;
        while(s=gc,s!='-'&&(s<'0'||s>'9')) ;
        if(s=='-') fu=1; else tmp=s-'0';
        while(s=gc,s>='0'&&s<='9') tmp=tmp*10+s-'0';
        if(fu) return -tmp; else return tmp;
    }
    #define gi g_i()
    #define pob
    #define pc(x) putchar(x)
    namespace ib {char b[100];}
    inline void pint(int x)
    {
        if(x==0) {pc(48); return;}
        if(x<0) {pc('-'); x=-x;}
        char *s=ib::b;
        while(x) *(++s)=x%10, x/=10;
        while(s!=ib::b) pc((*(s--))+48);
    }

    丧病版,输入优化采用fgets,不能与cin/scanf混用,如果需要读入其他类型可能需要手写。

    输出优化的行为有一些奇怪,它会把输出缓存到一定数量之后一起输出,可以用pob把缓存中的字符输出,调试时可能需要注意一下(比如多个询问的题目答案可能会在最后一起输出)

    用法也是:int x=gi; pint(x); 如果需要把缓存中的内容输出清空就用pob;

    输入输出缓存大小可以用BUFSIZE这个宏来控制。

    #define BUFSIZE 300000
    namespace fib {char b[BUFSIZE]={},*f=b;}
    #define gc ((*fib::f)?(*(fib::f++)):(fgets(fib::b,sizeof(fib::b),stdin)?(fib::f=fib::b,*(fib::f++)):-1))
    int g_i()
    {
        int tmp=0; bool fu=0; char s;
        while(s=gc,s!='-'&&(s<'0'||s>'9')) ;
        if(s=='-') fu=1; else tmp=s-'0';
        while(s=gc,s>='0'&&s<='9') tmp=tmp*10+s-'0';
        if(fu) return -tmp; else return tmp;
    }
    #define gi g_i()
    namespace fob {char b[BUFSIZE]={},*f=b,*g=b+BUFSIZE-2;}
    #define pob (fwrite(fob::b,sizeof(char),fob::f-fob::b,stdout),fob::f=fob::b,0)
    #define pc(x) (*(fob::f++)=(x),(fob::f==fob::g)?pob:0)
    struct foce {~foce() {pob; fflush(stdout);}} _foce;
    namespace ib {char b[100];}
    inline void pint(int x)
    {
        if(x==0) {pc(48); return;}
        if(x<0) {pc('-'); x=-x;}
        char *s=ib::b;
        while(x) *(++s)=x%10, x/=10;
        while(s!=ib::b) pc((*(s--))+48);
    }

    在许多oj上都交过,正确性应该没什么问题。

  • 相关阅读:
    c# mvc action 跳转方式
    where T : new() 的含义
    HTML5 Dataset data-属性
    EF6 教程
    C写的AES(ECB/PKCS5Padding)
    【转载】openwrt: Makefile 框架分析
    SCP 命令【转】
    HTTP协议详解(转载)
    bootstrap模板
    拖拽插件
  • 原文地址:https://www.cnblogs.com/zzqsblog/p/5564621.html
Copyright © 2011-2022 走看看