T1:
树上连通块u的最远点一定是直径的一个端点!
性质不熟悉
LCT维护
直径更新一共6中情况,数组存一下然后暴力找
T2:
开花费桶300个,多重背包
价值不同?是前k大
前k大是凸函数,,,往单调性方向想
决策单调性?
可以证明。p<q,dp[p]+pre[i-p]<dp[q]+pre[i-q],由于有pre[i+1-p]-pre[i-p]<pre[i+1-q]+pre[i-q]所以决策有单调性!
分治去做
注意,必须要转移,所以转移用<=判断更新
T3:
A类似系数,B是n个行向量,Ai的系数选择或者不选择,B(1~n)线性表出
Ci的向量
其实只和C的矩阵的秩有关,只要B的基是C的基超集,那么其他C中的元素一定可以B来唯一线性表出(自由元就随意了)
所以考虑B的秩,B的秩一定大于C的
考虑A的系数,对于不是B的秩的元素系数位置,2^(n-rkb)种可能,是秩的只有一种,所以A的系数有:2^((n-rkb)*n))种
对于B,必须包含C的秩,只用考虑消完之后是否包含C的线性基
包含部分:h[n][rkc]表示长度为n-rkc的行向量n个,秩是rkc的方案数
剩下rkb-rkc的秩,g[n-rkc][rkb-rkc]表示,长度为n-rkc的行向量n-rkc个,秩是rkb-rkc的方案数
并且,对于那rkc个行向量后面的n-rkc的部分,必须被rkb-rkc消完,方案数是:2^(((rkb-rkc))*(rkc)) rkc表示有rkc个行向量
递推:g[i][j]=g[i-1][j]*2^j+g[i-1][j-1]*(2^(n-rkc)-2^(j-1))即加一个新的秩,或者不加(是一个容斥,减去被表示出来的)
枚举rkb,都乘起来即可
右下角会消得剩下rkb-rkc个1