摘要: 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] 阅读全文
posted @ 2023-05-02 10:32 80k 阅读(18) 评论(0) 推荐(0) 编辑
摘要: https://www.cnblogs.com/cloudplankroader/p/10988844.html 阅读全文
posted @ 2023-04-27 22:40 80k 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 原理 https://blog.csdn.net/RA100FDM/article/details/107460101 例题 https://atcoder.jp/contests/abc291/tasks/abc291_h 代码(示例) https://atcoder.jp/contests/ab 阅读全文
posted @ 2023-04-07 22:02 80k 阅读(19) 评论(0) 推荐(0) 编辑
摘要: https://blog.csdn.net/lj12358132134/article/details/80458349 阅读全文
posted @ 2023-04-06 18:47 80k 阅读(9) 评论(0) 推荐(0) 编辑
摘要: #pragma GCC optimize(3,"Ofast","inline") View Code 阅读全文
posted @ 2023-04-02 21:52 80k 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 经典结论:长度为n的排列的逆序对数量的期望为C(n,2)/2。 简单证明:任意两个数在一个排列中,为逆序的概率是(1/2),选择两个数的方案为C(n,2)。 故长度为n的排列的逆序对数量的总和为n!*C(n,2)/2,其中,n!是排列的数量 例题:https://ac.nowcoder.com/ac 阅读全文
posted @ 2022-11-14 22:21 80k 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 对一个数进行质因子分解的朴素做法是O(sqrt(n))的试除法 如果可以预处理出mindiv[i]数组,即每个数的最小质因子,则进行因式分解时,可以对数n,不断执行n/=mindiv[n],即可分解。 例题:https://ac.nowcoder.com/acm/contest/45670/E (此 阅读全文
posted @ 2022-11-14 21:54 80k 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 1、流网络:存在一个源点,一个汇点,有向边,带边权(容量),假设没有反向边(反向边可以通过加点处理掉) 2、可行流f:(1)满足容量(边权)限制,即流量小于等于容量,且大于等于0,(2)流量守恒:除了源点和汇点,其余点不存储流量(流进多少就流出多少)。 3、可行流的流量|f|:每秒从源点净流出的流量 阅读全文
posted @ 2022-11-02 21:16 80k 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 部分编译器支持128bit的整数表示,但是需要手写输入输出。 注意:__int128等价于__int128_t,不存在int128和int128_t。 输出函数: void Print128(__int128 num) { if(num<0) putchar('-'),num=-num; if(nu 阅读全文
posted @ 2022-10-31 16:34 80k 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 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 阅读全文
posted @ 2022-10-18 17:16 80k 阅读(20) 评论(0) 推荐(0) 编辑