摘要:
```cpp #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<cstdlib> #include<climits> #include<stack> #include<vector> # 阅读全文
摘要:
#include #include #include #include #include #include #include #include #include #include #include #include //#include #include #include #include<unor 阅读全文
摘要:
概率就是组合数分之一,现在需要求组合数有多少。 因为是排列,每一次长度加1,就是第i个插入的过程,考虑 dp[i][j][k]表示第i个数字插入到k的位置,逆序数是j。 分段转移(因为超级逆序数表示aI>aj+1): 当i−1<k的时候,有$dp[i][j][k]=\ 阅读全文
摘要:
可以很显然的发现,答案等于∑disti,root−all(lca(l,l+1,l+2,,,,r))其中 我们可以使用线段树取[l,r]lca。 每一个点到根的和,我们考虑先离线,再access过程。每一次打通一条链,就要把这条链上,已经遍历过的点到该链的链头的距离给剪掉。 阅读全文
摘要:
#include #include #include #include #include #include #include #include #include #include #include #include //#include #include #include #include<unor 阅读全文
摘要:
#include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<cstdlib> #include<climits> #include<stack> #include<vector> #include 阅读全文
摘要:
令 dp[i][x] 表示 j(j<i)\(&&\)(j+a_j>=i)是到i唯一途径,且往后能覆盖到x(x>=i) 即唯一通过j跳转到i节点,且j往后能跳转到至多i+x。 又由于路径具有唯一性,并且总是存在。我们总可以找到一个唯一节点跳转到当前节点。 转移方 阅读全文
摘要:
#include #include #include #include #include #include #include #include #include #include #include #include //#include #include #include #pragma GCC o 阅读全文
摘要:
#include #include #include #include #include #include #include #include #include #include #include #include //#include #include #include #pragma GCC o 阅读全文
摘要:
#include #include #include #include #include #include #include #include #include #include #include #include //#include #include #include #pragma GCC o 阅读全文