文章分类 - 算法蒟蒻
摘要:【线性代数】 【矩阵封装】 矩阵加法/乘法 //矩阵加乘封装:1-based //如不用取模:mod请用超大质数100000000000000003 const int MAX_SIZE=200; // 最大矩阵大小 struct Matrix{ int rows,cols; i64 M[MAX_S
阅读全文
摘要:【计数题】 mod 998244353 Grid Counting https://codeforces.com/contest/2151/problem/D 题目大意 思路 注意到恰好一个:列放了就不能再放->每列最多一个 注意到第一行只能放最左边和最右边 (如果上一行没放)第二行必须靠里放两个.
阅读全文
摘要:【随机化】 能在若干次内随机试出且大概率正确 常用函数 rand 生成随机整数 使用时需要#include<cstdlib> 可用取模来规定大小 需要生成随机种子:srand(time(nullptr)) 预定义随机数生成器 mt19937 类似于rand() 使用时用其定义一个随机数生成器:std
阅读全文
摘要:【二维偏序】 https://zhuanlan.zhihu.com/p/112504092 解题方法 树状数组+离散化 题目整理 小红的线下查询 https://ac.nowcoder.com/acm/contest/116945/F 题目大意 思路 (1)把45°坐标转为直角坐标:\(X=x-y\
阅读全文
摘要:【分数类】 struct Fraction { private: i64 numerator; // 分子 i64 denominator; // 分母 // 化简分数 void reduce() { if (denominator == 0) { throw invalid_argument("分
阅读全文
摘要:【贪心结论】 排序 Stacking of Goods https://codeforces.com/gym/105358/problem/J 【结论】交叉相乘 计算 \[c_1 \times 0 + c_2 \times w_1 + c_3 \times (w_1+w_2) + c_4 \time
阅读全文
摘要:【交互题】 输入 的数据是 根据输出的数据决定 的 语法格式 【推荐使用】若使用scanf printf: 在每次输出后加一句fflush(stdout) 若使用cin cout: 在#define endl '\n'的情况下 不要关闭同步流! 在每次输出后加一句fflush(stdout) 常见方
阅读全文
摘要:【连通性】 图的基本概念 图论基本定理 对于任何无向图\(G = (V, E)\),有\(\sum_{v \in V} d(v) = 2|E|\)(度数为边数的两倍)。 推论:在任意图中,度数为奇数的点必然有偶数个。 连通分量:无向图 对于一个不连通的无向图,它会被分割成多个极大连通子图,每个这样的
阅读全文
摘要:【lowbit】 概念 \(lowbit(x)\):x的二进制表达式中 最低位的1 所对应的值 【性质】 可以整除n的最大2的幂次\(2^{i}\) i64 lowbit(i64 x){ return (x&-x); } 常见运用:统计二进制下1的个数 while(x){ x-=x&-x; ans+
阅读全文
摘要:【哈希】Hash 模版代码 字符串哈希 //双哈希 const int N = 1 << 21; static const i64 mod1 = 1E9 + 7, base1 = 127LL; static const i64 mod2 = 1E9 + 9, base2 = 131LL; using
阅读全文