01 2025 档案
单调栈 单调队列
摘要:单调栈 —— 模板题 AcWing 830. 单调栈 常见模型:找出每个数左边离它最近的比它大/小的数 int tt = 0; for (int i = 1; i <= n; i ++ ) { while (tt && check(stk[tt], i)) tt -- ; stk[ ++ tt] = 阅读全文
posted @ 2025-01-13 20:21 下头小美 阅读(5) 评论(0) 推荐(0)
并查集
摘要:并查集 —— 模板题 AcWing 836. 合并集合, AcWing 837. 连通块中点的数量 (1)朴素并查集: int p[N]; //存储每个点的祖宗节点 // 返回x的祖宗节点 int find(int x) { if (p[x] != x) p[x] = find(p[x]); ret 阅读全文
posted @ 2025-01-13 20:20 下头小美 阅读(13) 评论(0) 推荐(0)
map 可以二维!
摘要:unordered_map<int,map<int,int>>map; 阅读全文
posted @ 2025-01-12 21:01 下头小美 阅读(6) 评论(0) 推荐(0)
逆元(费马定理)
摘要:费马小定理 定义 如果p是一个 质数,而 整数 a不是p的倍数,则有a^(p-1)≡1(mod p) 对于任意整数 a,有 a^p = a (mod p)。 因为 ax = 1 mod b; a^(b-1) = 1 mod b(根据 费马小定理); 所以 x =a^{b-2} mod b。 如果取模 阅读全文
posted @ 2025-01-10 21:22 下头小美 阅读(29) 评论(0) 推荐(0)
快速幂
摘要:快速幂 —— 模板题 AcWing 875. 快速幂 求 m^k mod p,时间复杂度 O(logk)。 int qmi(int m, int k, int p) { int res = 1 % p, t = m; while (k) { if (k&1) res = res * t % p; t 阅读全文
posted @ 2025-01-10 19:46 下头小美 阅读(3) 评论(0) 推荐(0)
高精度
摘要:一、 高精度加法 —— 模板题 AcWing 791. 高精度加法 // C = A + B, A >= 0, B >= 0 vector add(vector &A, vector &B) { if (A.size() < B.size()) return add(B, A); vector<in 阅读全文
posted @ 2025-01-10 19:00 下头小美 阅读(26) 评论(0) 推荐(0)
排列组合
摘要:一、1<=b<=a<=2000 递推法求组合数 —— 模板题 AcWing 885. 求组合数 I 10w // c[a][b] 表示从a个苹果中选b个的方案数 for (int i = 0; i < N; i ++ ) for (int j = 0; j <= i; j ++ ) if (!j) 阅读全文
posted @ 2025-01-10 11:31 下头小美 阅读(27) 评论(0) 推荐(0)
容斥原理
摘要:求集合间的交并后的元素 int res = 0; for(int i=1;i<1<<m;i++){ int t = 1,sign = -1; for(int j=0;j<m;j++){ if(i&1<<j){ if((ll)tprim[j]>n){ t = 0; break; } sign = -s 阅读全文
posted @ 2025-01-09 20:44 下头小美 阅读(4) 评论(0) 推荐(0)