错误总结
nxt_permutation · · 个人记录
前言:自2020.08.05日记起,灵感来源于cdcq大佬处
#
-
Pinely round -C 一个集合i不被其他包含,可以考虑将元素i放入这个集合中,若无从属关系则一定不会相互包含;如果有从属关系则将集合中的所有元素放入包含他的集合中即可!(并且保证集合非空,若正难则反则此步难以实现!!)
-
一个图在MST上没有横叉边,仅有返祖边,则要寻找符合要求的点则必在返祖边的一条链上(非返祖边)(CF808C)
-
树剖需要建立dfn数组
-
堆优dij别忘了开vis数组
1.不开long long见祖宗;(P3178)
2.少看了个\sum ,导致把题目想的很难;(某次CFdiv3E1)
3.注意算的时候不要超long long(某某oiRound3 C调了一小时)
4.注意完全背包问题可以选0个,所以循环从0开始循环
for(int i=1;i<=n;i++)
for(int j=0;j<=m;j++)
for(int k=m;k>=j;k--)
dp[i][k]=max(dp[i][k],dp[i-1][k-j]+maze[i][j]);
5.注意题目是否需要字典序输出结果
6.BFS时没有memset(vis,0,sizeof(vis))导致调了许久(某三维BFS)
7.每个点只要访问一次,dij堆优时应该有vis(会TLEP4779)
8.kruskal跑完建边时起点和终点都用它们的父亲节点连边;(P1967)
9.LCA:X与Y一起往上跳时限制条件为fa[x][i]!=fa[y][i]而不是d[fa[x][i]]!=d[fa[y][i]] (P1967)
10.LCA:x与y同时跳时x=fa[x][i],y=fa[y][i],不要写错:y=fa[x][i](P2680调了2小时QAQ)
11.注意想要模的数和输入的数是否相同,用的是p还是mod(P3384树剖模板)
12.d[top[x]]>d[top[y]]时往上跳,而非dfn[top[x]]>dfn[top[y]](P3384树剖模板)
13.设重儿子时设成了siz[v],应该是v(P2590)
14.线段树修改时别忘了pushup(P2590)
15.树链剖分修改时用dfn去修改,而不是直接拿点去修改(P2590)
16.线段树二叉往右时rt坐标不要和往左时一样了!!(P2590)
17.树链剖分查询时top[u]与top[v]交换原则非dfn[top[u]]<dfn[top[v]],是d[top[u]]<d[top[v]](P2590)
18.树链剖分查询时u与v在一条重链上时u与v交换原则非u>v,是dfn[u]>dfn[v](P2590)
19.状压答案是dp[(1<<n)-1]而不是dp[1<<n] (P3052)
20.重链修改是fa[top[x]]而不是fa[top[dfn[x]]](P3178)
21.不要把数组开小了!!!(P3178 AC,WA,RE,TLE,OLE,MLE的原因/^\)
22.用priority_queue时注意将vector写在前面,greater写在后面,不要写反了!!!
23-1.注意检查输入如果int用scanf("%lld",&n) 输入的话定为语法错误,洛谷上与本地会没有问题,然而Linux上可能出现问题!!(NOIP2020T1惨痛的教训/某CF DIV2崩盘原因)
23-2 同理,long long也不能用scanf("%d",&n) 输入了,考试时要仔细检查!!(P3833)
24.注意题目时间与空间要求,不要数组开爆变成MLE了!(P3796)
25.dinic每次bfs前别忘了memset(dep,0,sizeof(dep)) !(P3376)
26.dinic用链式前向星时tot初始值设为-1!(P3376)
27.使用hash&map时a*n+k 中的常数a尽量调大些,不要调成N ,至少到10*N 及以上(USACO 2021JAN1)
28.dinic做弧优化的时候是for(int& i=cur [u];i!=-1;i=e[i].nxt),不要写成for(int& i=p [u];i!=-1;i=e[i].nxt)(P2740)
29.Splaying时判断往左往右的条件是将spl[x].val与spl[y/l/r].val对比,不是将x与spl[y].val对比(P6136)
30.Splay进行del时若spl[now].val==val时要break,否则会死循环(P6136)
31.注意将a=a-b-c时代码:a-=b+c,而不是a-=b-c(a-b+c)!!(P6136)
32.dinic循环dfs时下一次转换的点是v不要又写成u导致死循环了(dfs(v,min(e[i].w,lim)))(P3386/P2756)
33.区间DP枚举长度时注意范围是"<=数组的长度"还是"<数组的长度"(UVA1437)
34.期望推柿子时注意A^0=1而不是A...(P1291)
35.栈等数据结构求前缀和最大值时别忘了把初始值都设为-inf,否则有负数的情况下就会出错(P2201)
36.费用流dinic中SPFA时判断价值时vis条件要写在if里面,和d数组并排更新(P3381)
37.SPFA更新d数组时是用e[i].c更新,不是e[i].w;(P3381)
38.注意!vis[i]是没有遍历到的标志;(P3701)
39.莫队分块时注意块是q[i].l/len,不是i/len,否则等于没有分块(P2709)
40.莫队输出答案时注意是ans[i],不是ans[q[i].ord]了,注意回答的还原(P1494)
41. 注意写代码时不能写a<=b<=c,要写成a<=b&&b<=c(2021愚人节)
42. 云剪贴板,改文件后缀名,注意时间限制空间限制
43.float数据范围仅到1e7,若用浮点数尽量用double;(ABC207 C)
44.状压DP判断第i位是否为1:(1<<i)&a!=0,而不是(1<<i)&a==1,也不是(1<<i)|a!=0(P1879)
45.注意符合行阵要求的炮兵情况(ok数组)要在每一行时实时更新,不要漏了这一句话(P2704 状压DP)
46.用链式前向星时函数文件名用void,不用int,否则会TLE(P3478)
47.LCA循环时把次方层放在外面,否则更新的所有的2^1次方级的父亲都是1!!!(P3258)
for(int i=1;(1<<i)<=n;i++)
for(int j=1;j<=n;j++)
fa[j][i]=fa[fa[j][i-1]][i-1];