摘要:
dp[i = 前i中sorter][j = 将min移动到j位置] = 最短的sorter序列。对于sorteri只会更新它右边端点r的位置,因此可以把数组改成一维的,dp[r] = min(dp[r],dp[j]+1), l≤j#include#include#include#include#in... 阅读全文
摘要:
矩阵乘法是可以分块的,而且幂的和也是具有线性的。不难得到Si = Si-1+A*Ai-1,Ai = A*Ai-1。然后矩阵快速幂就可以了。/********************************************************** ----------... 阅读全文
摘要:
定义ai表示红色和绿色方块中方块数为偶数的颜色有i个,i = 0,1,2。aij表示刷到第j个方块时的方案数,这是一个线性递推关系。可以构造递推矩阵A,用矩阵快速幂求解。 1 /********************************************************* 2 *... 阅读全文
摘要:
一道比较经典的数据结构题。可以用多种方式来做。一,分桶法(平方分解)。根据数字x的大小和区间内不大于x的数字数量cnt的单调性,可知第k大数kth对应的cnt应该满足cnt≥k,且kth是满足条件的最小的一个,可以二分下界。关键在于高效找出cnt,对于每个完整的桶,排序以后二分,不完整的桶就直接暴力... 阅读全文
摘要:
今天来学习一下怎么用BIT区间更新的,BIT速度比线段树速度更快,也更好写。我们来看一下当给区间[l,r]整体加上一个常数c会前缀si发生什么变化?i #include#include#include#include#include#include#include#include#include#i... 阅读全文
摘要:
很自然会想到是线段树,需要考虑维护什么信息。我们需要的答案是从原点到末端的坐标,这个信息可以看出是多个向量相加,所以我们在子区间维护左端点到右端点的一个向量。因为角度会发生改变,那么再维护一个左右区间之间的角度。那么父节点的向量就等于左孩子的向量加上右孩子旋转以后的向量。对于修改si和si+1之间的... 阅读全文