PART1
1.实现:
a.如果一个代码每次使用都有提前的步骤,就把他们写成一个UseFunction函数
b.常用的东西就应该写成define(包括类型,因为如此万一要更改就很方便),写成define的有
1)写起来觉得麻烦的
2)用的次数很多的(1怕写错,2方便修改)
2.时间复杂度:
3.特别优势:
4.适用情况:
5.需要注意的点:
#define时候能打括号的式子要打括号,否则容易出事
要注意是无向图还是有向图
注意有无边权
不同情况公有的代码最好都写写,最后再合并整合
写代码逻辑关系是真的特别容易错.....
结构体名字用全大写,除了node
不常见的临时变量前面全部要加tmp
变量在写模板的时候能写在里面就写在函数里面,倒是可能因此出错,但是方便看和不用每次都来init罢了
要妥善处理好每个模板init的问题
所有的int的东西都要long long来一份
PART2
#include<cstdio> #include<cmath> #include<algorithm> #include<set> #include<map> #include<cstring> #include<string> #include<vector> #include<queue> #include<iomanip> #include<iostream> #include<stack> using namespace std; const int maxN_ = 1e2+10; const int maxM_ = 1e4+10; ///---------------常用规定部分 #define valueType_ int//valueType(1~1e19) #define inf_ 0x3f3f3f3f//这是给int的inf,值为1061109567,2^31-1为2147483647 #define reg_ register int #define for_(i, n) for(int i = 1; i <= n; i++) #define forReg_(i, n) for(reg_ i = 1; i <= n; i++) #define ll_ long long #define ull_ unsigned long long ///---------------通用函数 inline valueType_ Read() { valueType_ x=0; char c=getchar(); while(c<'0'||c>'9') c=getchar(); while(c>='0'&&c<='9') { x=(x<<1)+(x<<3)+c-'0'; c=getchar(); } return x; } ///---------------建图 #define visitEdge_ int i = p[u]; ~i; i = e[i].next #define defineV_ int v = e[i].v #define defineVAvoidFa_ int v = e[i].v;if(v == fa) continue struct edge { int u, v, next; valueType_ w; } e[maxN_]; int p[maxN_], eid; inline void InitEdge() { memset(p, -1, sizeof(p)); eid = 0; } inline void Insert(int u, int v, valueType_ w = 0) { e[eid].next = p[u]; e[eid].u = u; e[eid].v = v; e[eid].w = w; p[u] = eid++; } ///-------------- int main() { //freopen("in.txt","r", stdin); //freopen("out.txt","w", stdout); ios::sync_with_stdio(false); //InitEdge(); return 0; }
#include<cstdio> #include<cmath> #include<algorithm> #include<set> #include<map> #include<cstring> #include<string> #include<vector> #include<queue> #include<iomanip> #include<iostream> #include<stack> using namespace std; /**这种双**的是给写文格式的说明,和代码内容无关**/ ///---------------------------------------------------这样的线是分割线 ///----------------------------------------------------常用规定部分:都采用 小写字母 加 _ 的方式 //----------------------通用 #define inf_ 0x3f3f3f3f//这是给int的inf,值为1061109567,2^31-1为2147483647 #define reg_ register int #define for_reg(i, n) for(reg_ i = 1; i <= n; i++) #define ll_ long long #define ull_ unsigned long long //----------------------边访问 #define visit_edge int i = p[u]; ~i; i = e[i].next #define define_v int v = e[i].v #define define_v_avoid_f int v = e[i].v;if(v == fa) continue //----------------------线段树 #define mid_ int mid = (l+r)>>1//mid的定义 #define len_ (r-l+1)/**像这样的式子千万要打括号,要不然就完了**/ #define l_id id<<1 #define r_id id<<1|1 #define l_son id<<1,l,mid #define r_son id<<1|1,mid+1,r #define include_(x,y,l,r) x<=l && r<=y //----------------------其它 const int max_n = 1e2+10; const int max_m = 1e4+10; ///-------------------------------------------------------变量声明部分:全局变量除第一个单词外其它单词首字母大写+结尾加一个g(global variable) //-------------------------------------与边相关 struct edge { int u, v, next, w; } e[max_m]; int p[max_n], eid; //--------------------------------------其它 ///--------------------------------------------------------函数声明部分:函数的单词首字母大写,常用局部变量简化 inline int Read(); //--------------------------------------与边相关 inline void InitEdge(); inline void Insert(int u, int v, int w = 0); //--------------------------------------其它 ///--------------------------------------------------------main函数部分 int main() { //freopen("in.txt","r", stdin); //freopen("out.txt","w", stdout); ios::sync_with_stdio(false); InitEdge(); return 0; } ///--------------------------------------------------------函数定义部分 /** 按照这个来給函数定义注释 //功能: //参数: //返回值: **/ inline int Read() { int x=0; char c=getchar(); while(c<'0'||c>'9') c=getchar(); while(c>='0'&&c<='9') { x=(x<<1)+(x<<3)+c-'0'; c=getchar(); } return x; } ///-----------------------------------建图 inline void InitEdge() { memset(p, -1, sizeof(p)); eid = 0; } inline void Insert(int u, int v, int w) { e[eid].next = p[u]; e[eid].u = u; e[eid].v = v; e[eid].w = w; p[u] = eid++; } ///----------------------------------其它
PART3
PART4
PART5