「Edu Codeforces Round」#134CF1721. A. Image #include<bits/stdc++.h> using namespace std; #define int long long int read() { int a=0, f=1; char c=getchar(); while(!isdigit(c)) { if(c=='-') f=-1; 2022-08-30 题解 #构造 #Codeforces #贪心
「NowCoder Round X」#56NowCoderX56. 水。 A. 阿宁的柠檬 #include<bits/stdc++.h> using namespace std; #define int long long int read() { int a=0, f=1; char c=getchar(); while(!isdigit(c)) { if(c=='-' 2022-08-29 题解 #构造 #贪心 #最短路 #NowCoder
「NowCoder Round X」#55NowCoderX55. A. 至至子的等差中项 #include<bits/stdc++.h> using namespace std; #define int long long int read() { int a=0, f=1; char c=getchar(); while(!isdigit(c)) { if(c=='-') 2022-08-21 题解 #构造 #DP #贪心 #组合数学 #NowCoder
「Codeforces Round」#816 (Div 2)CF1715. A. Crossmarket 钦定 \(n \ge m\)。 不难发现,最优操作方式一定是一个先走完 \((n-1) + (m-1)\) 的路程,另一个只需要走 \((m-1)\) 的路程加上 \(1\) 的传送即可。 #include<bits/stdc++.h> using namespace std; #define int long long int 2022-08-21 题解 #构造 #Codeforces #贪心
LOJ#3381 函数调用 题解分析 函数调用,满足不出现递归,本身就构成了一张 DAG。 由于乘法操作是全局乘法,所以可以提前预处理乘法操作,而加法操作最终的贡献,取决于在它之后乘上多少次。 设 \(pls_i\) 为第 \(i\) 个函数执行的加法的值,如果没有的话则为 \(0\),\(id_i\) 为第 \(i\) 个函数要执行加法的元素的编号,没有的话为 \(0\),\(mul_i\) 为第 \(i\) 个函数 2022-08-20 题解 #图论 #拓扑排序
LOJ#3387 字符串匹配 题解分析 规定以下讨论中,字符串的下标从 \(1\) 开始。 注意到 \((AB)^K\) 一定是一段前缀,\(C\) 一定是一段后缀,而 \(AB\) 又一定是 \((AB)^k\) 的前缀,且满足连续出现 \(k\) 次。 考虑 \(S\) 的 \(z\) 函数。 如果知道了 \(AB\) 的长度和 \(k\),那么就能计算出对应的 \(C\)。设当前 \(AB\) 长度为 \(i 2022-08-20 题解 #树状数组 #字符串 #扩展KMP
「字符串学习笔记」#2 Z函数(扩展KMP)前言 本来想着,暑假要多学点算法,结果就学了一点点…… 大部分时间拿来写题了。 有点小遗憾。 不过无妨。 Z 函数(扩展 KMP) 算法流程及实现 约定:字符串下标以 \(0\) 为起点。 对于一个字符串 \(S\),满足 \(|S| = n\),它的 \(z\) 函数定义为:\(z(i)\) 表示 \(S\) 和以 \(i\) 开头的后缀 \(S[i,n-1]\) 的最长公共前 2022-08-20 学习笔记 #字符串 #扩展KMP
「Codeforces Round」#815 (Div 2)CF1720. A. Burenka Plays with Fractions \[ \frac{a}{b} = \frac{c}{d} \] \[ ad = cb \] 如果相等,答案为 \(0\)。 如果某一方是 \(0\),答案为 \(1\)。 如果两者有倍数关系,答案为 \(1\)。 否则为 \(2\)。 #include<bits/stdc++.h> 2022-08-19 题解 #DP #Codeforces #贪心 #Trie
「Codeforces Round」#805 (Div 3)CF1702. A. Round Down the Price #include<bits/stdc++.h> using namespace std; int read() { int a=0, f=1; char c=getchar(); while(!isdigit(c)) { if(c=='-') f=-1; c=getc 2022-08-17 题解 #Codeforces #贪心 #最近公共祖先
一些简单DP题luogu2606 排列计数 这个条件相当于,\([1,n]\) 有多少排列满足小根堆性质。 设 \(sz_i\) 为以 \(i\) 为根的子树大小。 那么 \(1\) 必定填 \(1\),而其他节点只需要考虑相对大小,所以对于 \(i\),只要规定了它的子节点内部到底用哪些数字,就一定存在合法方案。 设 \(f_i\) 为以 \(i\) 为根的子树的方案数,那么 \[ f_i = 2022-08-17 题解 #DP #线段树 #树形DP #概率论 #树状数组