记忆化搜索,顾名思义吗,搜索一次记忆一次,功能 题目描述 楼梯有 NN 阶,上楼可以一步上一阶,也可以一步上二阶。 编一个程序,计算共有多少种不同的走法。 就是提高效率呗。 很容易看出就是个递推呗,斐波那契数列。那这道题数据很大,一次一次的递推会超限 没啥好说的就是高精的斐波
链接: 洛谷 题目大意: 给你一个由小写拉丁字母组成的字符串 \(s\)。我们定义 \(s\) 的一个子串的存在值为这个子串在 \(s\) 中出现的次数乘以这个子串的长度。 对于给你的这个字符串 \(s\),求所有回文子串中的最大存在值。 正文: 建一棵回文树,每一次插入字符,将当前最长回文后缀加一,统
前言 传送门 : 思路 多重背包二进制裸题 没记错这个使用了倍增的思想 将我们选的数 表示成二进制即可,大大的提高了时间效率 CODE const int N = 4e4+10; ll f[N*20]; int n,m; void solve() { cin>>n>>m; for(int i=1;i<=n;i++) { int v,w,s;cin>>w>>v>>s; for
选数 题目链接:luogu P3172 题目大意 你可以在 [L,H] 区间中选 N 个数(可以相同),然后要它们的 gcd 恰好为 K,然后问有多少种选的方案。 思路 首先你考虑你可以枚举 K K K 的倍数作为
原题链接: 语文成绩 - 洛谷https://www.luogu.com.cn/problem/P2367 题目背景 语文考试结束了,成绩还是一如既往地有问题。 题目描述 语文老师总是写错成绩,所以当她修改成绩的时候,总是累得不行。她总是要一遍遍地给某些同学增加分数,又要注意最低分是多少。你能帮
链接: 洛谷 题目大意: 给定一个字符串 \(s\),找到最小的 \(t\) 使得 \(t\) 匹配的位置能覆盖 \(s\)。 思路: \(t\) 一定是 \(s\) 的一个前后缀(\(s\) 也算),考虑 DP。设 \(f_i\) 表示前缀 \(i\) 的答案,那么 \(f_i\) 要么是 \(i\),要么是 \(f_{\mathrm{border}(i)}\)。那么如果是 \(f_{\mat
约数个数和 题目链接:luogu P3327 题目大意 给你 n,m 要你求 ∑i=1~n∑j=1~m d(ij),d 是约数个数。 多组数据。 思路 首先由一个比较神奇的东西: \(d(ij)=\sum\limits_{x|i}\sum\limits_{y|j}[gcd(x,y)=1]\) 这里证明一下: 先看我们可以只看一个质数的部分。 假设它的因子的出现次数是
1.结合贪心乱搞 [link]{https://www.luogu.com.cn/problem/AT3672} 2.数据范围极小(状压),并且易构造,易验证 [link]{https://www.luogu.com.cn/problem/AT2657}
链接: 洛谷 题目大意: 在一张图上,有 \(k\) 条边可以免代价,求 \(s\) 到 \(t\) 的最短路。 正文: 这是分层图最短路板子。建 \(k\) 层图,上一层到本次的边权为 \(0\)。很好理解。 代码: const int N = 1e6 + 10, M = 5e6 + 10; inline ll Read() { ll x = 0, f = 1; char c = getchar(
链接: 洛谷 题目大意: 求第 \(k\) 个非完全平方数(或其倍数)。 正文: 换句话说,题目要我们求第 \(k\) 个质因子最高次小于二的数,这就很 \(\mu\)。 求第 \(k\) 大考虑用二分,每次判断 \([1,\mathrm{mid}]\) 中的合法数是否大于 \(k\)。 代码: const int N = 5e4 + 10; inline ll Read() {
P3523 [POI2011]DYN-Dynamite Description Luogu传送门 Solution 经典树上 \(dp\)。 首先二分 \(mid\) 表示最远的距离。 设 \(f_{x}\) 表示距 \(x\) 最远的未被覆盖的关键点到 \(x\) 的距离,\(g_x\) 表示 \(x\) 到该子树中的选定点的最小距离。 初值显然:\(f_x = -inf\),\(g_x = i
数据备份 题目链接:luogu P3620 题目大意 给你一个数轴上面的一些点,你要选若干个点对,使得每个点至多在一个点对中,而且要你最小化每个点对之间距离的和。 思路 首先考虑普通的贪心。 就是每次选费用最小的那个,然后把它两边可以选的删掉。 但是你可能选旁边两个而不选它更优,所以考虑
题面传送门 看到操作一感觉就是个LCT的access操作。 然后答案就是统计到根节点虚边个数之类的。 如果我们能快速维护一个点到根的虚边个数,那么第二个询问差分一下,第三个询问区间取max就好了。 因为根据LCT的势能分析,access的虚实边切换次数不超过log,所以对于每次虚实边操作可以暴
题面传送门 看到字符串子串匹配啪的一下很快啊一个SAM扔上去了 先把\(M\)个串的SAM建出来,发现其实不用广义SAM,隔一个#插就好了。 然后对于每个询问串就可以在SAM上先刨除每个\(i\)结尾在模式串中最长匹配多少。 显然L有单调性所以直接二分然后\(O(n^2)\)dp就可以得到答案了。 又有
前言 传送门 : 思路 状态表示 ; f [ n ] [ h ] f[
P1314 [NOIP2011 提高组] 聪明的质监员 题意 题目描述 给定\(n\)个物品,给定每个物品的 重量 \(w_i\) 和 价值 \(v_i\) 给定一个标准值 \(s\) 以及一个参数 \(w\) 质检员每次会抽取\(m\)个区间,每次的抽检结果为 \(y = \sum_{l_i}^{r_i} (w_i \ge w) · \sum_{l_i}^{r_i} v_i\) 求
K-D Tree 简介 K-D Tree全称 K-Dimensional Tree,也就是 \(K\) 维树,是一种高效的树形结构 K-D Tree与平衡树(平衡二叉查找树)比较类似,不同在于平衡树每个节点仅仅维护一个值,而K-D Tree所维护的信息可能是 \(2\) 维甚至更高的,那么怎么样才能保证均摊复杂度呢?下面就来说一说 实现 存储
简介 一大堆毒瘤构造题中夹杂着几道其他题目…… 题目 CF1348D Phoenix and Science Description Luogu传送门 Solution 考虑最快情况,即 \(1 \rightarrow 2 \rightarrow 4 \rightarrow 8 ····\) 但是我们发现如果前期分裂太多,后面可能会出现不可控的情况,即超出题目要求达到
前言 每日水博客,学了莫比乌斯感觉就像打开了新世界的大门一样,看啥都想反演一下。 这不?又来一道省选题切一切~~~~ 题意一看就懂,就是求 \[\begin{aligned} Ans & =\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)\\ & =\sum_{i=1}^{n}\sum_{j=1}^{m}{\frac{i*j}{gcd(i,j)}}\\ & 令d=gcd(i
前言 蒟蒻又来水博客了!!! 昨天听冯巨讲解了莫比乌斯反演+线性筛法,马上来写一道模板题; 首先分析题意,我们用脑子推一下就知道了答案 \[Ans(n) =\sum_{x=0}^{n-1}\sum_{y=0}^{x}[gcd(i,j)=1]\\ \]
超级钢琴 有 \(n\) 个音符,编号从 \(1\) 到 \(n\) 。第 \(i\) 个音符的美妙度为 \(A_i\) 。 我们要找到 \(k\) 段不同超级和弦组成的乐曲,每段乐曲的连续音符个数 \(x\) 满足 \(L \le x \le R\) , 求乐曲美妙度的最大值。 注:当且仅当这两个超级和弦所包含的音符集合是相同的。 Soluti
【模板】杜教筛(Sum) 题目链接:luogu P4213 题目大意 要你求 φ 函数的前缀和和 μ 函数的前缀和。 (分别是欧拉函数和莫比乌斯函数) 思路 前置知识(们) 积性函数:对于两个互质的数 \(x,y\),\(f(xy)=f(x)f(y)\),那 \(f\) 就是积性函数。 完全积性函数:对于任意两个整数 \(x,y\),\(f(xy)=f(x)f(
[ICPC2014 WF] Surveillance 断环,然后复制一倍转化为序列问题,可以倍增。 https://www.luogu.com.cn/record/60927918 [CERC2013] Captain Obvious and the Rabbit-Man 构造多项式 \(A(x)=\prod(x-F_i)\),考虑等式 \(\sum a_iF_iA(F_i)=0\) 的左边,展开它就做完了。 https://www.luog
【模板】Matrix-Tree 定理 题目链接:luogu P6178 题目大意 给你一个无向图或有向图,然后让你求它有多少种以 1 为根的外向生成树。 思路 玄学玩意儿。 原理自己上去搜题解,我也说不清,就讲讲大概流程把。 我们弄一个矩阵 \(K\)。(\(a_{i,j}\) 是邻接矩阵)(如果有重边就是边权相加) \(K_{i,
路径交点 题目链接:luogu P7736 题目大意 给你一个分层图,第一层和最后一层的点数相同。 然后要从第一层的 n 个点走到最后一层的 n 个点,每个点到达的位置互不相同。 然后问你偶数个交点的路径方案数比奇数个交点的路径方案数多多少个。 思路 不难发现一个事情,对于两个起点 \(s_i<s_