摘要:
我们不妨将所有权值打到一棵树上,这很容易想到。 考虑暴力,如果我们选择了 \(w\) 个点,修改后我们会从叶子节点依次合并去计算贡献。 很显然我们可以动态规划维护。 \(f[p][w][0/1/2]\) 表示选了 \(w\) 个点,后整个区间的状态为 \(0/1/2\) 。 0 和 1 表示整个区间 阅读全文
我们不妨将所有权值打到一棵树上,这很容易想到。 考虑暴力,如果我们选择了 \(w\) 个点,修改后我们会从叶子节点依次合并去计算贡献。 很显然我们可以动态规划维护。 \(f[p][w][0/1/2]\) 表示选了 \(w\) 个点,后整个区间的状态为 \(0/1/2\) 。 0 和 1 表示整个区间 阅读全文
posted @ 2023-10-13 23:35
RVG
阅读(48)
评论(0)
推荐(0)

> 版权声明:仅供学习。 > 持续更新中...也算是个人学习的监督与激励吧。 > OI路漫漫,且行且珍惜。 > OI太颓了,模拟赛都打不动,班级全是大佬。 # 算法综合 - $Algorithm$ ## 杂题综合 ### Index 1: While moving to a new compound
数学 乘法逆元 递推求乘法逆元 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef double db; const int N=3000010; ll inv[N],n,p; int main() {
仅供学习。 给定长度为 \(2^n\) 两个序列 \(A,B\),设 \[C_i=\sum_{j\oplus k = i}A_j \times B_k \]分别当 \(\oplus\) 是 or,and,xor 时求出 \(C\) or \[c_{i}=\sum_{j|k\in i} a_{j} b
圆焰太甜了 红蓝太甜了 黄白太甜了 至于QB?剁了!
与简单版的思路完全一致,只需要改一下范围。 可以去看我简单版本的博客。 题目简化和分析: 给您一个数组,在其中选择若干个数使得: 任意前缀和 $\ge 0$ 数量尽可能的大 我们可以使用贪心策略,策略如下: 如果当前数为非负,必喝。 而毒药尽可能的多喝,如果喝没了,就把最小的吐了。 以上操作可以采用
题目简化和分析: 因为要求长度最小,所以我们每个字符就应该发挥最大的价值,不会有没有作用的字符。 设有 $x_1$ 个 $c$ ,$x_2$ 个 $o$ ,$x_3$ 个 $d$ ,$x_4$ 个 $e$ ,$x_5$ 个 $f$ ,$x_6$ 个 $o$ ,$x_7$ 个 $r$ ,$x_8$ 个
题目简化和分析: 这题就是判断将一段翻转后是否能变为升序的数组。 我的方法是保存原数组每一个数出现的位置(相同任意一个),让后另外用一个数组存储排好序后的原数组,逐一进行比较。 若同,则跳到下一个元素比较继续。 若不同,枚举当前位置到排序数组当前元素在原数组中的位置,时候一直为降序。 若多次出现不同
题目简化和分析: 使得 $a \times b\times c=n~~~~(a\ne b\ne c)$ 思路: 先枚举最小的 $a$ ,(以下程序的返回值为最小因数(有部分优化),即 $a$ 的值) int query(int n){ if(n%2==0) return 2; for(int i=3
题目简化和分析: 交换数组使其变为升序,满足交互的两数 $a_i$ 与 $a_j$,$ \min{a_i(1\le i\le n)}|\gcd(a_i,a_j)$ 。 简单思维题,Div.2 C 有点不太合适。 因为数组的最小值始终不变,所以直接比较即可。 Solution: #include<bi
浙公网安备 33010602011771号