摘要:
思路:线段树+转化 提交:2次 错因:由于智障没有判断左右端点ORZ 题解: 主要是如何把区间除下取整转化成更适合线段树的一些操作。 给定除数 $d$ ,对于一段区间,若区间只包含 $k d$ 与 $k d 1$ ,我们可以转化成区间减,因为此时做完除法,新的数与原数的差相等,即 $$k d (k 阅读全文
摘要:
基本思路:点分治,是一种针对 可带权树上简单路径统计问题 的算法。对于一个节点,只解决经过这棵子树的根节点的路径,对于子节点问题下推子树。 补一下点分治的一些题: "Luogu P4178 Tree" "Luogu P2634 [国家集训队]聪聪可可" "Luogu P2993 [FJOI2014] 阅读全文
摘要:
思路:$BSGS$ 提交:$1$次 题解: 原式可以化为$$x_{i+1}+\frac{b}{a 1}=a(x_{i}+\frac{b}{a 1})\mod p$$ 这不是等比数列吗? $$x_{n}+\frac{b}{a 1}=a^{n 1}\cdot (x_{1}+\frac{b}{a 1})\ 阅读全文
摘要:
思路:杜教筛 提交:$2$次 错因:$sum$函数处取模出错 题解: 首先第一问是智商检测题:$\sum_{i=1}^n \mu(i^2)$显然为$1$ 第二问其实是跟杜教筛板子那篇里面说的似的: $f=\varphi(i^2)=\varphi(i)\cdot i$ $S(n)=\sum_{i=1} 阅读全文
摘要:
思路:杜教筛 提交:$2$次 错因:$\varphi(i)$的前缀和用$int$存的 题解: 对于一类筛积性函数前缀和的问题,杜教筛可以以低于线性的时间复杂度来解决问题。 先要构造$h=f g$,并且$h$的前缀和易求,$g$的区间和易求。 具体地: $$\sum_{i=1}^{n}h(i)=\su 阅读全文
摘要:
思路:$exgcd$ 提交:$2$次 错因:输出格式错误OTZ 题解: 求:$r^2 ≡ x \mod N , 0 \leq r include include include define ll long long define rr register ll define R register i 阅读全文
摘要:
思路:$DP$ 提交:$2$次 错因:高精写挂(窝太菜了) 题解: 观察可知$f[i]=2 f[i 1]+(n\&1)$ 高精的过程参考了 "WinXP@luogu" 的思路: 发现一个问题。每一项约等于前一项的 $2$ 倍。仔细分析,发现 $dp(n)=2dp(n 1)+ (n\& 1)?1:0$ 阅读全文
摘要:
思路:扩展欧拉定理 提交:$\geq5$次 错因:快速幂时刚开始没有判断$a$是否大于$p$ 题解: 用树状数组维护差分,查询时暴力从左端点的第一个数向右端点递归,若递归时发现指数变为$1$,则指数返回$1$;若递归出右端点,指数也返回$1$; cpp pragma GCC optimize (3) 阅读全文
摘要:
思路:扩展欧拉定理 提交:$1$次 题解: 首先简介扩展欧拉定理: 当$b =\varphi(p)$时,$a^b\equiv a^{b\%\varphi(p)+\varphi(p)} \mod p$ 这样我们可以递归去算这个式子,直到$p==1$,因为$2^{2^{2^\cdots}}$永远是无穷大 阅读全文
摘要:
思路:数学大汇总 提交:$3$次 错因:有一个$j$写成$i$ 题解: 求:$x^k \equiv a \mod p$ 我们先转化一下:求出$p$的原根$g$ 然后我们用$BSGS$可以求出 $g^b \equiv a \mod p$,即$a$的指标$b$.然后因为原根的幂可以表示$[0,p 1]$ 阅读全文
摘要:
思路:费用流 提交:$1$次 题解: 源点向人连流量为$1$费用为$0$的边,人向每个工作连流量为$1$费用为$c_{i,j}$的边,每个工作向汇点连流量为$1$费用为$0$的边。 跑最小费用最大流。至于最大费用把费用全部取个负数输出答案时再取个负数就好。 代码: cpp include inclu 阅读全文
摘要:
思路:最小割 提交:$2$次 错因:三目运算符写错($QwQ$) 题解: 对棋盘黑白染色,源点向黑点连边,汇点向白点连边,权值均为这个点的权值。 然后所有的黑点向白点连一条$Inf$的边。 这样求出的最小割一定会割掉与源点和汇点相连的边,割掉这条边相当于不选这个点。 所以最后答案就是所有点的权值 最 阅读全文
摘要:
思路:最大流 提交:$1$次 题解: 我们把一个人看成一单位流量。从源点向每一个单位连一条容量为单位人数的边,从每一个单位向每一条餐桌连一条容量为$1$的边,相当于限制一个餐桌同一个单位只能去一个人,然后从每一个餐桌向汇点连一条容量为餐桌人数的边。跑最大流。 代码 cpp include inclu 阅读全文
摘要:
思路:最小费用最大流 提交:$1$次 题解: 拆点 对于题目中的边$(u,v)$且$u include include include define ll long long define R register int using namespace std; namespace Luitaryi 阅读全文
摘要:
题解:斜率优化$DP$ 提交:$2$次(特意没开$long\ long$,然后就死了) 题解: 好的先把自己的式子推了出来: 朴素: 定义$f[i][j]$表示前$i$个数进行$j$次切割的最大得分,$s[i]$为前缀和 那么转移方程为: $f[i][j]=\max(f[i 1][j]+s[j] ( 阅读全文
摘要:
思路:DP 提交:$1$次(课上刚讲过) 题解: 如果不管重边的话,我们设$f[i][j]$表示连了$i$条边,$j$个点的度数是奇数的方案数,那么显然我们可以分三种状态转移: $f[i][j]+=f[i 1][j 2] C_{n j+2}^2;$连了两个偶点 $f[i][j]+=f[i 1][j] 阅读全文
摘要:
思路:斜率优化$DP$ 提交:$1$次 题解: 转移方程:$f[i]=\max(f[j]+A (s[i] s[j])^2+B (s[i] s[j])+C)$ 写成可以斜率优化的式子:$f[j]+A s[j]^2 B s[j]+C=2 A s[i] s[j]+f[i] A s[j]^2 B s[i]$ 阅读全文
摘要:
思路:数位DP 提交:$2$次 错因:进行下一层$dfs$时的状态转移出错 题解: 还是记忆化搜索就行,但是要用$map$记忆化。 见代码 cpp include include include define R register int define ll long long using name 阅读全文
摘要:
思路:DP 提交:$5$次 错因:2次高精写错(我太菜了),2次写错特判 题解: 设$f[i]$表示深度$\leq i$的严格$n$元树的数目,有 $$f[i]=pow(f[i 1],n)+1$$ 即一个点,对于每一个孩子深度都可以是$1$到$i 1$的严格$n$元树,或是仅仅一个点(作为根)。 所 阅读全文