菜谱
已经懒得更新了吗?!
只是经常忘了写这玩意而已...
写日期会有自己写了很多有用的东西的错觉
2022.4.12
事实证明只要是相差一个字母左右的变量我都容易打错,比如刚犯的
rt -> ret
2022.4.11
线段树乘法懒标记这么写:
void down(int x){
if(t[x].mul != 1){
calc(lc,t[x].mul);
calc(rc,t[x].mul);
t[x].mul = 1;
}
}
一般来说不会出问题,但是 \(mul\) 变成 0 就寄了。 /qd
当一行代码很长就容易...
mge(,...,...,...,(...+...%MOD),...);
2022.4.10
重剖:
if(!son[x] || siz[v] > siz[son[x]]) v = son[x];
T成傻子了。
2022.4.7
整体二分记得没有要二分的对象时要往数据结构里面插了东西再 return.
2022.4.4
函数没有返回值*n。
2022.3.29
但凡带个脑子也知道动态开点带的log是权值而不是n。
2022.3.28
但凡带个脑子也知道mex不用离散化。
事实证明结构体版线段树和多个数组线段树五五开。
全体起立
2022.3.18
T1 复杂度算错。
T2 手残打错字母。
2022.3.14
(1ll << i+1-j) * dp[...][...]
经典爆 long long
。
2022.3.12
写了 Build
不调用,写了重载不 sort。
2022.1.22~1.25
总之这几天疯狂不取模,人已经晕了。
2021.11.18
离谱auto,在不加&
的情况下会拷贝一份再访问,容易上天(人和代码)。
2021.11.16
概率dp数组int
是什么成分啊?
记忆化搜索的时候改了状态值:
u = ...;
mem[u][v] = ...;
return mem[u][v];
2021.11.15
取整之后不满足单调性。
2021.11.13
我以为的样例:
input:
6
1 2 3 4 5 6
output:
6
实际上的样例:
input:
5
1 2 3 4 5
output:
6
然后我就对着一份AC代码虚空调试了 \(1\) 个小时,红红火火恍恍惚惚。
2021.11.11
哦,set迭代器移动是 \(\log\) 的,全部访问是 \(O(n)\),类似于遍历一棵树。
李超树查询要走到没有线段为止,求值的时候要判断是否有线段,因为有点不代表有线段。
2021.11.2
超级稀疏矩阵求行列式用高斯消元可以当成 \(O(n^2)\) 的,要有梦想,把数组开到这么大!
2021.11.1
ans = (ans + 1ll * a[x] * a[x] % MOD);
懂?爆了80pts
补题(线性筛):
if(!vis[i]) prime[++pn] = i,mu[i] = 1;
2021.10.30
搜索题(1,1)出发,大样例都没问题,但实际上(1,1)可能是障碍物。
白给100pts
2021.10.27
经卷爷提醒,有多个图的时候如果用前向星存图,只需要开多个 head 数组即可。
我以前 edge、head 数组,tot 全部都开了很多份
线段树/主席树二分边界问题:
LL Query(int x,int l,int r,int les)
{
if(t[x].cnt < les) return INF;
if(t[x].cnt == les) return t[x].val;
if(l == r) return 1ll * tls[l] * les;//由于存在权值相同,所以需要加上这一句(tls是离散化后对应离散化前的数组)
int mid = (l+r) >> 1;
if(t[t[x].l].cnt >= les) return Query(t[x].l,l,mid,les);
return t[t[x].l].val+Query(t[x].r,mid+1,r,les-t[t[x].l].cnt);
}
2021.10.26
T3 在调试的时候把线段树改成了询问直接跑到底,后来调过了没改回来直接白给70pts= =
所以要测极限数据。
T2 卡常
\(10^6\) 主席树相当危险,树上换根问题可以用树状数组,把主席树拆一下贡献就好了。
虽然都是一个 \(log_2n\),但是可以快一倍!
2021.10.23(24自测)
CSP-S
T2 我写了这么一个函数:
void Ad(int &x){if(x >= MOD) x -= MOD;if(x < 0) x += MOD;}
然后区间DP的时候我都这么写的:
Ad(ret += ...);
洛谷上竟然T了一个点,一度怀疑是自己哪里写挂了。
后来加上了 inline
,T的那个点变成了1.03s(众所周知真正的TLE应该是1.20s)
于是我把所有上文的写法都改了一下:
ret = (ret + ...) % MOD;
过了,飞快,总用时 3.29s,之前T一个点的时候总用时 5.87s,加了inline
也有 4.88s。
吐了,再也不用这个函数。
2021.10.20
左偏树不更新 dist
,而只是赋值。
2021.10.16
变量名写错,比如
sort(a+1,a+k+1);
习惯性写成:
sort(a+1,a+n+1);
2021.10.11
Dev
#include <vector>
懂?
2021.10.8
距离公式写成了
sqrt(I*I+J+J)
估计不会犯第二次。
2021.10.4
乍一看认为 \(i*i*x\) 不会爆 \(int\) (\(x\)是long long
类型)
2021.10.3
函数没有返回类型。
第二次了。
原来那个cqbz四个CE就是你啊!
2021.9.24
下标是long long
类型,函数的形参写的int
。
又双叒叕少了一层数组嵌套。
边界情况多乘了一次。
2021.8.26
范围是 \([0,10^9]\),动态开点线段树却是从 \([1,10^9]\) 开始。
2021.7.29
昨天:不会真有sb函数不写返回值吧。
今天:sb竟是我自己。
2021.6.23
分类讨论中有一种情况没输出YES
。
if else 写麻了。
2021.6.2
模数默认 \(998244353\),但是却是 \(10^9+7\)。
2021.5.4
CF1498D Bananas in a Microwave
先除后乘爆double精度。
2021.4.4
灯
注意离散化后使用的下标。
2021.2.25
注意扫描线+线段树,叶子结点更新时越界问题。
模拟赛策略有点问题。
首先我们应该通读所有题,并对其难度排序,由易到难开题。
先打暴力!!!
如果中途发现有题和难度估计不一样,重新估计其难度,然后依然是从易到难开题。
稍微多分配一点时间看一看每道题用什么算法,千万不要判断错了,如果分配时间不足,很有可能判断错误,导致该打的没打或之后发现来不及打!
2021.2.24
慢慢读题!
一句话题意都能读掉字是我没想到的。
2021.2.23
HDU6800 Play osu! on Your Tablet
cdq分治最后要按ID排序,因为solve(mid+1,r)要用!
我们知道了长度之后再初始化!
函数不写返回值引起 \(\operatorname{MLE}\) 以及其他错误。
2021.2.17
源点和汇点在连边之后才赋值。
当前弧优化把cur[x]
打成了head[x]
。
调试之前:我dinic板子肯定没打错啊(超级自信)。
2021.2.8
⼩绿和⼩蓝-城堡
本地拍出错了之后没有更新到提交的文件夹里面。
2021.2.5
网络流前向星边的编号初始值一定要赋为1。
dinic的时候,当前点走过了一些点,流量一定要减。
2021.2.1
各种筛法的题, \(n\) 就已经爆 \(\texttt{int}\) 了,要各种注意取模和开 \(\texttt{long long}\)。
2021.1.31
数据范围 \(1\le n<2^{31}\),加 \(1\) 爆 \(\texttt{int}\)。
2021.1.12
字符串题注意看字母大小写。
不要默认是小写字母。
2021.1.2
思路不清晰,被迫重构代码。
多组数据初始化初始化初始化!
2020.12.23
线段树区间合并思路不清晰。
应该先用子区间直接更新,然后是跨区间更新。
2020.12.20
原题赛不打对拍。
数组少嵌套或者多嵌套(手快不过脑。
2020.12.5
NOIP
看不出来要写高精,注意分析范围要从质因数分解的角度看。
多组数据,用后缀和记得要把n+1位清空。
2020.12.4
忘了是什么时候出的锅了,刚想起来,写一下。
对拍的时候不要用重名的东西,哪怕是后缀名不同也不行,前面也要不同,不然很有可能出现未知问题。
2020.11.28
观察
std用内置函数!!!否则是似乎是线性的复杂度!
如:
it = lower_bound(s.begin(),s.end(),dfn[x]);
应该改为:
it = s.lower_bound(dfn[x]);
本题中s为set。
2020.11.18
三角形
没拍大数据,T了,痛失AK。
所以你最后半个小时在那里玩什么泥巴
2020.11.17
爷
dfn[x]打成了x
2020.11.15
flower
不修改的区间查询打树状数组而不打前缀和
paint
提交时取消freopen的注释取消成了本地的= =,而不是提交文件夹的
2020.11.7
CSP-S
T1
读错题
二分边界为1583,但是算闰年是按1584为边界算的
T2
读错题、读掉条件
2020.11.4
NOIP模拟赛 轰炸
Tarjan缩点后的dfs只跑一遍但是没有记忆化
NOIP模拟赛 玩游戏
倍增打成了:
d[f[x][i]] >= d[x]
实际上应该是:
d[f[x][i]] >= d[y]
2020.11.1
P,Q,R不分
疯狂的火神
直接输出DP最后一位,而不是求DP数组所有元素的最大值
2020.10.31
路径计数
完整数据的头+部分分的身体=大常数骗分=TLE
树和森林
输出函数又双叒叕没开long long
2020.10.28
数列
自信推部分分式子,不用小数据对拍,结果都挂了
模板
首次打set的dsu on tree,不熟悉
最大的set如果不是自己,要插入自己的儿子,但是忘掉了qwq
2020.10.22
前缀和第一位不能转移,因为会越界,于是没有管它
但是实际上第一位是有值的,而这么处理会变成\(0\)
2020.10.21
DP转移的时候没取max
类似于:
dp[i][j] = ...;
但是应该是:
dp[i][j] = Max(dp[i][j],...);
2020.10.4
经典1e10爆int
2020.9.7
终于想起来有这个东西了
单个元素如果要爆取模记得提前取模,而不是习惯性两个数乘起来再取模
被卡常了qaq
如果组合数可以用\(O(n^2)\)预处理就一定不要用逆元的写法!
容斥取模最后不判负数 + 可能用到两倍空间却只开了一倍
2020.9.6
NOIP2020模拟赛T1
因为没有忽略末尾空格而对拍拍了半个小时
2020.8.25
1-11G. JM的月亮神树
dijkstra大于小于打反
2020.8.21
连边->缩点->连边
前向星->Tarjan->vector
于是在vector里使用了e[i].v
2020.8.8
状压DP,用记忆化搜索的时候dfs传的操作x和枚举的英雄i混淆
2020.7.30
\(10^5 * 10^5 = 10^{10}\),10位数,不开long long
\(10^5 * 10^5 = 10^{10}\)明明是11位数!!!
2020.7.27
搜索专题
前向星无向图边要开两倍空间!!!
原题测试
T1: Xor-Paths
\(n,m,k\)连续三个变量,\(k\)要开\(long\ long\),但由于定义\(n,m\)用的\(int\),而这三个变量又是连着的,于是...
连续变量类型不同,不能在同一排定义
2020.7.26
原题测试
前缀和在排序前求
原题测试の复活赛
T4: Simple Skewness
LEN打成了len,不要用重名的变量啊啊啊啊
2020.7.22
原题测试
T4: Restore the Permutation by Sorted Segments
判相邻的数手快打掉了+1
这波是检查了前几道题,都没出锅,唯独第四道没检查,出锅了
检查不够
2020.7.21
情况过多,懒得思考,靠及时评测以及CF的数据调代码
这波需要自己出数据
线段树又双叒叕出锅了
本来应该是:
if(l <= t[x].l && t[x].r <= r)
然而写成了:
if(t[x].l <= l && r <= t[x].r)
Restore the Permutation by Sorted Segments
本来是一边搜索一边记录答案最后一位要特判,但忘了记录
2020.7.20
这波是开数组没加5 RE致死
2020.7.19
原题测试
共四题,只过了T1,QAQ
T2:手快了,少了一重数组的嵌套
T3:有一个地方把两个相似的变量dif和dz打错了
T4:老瞎眼 2500的数组范围开成了2000
=> 6圈250m,共1500m,美滋滋
这波是 心急AK + 轻视原题不检查