与OI无关(此人菜的一批 + 当个乐子看就行)
  • 板块灌水区
  • 楼主HypixelSkyblock
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/30 19:57
  • 上次更新2024/5/30 20:00:44
查看原帖
与OI无关(此人菜的一批 + 当个乐子看就行)
983008
HypixelSkyblock楼主2024/5/30 19:57

不要这么干。No.

rt,我突发奇想,想试一试快读快写的极限是什么。

然后我改了改别的大佬的快读快写,让AI写了readInt,readLong,readDouble.

record (a+b) https://www.luogu.com.cn/record/160748393

但貌似有点问题,总之快就行了((

#include <cstdio>
#include <cstring>
#include <string>

namespace FastIO {
    const int BUF_SIZE = 1 << 20; // 1MB

    
    char input_buf[BUF_SIZE];
    int input_pos = 0, input_len = 0;

    
    char output_buf[BUF_SIZE];
    int output_pos = 0;

    
    inline int readInt() {
        while (input_pos == input_len) {
            input_len = fread(input_buf, 1, BUF_SIZE, stdin);
            input_pos = 0;
        }
        while (input_buf[input_pos] < '0' || input_buf[input_pos] > '9') {
            if (++input_pos == input_len) {
                input_len = fread(input_buf, 1, BUF_SIZE, stdin);
                input_pos = 0;
            }
        }
        int x = 0;
        while (input_buf[input_pos] >= '0' && input_buf[input_pos] <= '9') {
            x = x * 10 + (input_buf[input_pos] - '0');
            if (++input_pos == input_len) {
                input_len = fread(input_buf, 1, BUF_SIZE, stdin);
                input_pos = 0;
            }
        }
        return x;
    }

    
    inline void writeInt(int x) {
        if (x == 0) {
            output_buf[output_pos++] = '0';
            if (output_pos == BUF_SIZE) {
                fwrite(output_buf, 1, BUF_SIZE, stdout);
                output_pos = 0;
            }
            return;
        }
        char buf[10];
        int i = 0;
        if (x < 0) {
            output_buf[output_pos++] = '-';
            if (output_pos == BUF_SIZE) {
                fwrite(output_buf, 1, BUF_SIZE, stdout);
                output_pos = 0;
            }
            x = -x;
        }
        while (x > 0) {
            buf[i++] = (x % 10) + '0';
            x /= 10;
        }
        while (i--) {
            output_buf[output_pos++] = buf[i];
            if (output_pos == BUF_SIZE) {
                fwrite(output_buf, 1, BUF_SIZE, stdout);
                output_pos = 0;
            }
        }
    }

    
    inline void writeLongLong(long long x) {
        if (x == 0) {
            output_buf[output_pos++] = '0';
            if (output_pos == BUF_SIZE) {
                fwrite(output_buf, 1, BUF_SIZE, stdout);
                output_pos = 0;
            }
            return;
        }
        char buf[20];
        int i = 0;
        if (x < 0) {
            output_buf[output_pos++] = '-';
            if (output_pos == BUF_SIZE) {
                fwrite(output_buf, 1, BUF_SIZE, stdout);
                output_pos = 0;
            }
            x = -x;
        }
        while (x > 0) {
            buf[i++] = (x % 10) + '0';
            x /= 10;
        }
        while (i--) {
            output_buf[output_pos++] = buf[i];
            if (output_pos == BUF_SIZE) {
                fwrite(output_buf, 1, BUF_SIZE, stdout);
                output_pos = 0;
            }
        }
    }

    
    inline void writeDouble(double x) {
        char buf[32];
        sprintf(buf, "%.6f", x); 
        for (char* p = buf; *p; ++p) {
            output_buf[output_pos++] = *p;
            if (output_pos == BUF_SIZE) {
                fwrite(output_buf, 1, BUF_SIZE, stdout);
                output_pos = 0;
            }
        }
    }

    
    inline void writeString(const std::string& s) {
        for (char c : s) {
            output_buf[output_pos++] = c;
            if (output_pos == BUF_SIZE) {
                fwrite(output_buf, 1, BUF_SIZE, stdout);
                output_pos = 0;
            }
        }
    }

    
    void flushOutput() {
        fwrite(output_buf, 1, output_pos, stdout);
    }

    
    class FastOutput {
    public:
        FastOutput& operator<<(int x) {
            writeInt(x);
            return *this;
        }
        
        FastOutput& operator<<(long long x) {
            writeLongLong(x);
            return *this;
        }

        FastOutput& operator<<(double x) {
            writeDouble(x);
            return *this;
        }

        FastOutput& operator<<(const std::string& s) {
            writeString(s);
            return *this;
        }

        FastOutput& operator<<(const char* s) {
            while (*s) {
                output_buf[output_pos++] = *s++;
                if (output_pos == BUF_SIZE) {
                    fwrite(output_buf, 1, BUF_SIZE, stdout);
                    output_pos = 0;
                }
            }
            return *this;
        }

        FastOutput& operator<<(char c) {
            output_buf[output_pos++] = c;
            if (output_pos == BUF_SIZE) {
                fwrite(output_buf, 1, BUF_SIZE, stdout);
                output_pos = 0;
            }
            return *this;
        }

        ~FastOutput() {
            flushOutput();
        }
    };

    
    FastOutput fout;
}

int main() {
    using namespace FastIO;
    int a,b;
    a=readInt();
    b=readInt();
    fout << a + b;

    

    return 0;
}

有没有更快的方法读和写?这个压了3ms,不要用到做题中,这个东西就是用来玩的

太闲了想出来的,违规请回复

@suystar_bg wyy,zs
2024/5/30 19:57
加载中...