摘要:
数学基础 1.快速幂 注意结果可能为负(c++出锅)最后答案(ans+mod)%mod inline ll qpow(ll a,ll b){ ll ans=1; while(b){ if(b&1) ans=ans*a%MOD; a=a*a%MOD; b>>=1; } return (ans+MOD) 阅读全文
摘要:
卡特兰数 优秀博客 1 2 3 卡特兰数是一种经典的组合数,经常出现在各种计算中,其前几项为 : 1, 2, 5, 14, 42,132, 429, 1430, 4862, 16796, 如果打表or手模找到如上规律可考虑卡特兰数 公式1: \(Catalan(n)=\sum_{i=0}^{n-1} 阅读全文
摘要:
背包 blog背包九讲 n件物品,容量为V的背包,w价值,v体积 \(dp[i][j]=dp[i-1][j-k\*v[i]]+k\*w[i]\) 01背包 每个物品只有一件 k=1 memset(f,0xcf,sizoef(f)); f[0][0]=0; for(int i=1;i<=n;i++) 阅读全文
摘要:
T1 过不了大样例 查不出错。。。可能想错了 wawawa爆零了 #include <cstdio> #include <vector> #include <cstring> #include <iostream> using namespace std; const int N=500005; i 阅读全文
摘要:
summary: 用好$sort$万事大吉 可以康康归并排序逆序对——当然还是觉得树状数组求逆序对更简单 冒泡排序 原理 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。 https://zhuanlan.zhihu.com/p/610942 阅读全文
摘要:
algorithm 库中函数 reverse(v.begin(),v.end()) 翻转 O(n/2) sort(v.begin(),v.end()) 默认是从小到大排序 unique(a+1,a+1+n) 去重,使用前先sort 此处的删除,并不是真的删除,而是指重复的元素被移到了后面 应用(离散 阅读全文
摘要:
容器 通用操作 O(1) size() ,empty() O(N) clear() vector向量——变长数组 头文件: #include<vector> 创建: vectora; vector<类型名>变量名 操作: O(1) a.empty(); bool !!! 下标访问 0~ a.size 阅读全文
摘要:
解决可带权树上简单路径统计问题 其精髓在于把无根树平均地分割成若干互不影响的子问题求解,极大降低了时间复杂度,是一种巧妙的暴力。 例: 模板给定一棵树(无根树)和一个整数 k ,求树上等于 k 的路径有多少条? (存在) 枚举不同的两个点,然后dfs算出ta们间的距离,统计一下就行了 大概是 O 阅读全文
摘要:
题目:给定一棵 N 个点的无向树,边有边权,求树上任意两点间的距离和,答案对 1e9+7 取模。 题解:依题可知,这道题所求即Σi=1n−1Σj=i+1ndist(i,j),枚举树上任意两点并计算距离的复杂度要达到 O(n2logn),时间难以承受。 可以换一种方式思考,由于任意两点的距离都是答案贡 阅读全文
摘要:
树上差分 松鼠的新家 很显然的 起点+1,终点+1,然后lca和 fa[lca] 都减 1 最后统计答案时 因为终点被重复算了两次 ,所以要减1 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> 阅读全文
摘要:
最小生成树 Kruskal: 适用稀疏图,\(O(mlogm+ma(n))\) $a(n)$是一次并查集的复杂度,更快,更常用 把边按照权值进行排序,用贪心的思想优先选取权值较小的边,并依次连接,若出现环则跳过此边(并查集来判断是否存在环)继续搜,直到已经使用的边的数量比总点数少一即可。 #incl 阅读全文
摘要:
0/1分数规划 0/1分数规划 给定一些物品,每个物品有 a[i],b[i] ,要求选 k 个,最大化 (∑ a[i])/(∑b[i]) 。 二分,判定答案是否能 ≥mid 。 那么即 (∑a[i])/(∑b[i])≥mid ,也即 ∑a[i]-mid×b[i] ≥0 。 将物品按照 a[i]-mi 阅读全文
摘要:
T1 啊?60改成20???啊啊啊 60 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N=1000005; const int mod=1000000007; int 阅读全文