矩阵快速幂 矩阵快速幂是一种高效计算矩阵幂的方法。它利用了矩阵的幂运算具有分治性质的特点,可以将矩阵的幂运算时间复杂度从 O(n)降低到 O(logn)。可用于解决线性递推式问题。经典的斐波那契数列fn=fn-1+fn-2。当n很大时,你无法快速的计算第n项的值。可以构造矩阵通过矩阵快速幂得到Fn矩阵 a(0,0) 即为 fnCodematrix c;c.init();i
势能线段树 1.对于区间修改操作,修改操作会使得值在趋向零势能点前严格单调减少,在变为零势能点后不在变化。需要维护一个值来界定是否到达零势能2.且题目不能出现其他非单调的区间修改操作,如区间加,区间乘等。如果有其他修改操作,可以通过构造形如 update1 ,update 2,update 1,update 2 的数据破坏单调性,从而使操作1复杂度变为暴力修改的O(nlogn)
最大异或对(Tire树) 在给定的 N个整数 A1,A2……AN 中选出两个进行 xor(异或)运算,得到的结果最大是多少?第二行输入 N 个整数 A1~AN。第一行输入一个整数 N。输出一个整数表示答案。
P1967 货车运输(最大生成树,LCA) 接下来 m 行每行三个整数x,y,z,每两个整数之间用一个空格隔开,表示从 x 号城市到 y 号城市有一条限重为 z 的道路。接下来 q 行,每行两个整数 x,y,之间用一个空格隔开,表示一辆货车需要从 x 城市运输货物到 y 城市,保证 x≠y。A 国有 n 座城市,编号从 11 到 n,城市之间有 m 条双向道路。第一行有两个用一个空格隔开的整数 n,m,表示 A 国有 n 座城市和 m 条道路。共有 q 行,每行一个整数,表示对于每一辆货车,它的最大载重是多少。
P2746 校园网Network of Schools(Tarjan,缩点) 你要写一个程序计算,根据协议,为了让网络中所有的学校都用上新软件,必须接受新软件副本的最少学校数目(子任务 A)。更进一步,我们想要确定通过给任意一个学校发送新软件,这个软件就会分发到网络中的所有学校。计算最少需要增加几个扩展,使得不论我们给哪个学校发送新软件,它都会到达其余所有的学校(子任务 B)。注意即使 �B 在 �A 学校的分发列表中,�A 也不一定在 �B 学校的列表中。接下来 �N 行中每行都表示一个接收学校列表(分发列表),第 �+1i+1 行包括学校 �i 的接收学校的标识符。