错贴本
字符串
- 
哈希进制搞质数
 - 
KMP 数组别开太大,否则 \({\color{Gold}{TLE}}\)
 - 
没有必要 \(strlen\) 的时候尽量别用
 - 
\(base\) 过大跑的慢
 
\(SPFA\)(2021/1/31)
- 
return 0别放循环里面 - 
边表是注意数据类型特别是
double!!! - 
循环里尽量不要设变量去代替边表,类型会出错
 - 
多用
scanf少用cin - 
多组数据 边表
head别忘清零 
二分
- 
实数二分别
+1

 - 
有关
double转int的错误 
  cout<<a<<endl;
  printf("%.f\n",a);
  int s=(int)a;
  cout<<s;
三者是完全不同的,第一个是按照double随机小数位输出,第二个是四舍五入输出答案容易出错,第三个是强制类型转换,直接输出整数部分,建议最好用这个,cao,又废了我一下午2/17
差分约束(2021/2/1)
- 
个人感觉跑最短路好些
 - 
>0就为1,>=0为0 - 
跑 \(SPFA\) 时,判断是否联通尽量将边界开大些 例如
1e8, 最短路如果不连通会跑无数次inf. 
\(tarjan\)(强连通分量)
- 
void类型 \(tarjan\), 别定义错了 - 
一晚上的血教训,不要用边表了,用 \(vector\) 吧!!!!!!!!,TMD卡了四个题,全是 \(TLE\).



 - 
if(d[i] == 1) != if(d[i])前者只有一, 后者不是零的都记录,哎~又是一晚上----2/3 
\(tarjan\) (桥和割点)
- 
根节点要求孩子多于两个才可,非不为就行!!!
if(child >= 2 && u == fa) cut[u] = 1;//child >= 2!!! 不是 != 0 - 
根节点和非根节点的处理要注意
 
if(low[v] >= dfn[u] && u != fa) cut[u] = 1;// 保证不是根节点 
      if(fa == u) child++;// u == fa 才记录孩子 
DP
- 
无输出:循环节
j--写成j++P1049 [NOIP2001 普及组] 装箱问题 - 
背包DP,\(n\) 和 \(m\) 不要搞反了
 - 
状态有时并非需要精确表示,如果可以通过某种方式简化位置,但却可以在使用时正确表示位置的话,那么这种答案会更优,这也就是精简式子
 - 
注/ 式子的化简可以通过化简来的得到,如这里的代换就是令 \(k\) 为 \(j-k\) 只要范围不变,他们就是等价的,原因是便于式子的化简!(式子的优美)
 - 
状压DP位运算错误
 
//cin
1<<3-1
(1<<3)-1
//cout
4
7
//so
//左移小于负号
KSM
x*=x%k无法完成必须拆开x*=x; x%=k,写错挂七个点
邻接表
- 邻接表开小居然是MLE??-->这个题
 
数组的大小
- 开的数据范围不要太大--这个题
 
2.数据范围不要开小了,f开小了
有关 \(memset\) 的赋值
1.memset(a,x,sizeof(a) 中赋值只取 \(x\) 的后四位,也就是说 0x7fffffff 赋值就是 ffff,也就是 -1,这样你的费用流就更加优美了
                    
                
                
            
        
浙公网安备 33010602011771号