摘要:
Codeforces Round 944 (Div. 4) 需要一些trick的一场 H: 2 -sat的板子,已经计入2-sat专题,此处不再详细描述。题目用矩阵包装和博弈包装,我们需要慢慢读题,分析样例,找到问题的关键点。 G:题意:给定一个数组,数组中任何两个数异或<4的数对可以交换位置 ,可 阅读全文 »
摘要:
一类以并查集在建树过程中维护各种信息的值——克鲁斯卡尔重构树前身 第一次见到是在zzu的校赛中,印象深刻 H.Sum of Maximum Weights 题意:给定一棵树,求树上任意两点间最短路径中的最大边权的sum 官方Solution: 我们先将边按权值排序,这样每次处理的都是当前的最大权值 阅读全文 »
摘要:
bitset bitset前身:普通状态压缩的优化 以cf937G为例,对于邻接矩阵的由二维压缩到一维 #include <bits/stdc++.h> using i64 = long long; void solve() { int n; std::cin >> n; std::vector<s 阅读全文 »
摘要:
从子集和问题到and卷积 枚举子集: int u=15; for (int s = u; s; s = (s - 1) & u) { b=s ; cout<<b<<endl; } /* 1111 1110 1101 1100 1011 1010 1001 1000 0111 阅读全文 »
摘要:
01trie特训2 题意:给定一个含有 n 个元素的数组 Ai,你可以选择两个不相交的子段。求出这两个子段内的数的异或和的差值的最大值。 Sol:考虑枚举两段的分界点,对于较短的两段来说可能会有多个分界点但这样我们求的是答案的超集,一定会包括答案的。对于一个分界点,我们先考虑如果要求以左边区间必须包 阅读全文 »
摘要:
曼哈顿距离与切比雪夫距离 距离 - OI Wiki (oi-wiki.org)已经说的比较清晰,提取要点和结论便于复习使用。 曼哈顿距离:\(d \left(\right. A , B \left.\right) = \left|\right. x_{1} - x_{2} \left|\right. 阅读全文 »
摘要:
概率dp 首先是正着递推的计算概率的dp问题 https://ac.nowcoder.com/acm/contest/28263/A 纯数学题 对随机的数字大小分类讨论,计算概率的时候利用高中几何概型的线性规划手法进行计算。 double g=0.5; void solve(){ double k, 阅读全文 »
摘要:
分治初步 归并排序求逆序对 Sol:在归并排序过程中,本身就是分治思想,递归的对左区间排序,右区间同理。对于已经有序两段进行合并只需要 的时间,递归共 层,时间复杂度为 debug:1.对于没有到达边界的一段也需要放入临时数 阅读全文 »
摘要:
二进制拆位 题意:给定一个数组,求所有子区间的区间异或和的sum Sol:先做异或前缀和,原问题则变成求数组中任意两个数的异或,然后全部相加起来的结果。我们考虑每个元素每位的贡献,只需要统计前面(偏序计数)有多少个数的本位与自己不同。 //这个题目显然应该作为模板题,似乎没有找到直白的在原数组上作拆 阅读全文 »
摘要:
从启发式合并到Dsu on Tree 传统启发式合并 [HNOI2009] 梦幻布丁 题目描述 个布丁摆成一行,进行 次操作。每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色。 例如,颜色分别为 的四个布丁一共有 段 阅读全文 »
摘要:
倍增大专题 [AHOI2008] 紧急集合 / 聚会 - 洛谷 题意:给定一棵树,多次查询费马点(bushi 费马点的含义是:到三个点的距离之和最小 Solution:考虑画图发现树上三点两两求lca,必然至少两个相同,然后我们只需要让费马点为另一个点就可以了,因为这一段路程只需要一个点走就最好了。 阅读全文 »