大江东去,浪淘尽,千古风流人物。故垒西边,人道是,三国周郎赤壁。乱石穿空,惊涛拍岸,卷起千堆雪。江山如画,一时多少豪杰。遥想公瑾当年,小乔初嫁了,雄姿英发。羽扇纶巾,谈笑间,樯橹灰飞烟灭。故国神游,多情应笑我,早生华发。人生如梦,一尊还酹江月。

学习笔记

2019.1.25:

1.慎用getchar和scanf("%c"),这两个都会读回车和空格,用cin或者scanf("%s")会更好

2.处理环形问题,将数组开大一倍,令a[i+n]=a[i],就能实现循环的问题。

3.计算只包含加法,减法和乘法的整数表达式除以正整数n的余数,可以在每步计算后对n取余,结果不变。[由该结论可得出已知n%mx,可得(n*10+k)%m(x*10+k)%m]

2019.1.28

1.memset各类型的极大极小值

2.多组数据的情况下强烈建议用vector存图

2019.2.4

1.当一道题顺着题意不好做时,我们可以考虑正难则反的思路。

2.枚举题往往需要通过分析问题来简化问题,从而缩小枚举的范围,优化枚举的时间复杂度。

3.二分的标志通常是最大值最小获最小值最大,但判断是否真的要用二分应判断题目时是否满足某个单调的性质。在较高难度的题目中有时需要二分结合其他算法来解题。

2019.2.7

1.求树的直径的方法:
(1)Bfs(以任意一个点为起点找一条最长路,再以最长路的终点为起点再找一条最长路,该路径即为树的直径) 【只适用于无负权的图】

(2)树形DP。【适用于带负权的图】

2019.2.8

1.Dijkstra时间复杂度O(n^2)/O(mlogn)

2019.2.15
  1. 在没有用到递归的函数中,我们当然可以在函数内创建队列或栈,但在tarjan缩点的算法中,栈必须开在外面,容易出错(P3627 [APIO2009]抢掠计划)
2019.2.17
  1. 不仔细读题你会死的很惨的
2019.2.21
  1. 最好不要在aray数组里再开数组,可能会Re
2019.3.10
  1. 注意去掉输出的中间结果
  2. 做题时最好手动模拟过一遍样例,防止误解题意,排除掉错误的算法
  3. 01背包中防止重复更新的两种方法,一种是倒序枚举,另一种是开一个辅助数组缓存更新后的值
2019.4.27
  1. 二项式定理:(a+b)n=an+[C(n,1)]a(n-1)*b+C(n,2)a(n-2)b2+……+C(n-1,n)ab(n-1)+b^n
  2. 通项T(k+1)=C(n,k)a(n-k)*bk
  3. 式中,C(n,i)表示从n个元素中任取i个的组合数=n!/(n-i)!i!
  4. 系数也可表示为杨辉三角
2019.7.11

01黑白染色中,所有的棋盘一定属于以下两种类型:

  1. 黑格的行和列奇偶性相同,白格不同
  2. 白格的行和列奇偶性相同,黑格不同

高阶数学笔记

  1. c++浮点数靠近0取整,如-1.5取整得-1
  2. 当1<=d<=n时,n/d不同的取值不超过2*sqrt(n)
  3. 当1<=d<=n时,n/d的和为严格nlogn,常数极小,可以跑过5e6的数据
  4. 不超过n的质数个数约等于n/ln(n)

推论:

  1. n附近的质数密度约为1/ln(n)
  2. 第n个质数约为n*ln(n)
  3. 若一个数有奇数个约数,则他是完全平方数

2019.7.16
  1. 线段树的懒标记,你当然是知道的,若只需维护区间和,常规操作就可以了,如果还要求最值的话,就要另行考虑了

    若懒标记是加减法,只需加减max/min标记
    若是取反,则max=-min,min=-max
    总之在维护懒标记的同时也要正确的维护其他所有标
    记,一个都不能漏,而且要具体情况具体考虑

2019.9.17
  1. static变量不能以type x=……的方式赋初值
2019.11.14

1.vector resize不能用来多次赋值!!切记!!!正确的写法是先clear再resize

posted @ 2019-08-20 11:14  White_star  阅读(176)  评论(0编辑  收藏  举报
}