随笔分类 - OI
摘要:二分答案+dijkstra 这道题有被改编的另一道题:“通往奥格瑞玛的道路”,相信你也做过吧。。。 看到“交的费用中最多的一次最少是多少”,就应该想到二分答案了。 所以我们二分费用,判断最多的费用是一个$mid$的时候可不可以成功到达终点。 如何判断能否成功到达终点? 不要说用SPFA!因为……被卡
阅读全文
摘要:线性筛+背包 讲道理这道题在线性筛后就让我们想到暴力的做法,毕竟写了$n \leq 1000$。 其实你要用背包做的。 dp也很显然的,就用一维来表示和不超过$i$的最大的所谓约数和。 为什么是所谓的呢?你约数和是包括自己的。所以在这道题中你要自己把数字本身手工去掉。 当然不是叫你在线性筛的时候弄掉
阅读全文
摘要:哈!树剖+线段树的水题! 讲道理前面的那道“月下毛景树”已经把这种化边权为点权的考的淋漓尽致了。 ~~特别在于这些题的码量~~ 我早上就直接打了一遍,然后就美妙地WA了。 下午再随便地打一遍,突然明白了早上错了哪里。 重新摸一遍板子,交上去,A了。。。 把早上那个唯一写错的地方改了,交上去,也A了。
阅读全文
摘要:复习历年大模拟题系列 具体的做法框架大家都懂,就是一个card数组存你的牌,然后忽略所有的花色,然后就是一个自带card数组的dfs。 核心做法还是那十个字: 暴力枚顺子,贪心出散牌 顺子什么的用回溯法的框架去解决,三带四带的各种情况也用回溯法的样子去解决,最后的散牌直接出单张或者出对即可。 增强版
阅读全文
摘要:爆搜+剪枝 or 类似于区间dp的dp 先把题目中的条件转化成我们容易解决的。 首先当然是化环成链。做法就是开两倍的空间,然后枚举每一个点开始的情况。 (或者你用高深的膜法也可以啊) 这里提供两种方法,小菜鸡只会第一种。 法一:爆搜+剪枝 大体思路就是枚举现在已经切成了多少段,当切到$m$段了就停止
阅读全文
摘要:dp套spfa是最骚的qwq 首先要说明一点:这道题数据比较小,允许你用你觉得似乎过不了的复杂度过! 总体思路是这样的: 我们定义一个 数组表示第$i$天到第$j$天(闭区间)内的最短路,再定义 为前$i$天的最小代价。 那么就可以列出这么个柿子: $$dp[i]=max_{j=1}^{i 1}dp
阅读全文
摘要:分层图最短路系列题目 分层图最短路的题目有一个非常容易看得出的把戏:让k条边免费。 对于能让$k$条边免费的数据,我们开$k+1$层图。每一层图内部正常连点,不同的是前一层的图的起点连一条权值为0的边到下一层的终点,等价于这条边免费了。 当然,这么建图的话这个图是挺大的。所以跑最短路的效率就特别重要
阅读全文
摘要:带权有向图上点不重复的最长路径 状压dp 来自仓鼠老师的话: 这题实际上就是带权有向图上点不重复的最长路径。从理论上来说,应该是个NP问题。 就是把每一句话设为一个点,然后可以$O(n^2)$的连边,怎么连边就不说了吧。。 设 为当前走到$i$点,已走的状态为$j$。然后就可以愉快地进行状压dp。
阅读全文
摘要:看题解看得快晕了 总体的思想是一种配对的思想,具体是这样的: 在初始魔板中选择一列来与终止状态的魔板的第一列配对,记录哪些行是没有互相对齐的。 因为对行我们是可以执行翻转的操作的,所以只需要依次判断后面的配对是否遵循前面的配对原则,如果违反了的话这种情况就无解。 直接写代码吧:(代码抄题解的) 一个
阅读全文
摘要:上一篇博客题目的普遍情况 这里跟前面那道题有点不同的地方是它的半径变得任意可变,并且给了一个初始的节点已经覆盖,并且最终的目的是让所有的叶子都覆盖。 做法跟上道题是类似的。 无根树还是变成有根树好,既然直接给了我们一个特殊点,那就直接拿它做根。 首先先dfs一下,判断哪些点是叶子,顺便统计出dep数
阅读全文
摘要:贪心:蓝书一道例题的特殊情况 这道题的初始化条件是一个消防站都没有,让你用最小的点去覆盖所有的点。每个点能覆盖的范围是2。 首先,无根树肯定转化为有根树,直接取1为根就好了。 这里有一个贪心的思想:每次我取出那个深度最大的没被覆盖的节点,要去覆盖它,我应该取那个节点? 取它自己会浪费一个半径,只取它
阅读全文
摘要:递推 or 数论+高精都可以解决的毒瘤题 这里就把两种方法都介绍下吧。 递推做法 设 为当前是$i$位数,最高位为$j$的方案数。 这里的思想是从左到右的填出来,只要$i 1$位的最高位比当前的最高位还高,那么就可以转移。 写成数学式就是$dp[i][j] = \sum_{k=j+1}^{limit
阅读全文
摘要:古老的dp好题 50分的做法是肯定能想出来的。设 表示当前走到$i$行$j$列,两人瓶子的容量分别为$k$和$l$,现在这一步是由谁走的。 但是显然数组开不下。转移也挺麻烦的。 满分做法: 直接把两人瓶子的容量合成一维就可以了。合并为两人容量的差值。 转移有一个问题:他们的差值可能是负的啊! 直接像
阅读全文
摘要:区间dp 或 树形dp的小题目 这道题我刚学OI的时候就看过,结果以为要暴力建出所有形态的树,其实还是太naive了啊! 因为给你的是中序遍历,而且还是有序的$1~n$,所以你可以随便枚举一个点做当前子树的根,那么左边的中序就是左子树了,右边同理。 这样写可以很方便地写一个记忆化搜索(不会递推),随
阅读全文
摘要:约数个数和 这里还是用到辣个公式: $$\sum_{i=1}^nd_1(i)=\sum_{i=1}^n\lfloor \frac{n}{i} \rfloor$$ 注意:这个公式对总体成立,对个体不成立! 所以你就有两种思路: 1. 转化为“余数求和”那种思路,使用除法分块来解决这打道题。 2. 直接
阅读全文
摘要:二分答案+取log+差分约束+判正环 题目中A能$k$倍杀B的条件是:$s[A] \geq k \times s[B]$ 第一个flag导致没人女装需要满足:$s[A] \geq k \times s[B]$。意思是A成功地$k$倍杀了B导致A不用女装。 第二个flag导致没人女装需要满足:$s[B
阅读全文
摘要:一个类似于LIS的dp 既然时间都按顺序给你了,那么就可以很轻松地想出一个乱搞的dp。 设 为前$i$只鼹鼠出现的时间段内,最多打死的鼹鼠。 那么有显然的转换过程,也就是判断他规定时间内走不走得过来,如果走得过来就直接转移即可。 最后的答案是$max(dp[i])$,不知道为什么哩! 总结: 千万要
阅读全文
摘要:dlT1让人心态爆炸qwq 30pts做法:暴力or你的dp写挂(我就dp写挂了) 50pts做法:在dp里面注意一点,$2^{cnt}$可能会爆long long!那些求出来的答案明显爆long long的直接用整个序列的和$10^{10}$取min。 满分做法: $\lceil log_2{10
阅读全文
摘要:不同于模拟退火的一种优化算法 我本来一看到这道题就打了个模拟退火,但是死活模拟不对,样例死活过完就是重心。 翻题解发现可以用向四周的步长移动来求出最优解。不知道这叫什么名字但肯定不是模拟退火。 算法的思想是这样的: 给出4个方向上下左右,然后初始化步长,如果当前新答案比老答案好就更新这个答案,否则步
阅读全文
摘要:99年的NOIP那么毒瘤的吗? 我一眼看上来就是爆搜,赤裸裸地爆搜! 结果交上去只对了两个点。 然后就跟着题解的另一个爆搜跟着打,但是隐隐约约感觉那个也不对,但是多对了一个测试点。 最后一个测试点~~打表过的。。。~~ 确实不明白为什么爆搜过不了这道题。。。 代码: cpp include incl
阅读全文

浙公网安备 33010602011771号