随笔分类 - 题解
摘要:P1450 硬币购物 容斥 || + 单调队列优化 容易看出是个多重背包,然后拿单调队列优化一下后,计算量为 这种做法的话就是单调队列优化板子题 #include <bits/stdc++.h> using namespace std; typedef long long
阅读全文
摘要:Sleepy Cow Herding S Sleepy Cow Sorting 的升级版,从 头牛变成 的情况 分类讨论 + 双指针 先把答案本就连续的特判丢掉 最大值 最大值就尽量把每个空位都踩一遍,模拟一下会发现,第一跳的空隙一定没办法踩到,因此考虑两边第一跳谁跳的短,就从哪边开
阅读全文
摘要:Sleepy Cow Sorting 分类讨论 先把答案本就连续的特判丢掉 最大值 最大值就尽量把每个空位都踩一遍,模拟一下会发现,第一跳的空隙一定没办法踩到,因此考虑两边第一跳谁跳的短,就从哪边开始 最小值 跳一次 如果有两个相邻的,正好中间有个空位,就只用跳一次 跳两次 两次一定能结束,第一次跳
阅读全文
摘要:Colorful Operations 珂朵莉树 + 树状数组 || 线段树 单独维护点当前的值 和 当前颜色的值 这样就可以分开维护颜色和点的值,把复杂的操作 变成 每次更改 的颜色 a->b 的时候:$val_i = val_i + tag_
阅读全文
摘要:Willem, Chtholly and Seniorious 珂朵莉树 慕名而来 操作 直接排序是我没想到的,因为随机数据所以才能过吧 操作中忘了开 , #include <iostream> #include <cstdio> #includ
阅读全文
摘要:Physical Education Lessons 珂朵莉树 模板 #include <iostream> #include <cstdio> #include <set> using namespace std; #define It set<ran>::iterator struct ran
阅读全文
摘要:Mahjong 爆搜 先搜索出所有胡牌的情况,然后根据胡牌的情况,随便丢掉一张牌,则肯定是听牌状态 然后枚举所有的听牌状态,计算其听牌集合,存起来即可 #include <iostream> #include <cstring> #include <string> #include <cstdio>
阅读全文
摘要:Game Plan 思维 && 环 考虑每个数字都作为一个点,每行同时出现就建一条双向边,形成若干个连通块 如果一个连通块是一颗树,则有该连通块中有个点必然取不到,直接贪心取最大值取不到即可 如果存在一个环,则该连通块中所有点都可以取到 #include <iostream> #include <c
阅读全文
摘要:Problem B. Genshin Impact 概率 考虑一段 中,被燃烧的时间段及其概率 只需要计算会影响到这一段的射箭点燃火的概率即可 也就是这一段 开头的那次射箭,以及上次射箭(如果有可能导致燃烧的话),上上次射箭,上上上次射箭..... 听说会有精度问题?还好赛中直接让队
阅读全文
摘要:Infection 树形dp 表示以 为根的子树,有 个感染的结点,无 / 有感染源的概率 统计答案的时候要乘上父节点不被传染的概率,表示只传染该子树,不蔓延到父节点那边 这个状态设计是默认根一定被感染 看了下别人的源码,改了一种树形 的风格
阅读全文
摘要:Customs Controls 2 并查集 + 拓扑 看了题解之后补的,题解写挺好的 考虑到 距离相等的点进行并查集合并(指向同一个点的点,到 的距离相等),缩点后重新建边,判断是否有环,若有说明不成立 成立之后拓扑处理当前点的最大深度,这个深度就代表 到该点(缩点后的)的
阅读全文
摘要:Takahashi's Solitaire 双指针 && 尺取 先排个序,然后把数组扩展到 ,为了处理循环的情况 然后双指针跑一下,限定 扩展的条件为:当前数字等于前一个 或者 比前一个大 或者 尺取的第一个点 为了防止循环重复的问题,要限制一下尺取的长度不超
阅读全文
摘要:Crystal Switches 分层图 + 按钮的操作就是走分层图的边 因此就构建两张图,然后将特殊点加一个双向边 跑一下就行 #include <iostream> #include <cstdio> #include <algorithm> #include <
阅读全文
摘要:Sorting a Matrix 拓扑序 首先可以明确无论怎么交换行列,原本在同一行或者同一列的元素,还是会处于同一行或者同一列 条件一 每行每行地看,如果能满足从小到大的条件,说明第 行的值域 与 第 行的值域 $[min_{i - 1},
阅读全文
摘要:STA-Station 换根dp 模板 去到相邻的点可以根据去到的点的子树有多少个结点,来调整当前的值 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <queue> #inc
阅读全文
摘要:消防 树上直径 + 尺取 考虑答案的路径一定是在树上直径,因为离树上任意一个点最远的点一定是直径的两个点其中之一 因此先 一下找出直径两个端点 从其中一个端点出发,尺取长度小于 的所有答案贡献即可 每次尺取的最远距离由三个部分组成:直径最开始那个端点到 的距离、直径最后那
阅读全文
摘要:最大子树和 树形dp 对于一个节点来说,如果删除掉一个连接子节点的边,则以该子节点为根的子树上面的贡献都会变成 设计状态:,表示以 为根的子树中,贡献值最大为多少 状态转移:, 为 的子节点, 的话表示删
阅读全文
摘要:没有上司的舞会 树形dp 给每个结点 设计状态:, 表示 不参加, 表示 参加 表示在以 为根的子树中,当前 结点 参加/不参加 的状态下,最大的快乐值 状态转移: 当前结点为 ,遍历其所有子节点
阅读全文
摘要:Distance to the Path 思维 + 树链剖分 首先与树链剖分无关,先考虑如果只更新一个点的情况 因为更新一个点,它既能向根的方向更新,又能向子树方向更新,非常难维护,于是我们只考虑维护一个节点的子树结点的增值 设数组 为与 结点距离为 的 $j
阅读全文