摘要:
这题动态的难做,因此考虑静态转化,先建成完全的树 之后直接维护,当我们新加入这个点的时候,把这个点的之前权值记录下来 因为这个时候才会被操作影响 #include<bits/stdc++.h> typedef long long ll; using namespace std; typedef pa 阅读全文
摘要:
经典套路 动态开点维护质数个线段树,这样我们每次在质数上插入,只要维护一个最小值查询就能知道对于这个质数的最小的那个是谁 因为一个数分解的质数不会太多,主要是数不大,所以做法合理 #include<bits/stdc++.h> typedef long long ll; using namespac 阅读全文
摘要:
经典双指针分治法,对于每个i,求出最近的r 但是数据比较大,需要一个离散化 #include<bits/stdc++.h> typedef long long ll; using namespace std; typedef pair<int,int> pll; const int N=1e6+10 阅读全文
摘要:
感觉复杂度很有问题的 但是这个算法比较好像,就是先连二分图,从最小权值一直做匹配 数据可能并不是特别强,可能也是确实网络流的算法都是能跑较大数据 #include<bits/stdc++.h> typedef long long ll; using namespace std; typedef pa 阅读全文
摘要:
经典填格子问题,这种题都是推出前面的情况后,再不重复的情况求出后面的递推式 因为本题次数大,因此考虑使用矩阵快速幂优化 #include<bits/stdc++.h> typedef long long ll; using namespace std; const int N=30; const i 阅读全文
摘要:
如果直接拓扑建图,那么建图复杂度太高,因此我们考虑线段树优化建图 也就是区间连边,这样也能达到对应的目的,因为是单向边,建一个树即可 之后跑一下拓扑排序 #include<bits/stdc++.h> using namespace std; typedef long long ll; typede 阅读全文
摘要:
计数类dp,我们设计状态为以i为根,i所在连通块大小为j的合法方案 枚举他的子树,这条边是否断裂,如果断裂,那么直接乘以子树合法方案,如果不断,那么就是计算贡献 #include<bits/stdc++.h> using namespace std; typedef long long ll; ty 阅读全文