一些奇怪的东西以及寄几需要注意的地方

死都不要用inline,这个东西可以毒死人。
long long不能乱开,乱开会导致玄学错误。
宏定义的时候一定要注意位运算的优先级非常的低
个人代码的风格如下:大括号之前需要空一格,读入用取地址的,if后空格,括号两段不空格,中间都空格,计算符号两边空格。
封装是一个好东西,但是要注意传参不能出锅。
千万不要用o变量,少用l变量,这个两个东西和01傻傻分不清楚。
能用重载定义运算符的函数,就重载运算符。


洛谷神贴:【传送门】
图论在线画图必备工具:【传送门】
洛谷管理员全体名单:【传送门】
bzoj1000~4999的数据下载:【传送门】
加密网站:【传送门】
POJ大全:【传送门】
OIERDB:【传送门】
免费wordpdf【传送门】
转换万能工具:【传送门】
OI WIKI:【传送门】


普通的快读

template <typename T>
inline void read(T &x) {
    x = 0; T fl = 1;
    char ch = 0;
    while (ch < '0' || ch > '9') {
        if (ch == '-') fl = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9') {
        x = (x << 1) + (x << 3) + (ch ^ 48);
        ch = getchar();
    }
    x *= fl;
}

cin和cout的崛起,这个代码不是我码的(明显不是我的码风)

class istream{
    char buf[15000003],*s;
    public:
        inline istream(){
            buf[fread(s=buf,1,15000001,stdin)]='\n';
            fclose(stdin);
        }
        template<typename T>
        inline istream&operator>>(T&rhs){
            for(rhs=0;!isdigit(*s);++s);
            while(isdigit(*s))rhs=rhs*10+(*s++&15);
            return*this;
        }
}cin;
struct ostream{
    char buf[8000005],*s;
    inline ostream(){s=buf;}
    inline void operator<<(long long d){
        if(!d){
            *s++='0';
        }else{
            static long long w;
            for(w=1;w<=d;w*=10);
            for(;w/=10;d%=w)*s++=d/w^'0';
        }
        *s++='\n';
    }
    inline ostream&operator<<(const char&c){*s++=c;return*this;}
    inline~ostream(){fwrite(buf,1,s-buf,stdout);}
}cout;

一般自己不会失忆,但是还是写一下手动开O(2)和O(3)

#pragma GCC optimize(2)
#pragma GCC optimize(3)

优化开关全开

%:pragma GCC optimize(3)
%: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")

板子(持续更新)

#include <bits/stdc++.h>
using namespace std;
namespace IOstream {
    #define gc getchar
    template <typename T> 
    inline void read(T &x) {
        x = 0; T fl = 1; char c = 0; 
        for (; c < '0' || c > '9'; c = gc()) 
            if (c == '-') fl = -1;
        for (; c >= '0' && c <= '9'; c = gc()) 
            x = (x << 1) + (x << 3) + (c ^ 48);
        x *= fl;
    }
} using namespace IOstream; 
int main() {
    
    return 0;
}
posted @ 2019-03-20 22:05 chhokmah 阅读(...) 评论(...) 编辑 收藏