摘要:
https://scut.online/p/289 一个水到飞起的模板数位dp。 cpp include using namespace std; typedef long long ll; bool notp[2000]; const int MAXS1=200; const int MAXS2= 阅读全文
摘要:
其实一般都只是求一个组合数: cpp namespace combinatorics{ //注意需要init(),必要时修改常量 const ll MOD=1e9+7; const int MAXN=2000000; ll inv[MAXN+5],fac[MAXN+5],invfac[MAXN+5] 阅读全文
摘要:
每个世界可以和别的世界连通,也可以直接联通虚拟的已经毁灭的世界,这样变成一个最小生成树问题。 但是好像哪里不对? 有人用dp过掉的? 不太清楚怎么搞的。 其实就是最小生成树…… 阅读全文
摘要:
https://scut.online/p/278 第一次遇到不需要并查集的左偏树。 cpp include using namespace std; typedef long long ll; int n,m; const int MAXN=1000005; int tot,v[MAXN],l[M 阅读全文
摘要:
这个并不是左偏树+并查集。 左偏树+并查集里面,每个节点是主要的元素,要关心的节点当前处在哪棵左偏树的管辖内。 而纯粹的左偏树里面,左偏树本身是主要的元素,只关心左偏树本身的合并。 个堆合并了之后,把其中一个完全加入另一个,空的堆就自己去新建一个位置。 多套一层指针来记录各个工厂对应的树现在到了哪里 阅读全文
摘要:
https://scut.online/p/299 $dp[i][k]$ 为前 $i$ 个数分 $k$ 组的最大值,那么 $dp[i][k]=max_{p=1}^{i 1}\{dp[p][k 1] sum(p+1,i)\} $ 带FFT优化,反而更慢。这个可以理解。本身乘法是$O(nm)$,这里m小 阅读全文