摘要:
"C Cow and Message" 对于字符串问题,如果对于下标进行操作复杂度很大的话,可以考虑对字母进行操作,这样计算复杂度的时候就是对26进行计算了。 阅读全文
摘要:
"D Navigation System" 参考: "Codeforces Round 625 (Div. 1, based on Technocup 2020 Final Round).B. Navigation System" 在遍历这个点A的时候,其实是判断下一个点B是否需要重新规划路径,如果 阅读全文
摘要:
"Strange Towers of Hanoi" 表示 i 个圆盘借助一个圆盘,转移到另一个圆盘上需要的次数。 为最优解时,其子问题 也必为最优解。如果 不是最优解,那么存在`f'[i k] define mst(name, value) memset(name,value,sizeof(name 阅读全文
摘要:
"费解的开关" 利用逆推,得出6步之内可以得到的状态,剪枝之后,可以在规定时间内完成。 阅读全文
摘要:
"递归实现指数型枚举" 状态压缩: 分别遍历每一个状态即可。 阅读全文
摘要:
"最短Hamilton路径" 利用动态规划可以很好地解决这个问题。 $dp[i][j]$中 i 利用状态压缩,可以表示已经走过了多少个点,j 表示的是当前所在点。 阅读全文
摘要:
"C2 Skyscrapers (hard version)" 分别用 表示在 i 位置能取到的左边的值之和,右边的值之和。 利用单调栈的思想。 降低复杂度的方法是,充分利用重复计算的数据,将其保存下来,避免多次计算。 阅读全文
摘要:
快速乘 参考: "小技巧1——长整型:64位整数的乘法模运算" 当 a 和 b 都大于1e9的时候,为了防止溢出,就需要一个算法,叫做快速乘。 实现方法一: 将乘法转换为加法,并且伴随着取模操作的进行,可以保证不会溢出。 而为了加速加法操作,可以利用快速幂的思路,对加法操作进行优化,复杂度为$O(l 阅读全文
摘要:
图中长度为k的路径的计数 $G_{k_1+k_2}[u][v]=\sum^n_{w=1}G_{k_1}[u][w] G_{k_2}[w][v]$ 经过变形,$G_{k_1+k_2}=\sum^n_{w=1}G_{k_1} G_{k_2}$ 所以$G_k=G_1^k$ 阅读全文
摘要:
"Blocks" 利用递推的想法得到一个递推公式,在本质上它是一个 dp 的题目,但是由于 n 过大,不能使用 dp 解决,所以将递推公式化为矩阵乘法,所以可以用矩阵快速幂进行优化。 阅读全文