摘要:
0代表还没访问 1代表正在访问 2代表已经访问完 如果dfs过程中遇到1,则表明找到了环 遇到2则不必继续找,用于剪枝 vector<int> adj[2010]; int vis[2010]; bool DFS(int u) { vis[u] = 1; for (auto nxt : adj[u] 阅读全文
摘要:
https://www.cnblogs.com/cloudplankroader/p/10988844.html 阅读全文
摘要:
原理 https://blog.csdn.net/RA100FDM/article/details/107460101 例题 https://atcoder.jp/contests/abc291/tasks/abc291_h 代码(示例) https://atcoder.jp/contests/ab 阅读全文
摘要:
https://blog.csdn.net/lj12358132134/article/details/80458349 阅读全文
摘要:
#pragma GCC optimize(3,"Ofast","inline") View Code 阅读全文
摘要:
经典结论:长度为n的排列的逆序对数量的期望为C(n,2)/2。 简单证明:任意两个数在一个排列中,为逆序的概率是(1/2),选择两个数的方案为C(n,2)。 故长度为n的排列的逆序对数量的总和为n!*C(n,2)/2,其中,n!是排列的数量 例题:https://ac.nowcoder.com/ac 阅读全文
摘要:
对一个数进行质因子分解的朴素做法是O(sqrt(n))的试除法 如果可以预处理出mindiv[i]数组,即每个数的最小质因子,则进行因式分解时,可以对数n,不断执行n/=mindiv[n],即可分解。 例题:https://ac.nowcoder.com/acm/contest/45670/E (此 阅读全文
摘要:
1、流网络:存在一个源点,一个汇点,有向边,带边权(容量),假设没有反向边(反向边可以通过加点处理掉) 2、可行流f:(1)满足容量(边权)限制,即流量小于等于容量,且大于等于0,(2)流量守恒:除了源点和汇点,其余点不存储流量(流进多少就流出多少)。 3、可行流的流量|f|:每秒从源点净流出的流量 阅读全文
摘要:
部分编译器支持128bit的整数表示,但是需要手写输入输出。 注意:__int128等价于__int128_t,不存在int128和int128_t。 输出函数: void Print128(__int128 num) { if(num<0) putchar('-'),num=-num; if(nu 阅读全文
摘要:
RMQ 又叫 st表 跳表 本质是倍增动态规划 查询的时候,每次查询使用一个最大的k,使得2^k<=len(r-l+1) 然后找到[l, r]区间中前2^k和后2^k中的最大值,取最大 模板: const int N=200010; const int M=18;//2^M>200010 int n 阅读全文