【清单】如何……
如何解DP题-1
- 增加一堆条件:使得每个答案可以被计数某个恒定的次数。
- 分类讨论:考虑每种情况,列出一个清单。
- 找充分必要条件:找到一个答案合法的充分必要条件,要考虑每种情况!
- 设计转移方程:根据上面的条件,设计dp式与转移方程,可以以集合为参数。
- 优化转移方程:把集合改为集合大小/代表元,或用其他技巧优化DP。
常量表
-
\(\pi\):
3.14159265358979323864
。 -
long double
:\(20\)位,\(10^{-4951}\sim10^{4933}\)。 -
double
:\(16\)位,\(10^{-324}\sim10^{309}\)。 -
float
:\(8\)位,\(10^{-46}\sim10^{39}\)。 -
int
:-2147483648
~2147483647
如何理解别人的题解
有时候,了解别人的思路之后,手推一遍/手写一遍是效率挺高的做法。
数学算法
- 明确函数的作用(没有发现
solve
实际上只计算\(\lfloor\frac{Pi+R}{Q}\rfloor-\lfloor\frac{R}{Q}\rfloor\)个A……这个地方卡了我很久)- 多自己手推公式!!(原来的pdf一些东西没有写清楚……可把我累死了……)
- 觉得自己有疑惑/很妙的想法后手推公式看能否成立。(这样真的可以更快地理解)
- 卡住的时候不能干瞪着屏幕,思考自己那里卡着了。如果想不出来,重新推一遍公式。
- 不要在理解思路之前手动运行代码!!!它涉及的计算量会把人搞自闭的……