随笔分类 -  题解

各种题的题解哩
摘要:一个非常离谱的题。 首先有结论,如果有 $w$ 使贪心不为最优解,那么比 $w$ 小的第一个 $a_i$,用贪心法求面值为 $a_i-1$,除了最后选的一个数 $a_j$ 会比原方法多选一个,其余与用动态规划求 $w$ 面值的选取方式一样。 理论求法过于多,这次我们选择一个通俗易懂的讲法。 如果我们 阅读全文
posted @ 2023-02-24 13:38 Gmt丶Fu9ture 阅读(43) 评论(0) 推荐(0)
摘要:首先我们要学习一下费用流。 费用流是什么呢,可以理解为边带权值的网络流。 那么最小费用最大流,是指在满足最大流的情况下的最小费用。 那么我们就要实现这个过程。 首先对于一条有向边,建立的反向边的权值为原权值的相反数。 所以明显图带负数,只能用 SPFA,~~泪目~~。 每一次跑一次 SPFA 找到最 阅读全文
posted @ 2023-02-24 13:38 Gmt丶Fu9ture 阅读(32) 评论(0) 推荐(0)
摘要:理解题意后可以把题目看成一个覆盖线段的问题。 对于点在 $-m$ 上,看成在 $m$ 上。 对于 $l<r$,不用处理。 对于 $l>r$,将问题看成 $(l,m)$ 和 $(-m+1.r)$ 两个区间。 对于正常处理点的问题,Splay 可以在 $l$ 时加入这个点,$r+1$ 时删除这个点。 但 阅读全文
posted @ 2023-02-24 13:38 Gmt丶Fu9ture 阅读(26) 评论(0) 推荐(0)
摘要:首先可以想到一个位置状态会从与自己相差不到一行,相差列为奇数的列转移过来,那么很明显对于每一行可以求奇数位置或是偶数位置的前缀和。 设 $f_{i,j}$ 为跳到第 $i$ 行第 $j$ 列的方案数,$g_{i,j}$ 代表第 $i$ 行第 $j$ 列的 $\sum_{k\ne j(\bmod 1) 阅读全文
posted @ 2023-02-24 13:37 Gmt丶Fu9ture 阅读(38) 评论(0) 推荐(0)
摘要:由于一些不可抗拒的原因,$n\ge 22$ 无解。 那么只用考虑 $n\le21$ 的情况即可。 由于 $n$ 的范围缩小,导致状压又可以重新使用,所以考虑状压。 设 $f_i$ 为 $i$ 中所有的集合能被表示的最小下标。 那么对于任何一位 $j$ 如果在 $i$ 中,那么: $f_i=\max( 阅读全文
posted @ 2023-02-24 13:35 Gmt丶Fu9ture 阅读(28) 评论(0) 推荐(0)
摘要:首先对于数 $a_i$ 和一个 $sum$ 内被全部覆盖的区间,若 $a_i\le sum$,那么可以将区间覆盖到 $a_i+sum$,经典背包,不证明。 那么通过这个可以推出来一种暴力做法,每一次找到一个在 $l$ 到 $r$ 小于等于 $sum$ 的数,将 $sum$ 加上它,然后再找,初始 $ 阅读全文
posted @ 2023-02-24 13:35 Gmt丶Fu9ture 阅读(181) 评论(0) 推荐(0)
摘要:据说是NP问题。 很明显我们要先预处理出来勾股数对。 但由于数过于大,所以常规的枚举是解决不了问题的。 但也貌似没有什么很好的办法可以立马找到一个数的勾股数对。 所以只能缩减枚举范围。 已知: $$\begin{aligned} (x-y)^2+4xy&=(x+y)^2\ (x^2-y^2)^2+4 阅读全文
posted @ 2023-02-24 13:34 Gmt丶Fu9ture 阅读(55) 评论(0) 推荐(0)
摘要:很明显期望 dp。 开始时想到设 $f_i$ 为 $i$ 到 $n$ 的期望值。 但由于这题是异或,所以要拆分成 $2$ 进制,分成每一位的子任务解决。 那么改变定义,设 $f_i$ 为点 $i$ 到 $n$ 第 $x$ 位为 $1$ 的期望值,$r_i$ 代表 $i$ 号点的出度。对于每一条边 $ 阅读全文
posted @ 2023-02-24 13:34 Gmt丶Fu9ture 阅读(30) 评论(0) 推荐(0)
摘要:IDA* 练习题 由于题目问最小步数,很好想到可以用迭代式加深搜索,或是广搜,这里用的是深搜。 枚举每次搜索的深度,也就是移动的步数,然后正常深搜,若达到目标解,返回 $\text{ture}$,然后输出深度即可。 无效性剪枝:减去自己之前来过的方向,也就是如果自己上一步往上走,下一步就不能往下走之 阅读全文
posted @ 2023-02-24 13:33 Gmt丶Fu9ture 阅读(38) 评论(0) 推荐(0)
摘要:哈希+记忆化搜索。 正常搜索就对于每一次比赛有三种情况,第一组赢,平,第二组赢,然后判断最后分数是否符合题意即可。 剪枝1:无效性剪枝,若一个组枚举完后没有分数符合条件,返回 $0$。 剪枝2:无效性剪枝,若一个组还剩的比赛全胜也无法符合分数条件,返回 $0$。 剪枝3:优化搜索顺序,从分数大的来搜 阅读全文
posted @ 2023-02-24 13:32 Gmt丶Fu9ture 阅读(26) 评论(0) 推荐(0)
摘要:适当进行骗分是真的有用。 $40pts$: 对于每两个点建立一条边,然后在贪心每次求最小边,在期间进行01背包即可,01背包用于处理模数。 设 $dp_{i,j}$ 代表以 $i$ 为编号的一个并查集,子集的和模数是否可以为 $j$。 每次将 $t$ 集合合并给 $i$ 集合。 $dp_{i,j}| 阅读全文
posted @ 2023-02-24 13:31 Gmt丶Fu9ture 阅读(51) 评论(0) 推荐(0)
摘要:做这题的心路历程十分神奇。 看到题,想到哈希匹配。 对于每一个 $x_i$ 若可以为 $x_j$ 的前缀和后缀,处理 $x_i$ 的哈希值,求 $x_j$ 的前缀和后缀哈希即可。 然后本机上跑不过,就进行了分裂循环,优化调用 map 次数等等一系列优化。 ~~结果发现数据比我想象中的水的多。~~ 还 阅读全文
posted @ 2023-02-24 13:30 Gmt丶Fu9ture 阅读(38) 评论(0) 推荐(0)
摘要:读完题后可以首先发现,编号 $1$ 和 $n$ 的点都是必须要选的,否则 $\text{Slavko}$ 可以选择 $2$ 或者 $n$ 取得胜利。 而对于中间的数如果存在两对数 $(l_1,r_1)$ $(l_2,r_2)$ 若 $l_1< l_2$ 且 $r_1\le l_2$ 那么可以选择数 阅读全文
posted @ 2023-02-24 13:29 Gmt丶Fu9ture 阅读(27) 评论(0) 推荐(0)
摘要:本题解在求无解的情况下优化了下。 通过分析样例,我们可以发现如果一个节点有多个 Dlihc,那么这些 Dlihc 对应的权值必须一样,否则可以无限延伸下去。 因为一号节点没有 Tnerap,所以一号节点一定不能更新,加上关系成树型结构那我们可以看成一个根节点把一棵树分成了几个子任务。 若子树不为链, 阅读全文
posted @ 2023-02-24 13:29 Gmt丶Fu9ture 阅读(23) 评论(0) 推荐(0)
摘要:首先很好想到我们应该预处理出来每一个巫妖王能攻击到的精灵。 那么这就是一个几何题。 对于每一组精灵与巫妖王,设巫妖王坐标为 $(x_1,y_1)$,精灵坐标为 $(x_2,y_2)$。不考虑树的影响,若巫妖王要看到精灵,那么得满足: $(x_1-x_2)^2+(y_1-y_2)^2\le r^2$ 阅读全文
posted @ 2023-02-24 13:27 Gmt丶Fu9ture 阅读(27) 评论(0) 推荐(0)
摘要:做完后发现很多题解都是有些细节问题的,对于向上与向下取整非常混乱。 第一次做迭代加深搜索的题,记录一下。 所谓迭代加深搜索,就是在求搜索树的深度的问题中,枚举层数,取最优解。 然而广搜其实感觉上能做到,但广搜在分支太多的情况下,容易爆栈,所以推出了迭代加深搜索。 本题一来肯定想到爆搜,很好的拿到 $ 阅读全文
posted @ 2023-02-24 13:27 Gmt丶Fu9ture 阅读(92) 评论(0) 推荐(0)
摘要:这题貌似是个网络流?分层图?广搜?但实际上是个最短路的板子。 第一次做这题感觉上是一个建图加跑 dijstra 的模板,然后就照着打了。 想到对于每一个点,与自己所有相距小于等于 $k$ 的边进行建立一条花费为 $w$ 的边,对于每一条 $(x1,y1) 到 (x2,y2)$ 的边的意义是从点 $( 阅读全文
posted @ 2023-02-24 13:26 Gmt丶Fu9ture 阅读(33) 评论(0) 推荐(0)
摘要:典型Splay练习题。 开始建 $n$ 个Splay,每一次建边用并查集判断是否在一个子图,不在就合并,即把一个Splay的所有点全插入到另一个Splay中,需要合并的点可以用vector存储。 但这样复杂度极限为 $O(n^2\times \log(n))$,会T,所以要借助启发式合并。 证明启发 阅读全文
posted @ 2023-02-24 13:26 Gmt丶Fu9ture 阅读(22) 评论(0) 推荐(0)
摘要:没事打了个Splay,然后调了3h。 觉得题解的找前驱后继与删除复杂了点,主要讲一下这的思路。 由于平衡树中每一个点代表的区间互不相交,所有平衡树满足 $l,r$ 两个值的BST。 以 $l$ 为第一关键字排序,其他操作同Splay。 找后继的时候插入一个 $(r,r)$ 的点,然后旋转至顶端,找到 阅读全文
posted @ 2023-02-24 13:25 Gmt丶Fu9ture 阅读(38) 评论(0) 推荐(0)
摘要:一道十分不错的分治题。 因为要进行异或操作,所以先将所有数拆成二进制数。 可以知道的是对于每一个二进制数,比较时是先比较最高位,然后接着往下面比,直到同一位上一个为 $1$,一个为 $0$。 所以对于每两个不相同的二进制数,只要对它们第一个不同的地方异或 $1$,即可交换两数大小。 那么我们可以从 阅读全文
posted @ 2023-02-24 13:16 Gmt丶Fu9ture 阅读(52) 评论(0) 推荐(0)