10 2023 档案
aaa
摘要:https://class.51nod.com/Contest/Problem.html#contestProblemId=6392 看似数据结构,实则数学题。 而且题解做法和“原题”的做法没有啥关系。 先把式子换一种写法。 原式等于 \(\sum\limits_{l=1}^n \sum\limit
最优贸易
摘要:# [P1073 [NOIP2009 提高组] 最优贸易](https://www.luogu.com.cn/problem/P1073) 我们考虑一个中间点,求出从 出发到它的最小买入价,从它到 的最大卖出价。(从它到 的求解是在反向图中从 开始跑) 可以发现,这个
[HEOI2016TJOI2016]排序
摘要:P2824 [HEOI2016/TJOI2016] 排序 直接模拟复杂度爆炸,有观察到它只要求一个数。 思维十分清奇。 我们先考虑一个序列,如果全是 0/1,该怎么做。 发现这个问题很好做,修改区间时只需要先查询一的个数,然后将前面/后面全部置1,其他置0。 然后我们考虑怎么转化。 发现可以二分答案
区间方差
摘要:# [P5142 区间方差](https://www.luogu.com.cn/problem/P5142) 单点修改,区间查询。 更新很简单,直接赋值,然后更新(注意 可能爆 `int`)。 对于询问,我们考虑完全平方公式 ,我们发
日记和最短路
摘要:# [A 日记和最短路](https://class.51nod.com/Contest/Problem.html#contestProblemId=6276) ## 一句话题意 给定一个有权DAG(权值都是字符串),问从 走到 ,求在长度最小的情况下使得字典序最小和字典序最小。 $1
天天爱跑步
摘要:P1600 [NOIP2016 提高组] 天天爱跑步 我们首先考虑满足可以被观测到的条件。 为了方便,我们将一条路径分为两部分,一部分是往上的(包含LCA),另一部分是往下的(不包含LCA)。 对于第一部分,满足 ,是固有属
运输计划
摘要:# [运输计划](https://www.luogu.com.cn/problem/P2680) 我们考虑先预处理出 LCA、每条路径的长度。 然后发现这个问题具有二段性,所以可以使用二分。 对于mid的路径,我们需要删除至少一条边,根据题目条件,所以当且仅当删除一条。 如何求解这些>mid的路径的
贪婪大陆
摘要:P2184 贪婪大陆 我们考虑记录每个位置作为左右端点的次数的信息。 直接在两个位置处+1. 查询区间相当于=左端点在 左侧(包含边界)的区间个数-右端点在 。 单点修改,区间查询,树状数组即可。 #include<cstdio> #include<iostream>
无聊的数列
摘要:# [P1438 无聊的数列](https://www.luogu.com.cn/problem/P1438) 我们考虑原数列 的差分序列 。 1. ,将区间 内的数增加
NOIPTG联合权值
摘要:# [P1351 [NOIP2014 提高组] 联合权值](https://www.luogu.com.cn/problem/P1351) 我们对于每个点计算它的子结点的 。 如图,发现贡献有三类: 1. 直接计算。 2. 需要剔除自己这个点,对于 `sum` 直接减去
联合权值
摘要:# [P1351 [NOIP2014 提高组] 联合权值](https://www.luogu.com.cn/problem/P1351) 我们对于每个点计算它的子结点的 。 如图,发现贡献有三类: 1. 直接计算。 2. 需要剔除自己这个点,对于 `sum` 直接减去
疫情控制
摘要:# [P1084 [NOIP2012 提高组] 疫情控制](https://www.luogu.com.cn/problem/P1084) 我们先考虑允许走到根的做法。 首先就是二分答案,然后每个军队尽可能往上跳跃,可以用倍增。(往下不优),最后检查是不是满足要求就行了。 不允许到根,所以可能有的军
树的重心
摘要:# [[CSP-S2019] 树的重心](https://www.luogu.com.cn/problem/P5666) 需要了解重心的很多性质: 1. 重心有 个,满足删除重心后形成的连通块最大大小 ,若有 $2
树的重心
摘要:# [模板1:树的重心](https://wikioi.cn/problem/584) # [模板2:树的重心](https://www.acwing.com/problem/content/848/) 1求重心,2求重心删除后的最大连通块。 # 基本方法 对于每个点,我们计算一下它分离后的最大连通
函数调用
摘要:# [P7077 [CSP-S2020] 函数调用](https://www.luogu.com.cn/problem/P7077) 我们考虑如果没有第三种函数,如何解决这个问题。 发现,对于每个1(1类),我们考虑在它之后执行了多少个2,然后累乘,就是这个增加操作实际的贡献。我们只需要倒序,维护一
五行学说
摘要:# [五行学说](https://iai.sh.cn/problem/28) 带权并查集。 我们发现,克一次相当于生两次。 如图,火、土、金的部分。 发现,这样这个问题就同食物链问题很像了。 ```cpp #include #include using namespace std; const in
食物链
摘要:# [P2024 [NOI2001] 食物链](https://www.luogu.com.cn/problem/P2024) 带权并查集。 我们维护每个点到根的距离,为 表示同类,为 表示吃根, 表示被根吃。 判断合法只需要将 作差即可。 连接时可以 $f
斗地主
摘要:# [P2668 [NOIP2015 提高组] 斗地主](https://www.luogu.com.cn/problem/P2668) 我们发现,除了顺子以外,其他的出牌方式和大小无关,我们先爆搜所有的顺子,搜索完之后剩下的牌我们考虑不用顺子,用其他牌型。 此时我们关心的只有单牌、对子、三个、炸弹
半树问题
摘要:# [半树问题](http://topoi.top/problem/39057) 我们考虑每条边的贡献就是所有经过它的路径,恰好分成这条边的子树内的点、子树外的点两组,路径的端点一定是这两组点中各取一个点。乘起来再乘上边权,就是这条边的贡献。 于是问题被转换成了在树上选取最长的路径了,这就是树的直径