随笔分类 - ACM SCL
摘要:Sprague-Grundy定理(SG定理):游戏和的SG函数等于各个游戏SG函数的Nim和。这样就可以将每一个子游戏分而治之,从而简化了问题。而Bouton定理就是Sprague-Grundy定理在Nim游戏中的直接应用,因为单堆的Nim游戏 SG函数满足 SG(x...
阅读全文
摘要://--------------------------------------------------------------namespace fastIO { #define BUF_SIZE 100000 //fread -> read bool IOerro...
阅读全文
摘要:用法:输入代表年月日的三个空格隔开的整数 ,输出该日期是星期几。如果日期不合法输出illegal。#includeusing namespace std;bool m[] = {false,true,false,true,false,true,false,true,...
阅读全文
摘要:Bash Game:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果...
阅读全文
摘要:ASCII控制字符二进制 十进制 十六进制 缩写 可以显示的表示法 名称/意义 0000 0000 0 00 NUL ␀ 空字符(Null) 0000 0001 1 01 SOH ␁ 标题开始 0000...
阅读全文
摘要:typedef struct Node* node;const int MAXNs = ;//模式串最大長度 const int MAXNS = ;//文章(待匹配串)最大長度 struct Node{ node next[26]; node fail;/...
阅读全文
摘要:定义:欧拉回路:每条边恰好只走一次,并能回到出发点的路径欧拉路径:经过每一条边一次,但是不要求回到起始点欧拉回路存在性的判定:无向图每个顶点的度数都是偶数,则存在欧拉回路。有向图每个节顶点的入度都等于出度,则存在欧拉回路。欧拉路径存在性的判定:有向图 : 图连通,当且...
阅读全文
摘要:const int MAXN = 1050;int N;int tree[MAXN][MAXN];int lowbit(int x){ return x&(-x);}void Add(int x,int y,int val){ for (i...
阅读全文
摘要:皮克定理: 皮克定理是一个计算点阵中顶点在格点上的多边形面积公式,该公式可以表示为2S=2a+b-2,其中a表示多边形内部的点数,b表示多边形边界上的点数,S表示多边形的面积。无名定理(分数小数互化,判断是否是有限小数或无限循环小数):一个分数如果它的分母是10^n(...
阅读全文
摘要:const int MAXN =1e3+10;const int INF = 0x3f3f3f3f;int mapp[MAXN][MAXN];int dis[MAXN];bool mark[MAXN];int num[MAXN];//用于检测负权环 int N;//点...
阅读全文
摘要:#include #include using namespace std;const int MAXN = 1e5+10;struct T{ int L,R;//分别指向左右子树 int sum;//该节点所管辖区间范围内数的个数 T(){ sum = 0; }}...
阅读全文
摘要:性质1:如果数a、b都能被c整除,那么它们的和(a+b)或差(a-b)也能被c整除。性质2:几个数相乘,如果其中有一个因数能被某一个数整除,那么它们的积也能被这个数整除。能被2整除的数,个位上的数能被2整除(偶数都能被2整除),那么这个数能被2整除能被3整除的数,各个...
阅读全文
摘要:const int MAXN = 205;bool board[MAXN][MAXN];//存边 int color[MAXN];//用于染色法判断是否是二分图 int N,M;//N个点M条边 bool Judge(int x){ for(int i=1 ; i<=...
阅读全文
摘要:const int MAXN = ;const int INF = 0x3f3f3f3f; struct Edge{ int flow,to,rev; Edge(){} Edge(int a,int b,int c):to(a),flow(b),rev(c){}}; ...
阅读全文
摘要:const int INF = 0x3f3f3f3f;const int MAXN = ; struct Edge{ int value,flow,to,rev; Edge(){} Edge(int a,int b,int c,int d):to(a),value(...
阅读全文
摘要:typedef struct Node* node;struct Node{ int val; int num; node Next[2]; Node() { val = num = 0; memset(Next,NULL,sizeof(Next)); }};vo...
阅读全文
摘要:char s[MAXN];typedef struct Node* node;struct Node{ int Num;//常见的是存数,具体的根据题更改 node Next[26]; Node() { Num = 0; memset(Next,NULL,siz...
阅读全文
摘要:方法:暴力复杂度:O(msqrt(m))步骤:按点的度数分成两类,分别暴力①统计每个点的度数②入度sqrt(m)的分为第二类③对于第一类,暴力每个点,然后暴力这个点的任意两条边,再判断这两条边的另一个端点是否连接因为m条边最多每条边遍历一次,然后暴力的点的入度 map...
阅读全文
摘要:无向连通图的DFS树中有两类节点可以成为割点:对根节点u,若其有两棵或两棵以上的子树,则该根结点u为割点;对非叶子节点u(非根节点),若其子树的节点均没有指向u的祖先节点的回边,说明删除u之后,根结点与u的子树的节点不再连通,则节点u为割点。const int MAX...
阅读全文
摘要:Prim 邻接矩阵版:#define INF 0x3f3f3f3fconst int MAXN = 105;int N;int map[MAXN][MAXN];bool book[MAXN];//true为已经加入树的,false则相反 int lenth[MAXN]...
阅读全文