[]記錄容易出錯的地方和一些知識

//一个电脑美化资源网站:https://zhutix.com/

//LaTeX用法:http://www.mohu.org/info/symbols/symbols.htm

//作文素材:m.zwsc8.com

//图论画图网站:https://csacademy.com/app/graph_editor/

1.最大公约数和最小公倍数的乘积就是原两个数的积(別說我菜了)

2.一个数被 11 整除的充要条件是:这个数奇数位上数字和 − 偶数位上数字和被 11 整除

3.pipe是linux关键字

4.if else嵌套一定要写else if

5.语句不要写在break后面

6.scanf("%c",&opt);會出錯,用scanf的話最好用opt[2]

7.欧几里得距离:dis=sqrt( (x1*x2) + (y1*y2) )

曼哈顿距离:dis=abs(x1-x2)+abs(y1-y2)

切比雪夫距离:dis=max( abs(x1-x2) , abs(y1-y2) )

切比雪夫距离和曼哈顿距离的转化:曼哈顿(x,y)<=>切比雪夫((x+y)/2,(x-y)/2)

8.做乘法的時候可能需要轉long long

9.dfs序:https://blog.csdn.net/qq_39670434/article/details/78425125

10.组合数学求方案数時常常拿所有方案減去不可行方案

11.康托展开公式:X=a[n]*(n-1)! +a[n-1]*(n-2)!+....+a[1] * 0!

12.100023323 100021121两个质数

13.组合数:C(n,m)=C(n,n-m)

      C(n,m)=C(n-1,m)+C(n-1,m-1) (杨辉三角)

      C(n,0)+C(n,1)+.......+C(n,n)=2^n

14.prufer序列相关:https://blog.csdn.net/morejarphone/article/details/50677172

           http://www.cnblogs.com/dirge/p/5503289.html'

17.凡是11111..... 22222..... 33333.....之类的序列都可用这个式子来表示:k*(10^x-1)/9

18.乘法取模爆longlong要写快速乘

19.对于点(a,b) (x,y)连成的线段而言(其中a>x,b>y), 在它们中间有gcd(a-x,b-x)-1个整点

当选定(0,0)为起点时,和终点(i,j)所形成的向量上就会有gcd(i,j)个整数点

20.盒子放小球问题:http://www.cnblogs.com/sdfzsyq/p/9838857.html

21.从左下角走到n*m矩阵的右上角,方案数是C(n+m,n(或m)),把向上和向右看作一个序列,从中选择向上走m次/向右走n次的方案数

22.位运算请加括号

23.STL中sort原理:https://www.cnblogs.com/fengcc/p/5256337.html

24.博弈论:https://www.cnblogs.com/nanjoqin/p/10211576.html

25.手写栈:

在竞赛中如果系统栈很小的话,过深的递归会让栈溢出,这个时候我们就要自己手写栈,将递归转化成手工栈。
方法其实也很简单。
基本思路上,我们就是用栈不断的pop,push。但是何时push,何时pop呢?
在《算法导论》上对深度优先遍历树的讲解中,在深度遍历中,会对每个节点进行染色,白色为没有被访问过;灰色为被访问过,但是该节点的所有子树还没有完成访问;黑色,节点被访问过,而且该节点的所有子树都被完全的访问。
所以,我们就通过颜色标记来进行判断了。
整体的框架如下:

memset(vis,0,sizeof(vis));
stack S;
S.push(root)
while(!S.empty()){
    int u = S.top();
    if(vis[u] == 1)// if node is gray, then color black
    {
        vis[u] = 2;
        // do things after dfs children.
        S.pop();
    }
    else if(vis[u] == 0)// if node is white, then color gray
    {
        vis[u] = 1;
        // do things before dfs children.
        for all children v
            S.push(v);
    }
}
---------------------
原文:https://blog.csdn.net/u012139398/article/details/44300475
26:绝对值可以去掉分类讨论

27.二分写法

1.最小值最大化

复制代码
int l = min_ans, r = max_ans;
while (l < r) {
    int mid = (l + r + 1) / 2;   //+1避免 r == l + 1 时mid一直等于l,从而死循环
    if (ok(mid))    //符合条件返回True
        l = mid;
    else
        r = mid - 1;
}
复制代码

2.最大值最小化

1 int l = min_ans, r = max_ans;
2 while (l < r) {
3     int mid = (l + r) / 2;
4     if (ok(mid))    //符合条件返回True
5         r = mid;
6     else
7         l = mid + 1;
8 }

2019-10-6:

各种题目要注意有没有无解情况注意判没有

快速幂特判指数为0时返回1

2019-10-11

a|b - a&b 竟然是 a^b !!!

2019-10-15

最短路的必经边如何求?我们统计S到T的最短路条数,如果一条边cnt[S][u]*cnt[v][T]=cnt[S][T],那么这条边就是必经边。

 

你可能感兴趣的:([]記錄容易出錯的地方和一些知識)