摘要: 容易发现单峰函数取到极值时导数为0,而导数又是单调的,所以可以直接在导数上二分。 洛谷板子: #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; #def 阅读全文
posted @ 2021-10-20 08:50 Smallbasic 阅读(53) 评论(0) 推荐(0)
摘要: 给定一个 \(n\) 个点 \(m\) 条边的无向图和 \(k\) 个关键点,求关键点间两两距离的最小值。 正解: 点两两距离最小值的套路是新建一个源点 \(S\) 和一个汇点 \(T\),都向关键点连边权为0的边,此时 \(S\) 到 \(T\) 的最短路就是答案?注意到我们从 \(S\) 走到一 阅读全文
posted @ 2021-10-19 21:31 Smallbasic 阅读(29) 评论(0) 推荐(0)
摘要: Mr.Hu 觉得在学习过程中,需要举一反三,做一题要理解透,然后遇到相似的问题时能类似地转化。所以想了一道和以前类似的题目,相信聪明如你,肯定能轻而易举地解决。 Mr.Hu 会给你 \(n\) 个非负整数,然后从中选 \(k\) 个出来,然后把这 \(k\) 个数按位或起来,Mr.Hu 想知道有多少 阅读全文
posted @ 2021-10-15 21:45 Smallbasic 阅读(124) 评论(0) 推荐(0)
摘要: 考虑到都是排列,值域连续,于是 \(a\) 都加 \(x\) 之后相当于在值域上平移了一段,也是连续的。由于要进行比较,个很容易想到哈希。\(a\) 的哈希值很好维护,每次平移一位加上 \(\sum BASE^i\) 即可。考虑如何快速取出 \(b\) 中在这段值域内的数的哈希值。 不妨设 \(p[ 阅读全文
posted @ 2021-10-15 21:20 Smallbasic 阅读(42) 评论(0) 推荐(1)
摘要: 填坑。 题目给了一个trie树,询问又是类似字符串匹配,容易想到建立AC自动机。 模拟字符串匹配的过程,发现 \(x\) 在 \(y\) 中出现次数相当于在原来的trie中 \(y\) 有多少个祖先一直跳fail能跳到 \(x\)。 我们新建一颗fail树,从 \(fail[i]\) 向 \(i\) 阅读全文
posted @ 2021-10-15 09:36 Smallbasic 阅读(27) 评论(0) 推荐(0)
摘要: 显然我们需要 \(x|y\),不妨令 \(n={y\over x}\),则变成求 \(\gcd(a_1,a_2,...,a_n)=1\) 且 \(\sum a_i=n\) 的个数。 令 \(f(n)\) 为答案,考虑反演。设 \(g(n)\) 为满足后面一个条件的序列个数,由插板法知: \(g(n) 阅读全文
posted @ 2021-09-15 17:27 Smallbasic 阅读(25) 评论(0) 推荐(0)
摘要: 正着来不好,考虑反着来。设 \(f_{i}\) 为第 \(i\) 个点开始走到第 \(n\) 个点的期望步数。 考虑什么情况会最优,显然是能到的点的期望都比它大,并且j不能只有自环,于是乎有方程。 \(f_i=\sum_j {f(j)\over 1-\prod (1-e[j][k])}\cdot e 阅读全文
posted @ 2021-09-10 21:31 Smallbasic 阅读(38) 评论(0) 推荐(0)
摘要: 容易发现一次函数的期望是关于位置的一次函数。我们可以由此猜结论:二次函数的期望也是关于位置的二次函数。 考虑插值,一次函数实际上可以看成二次函数 \(a=0\) 的情况,因此不需要分开讨论。我们设 \(f_i(x)\) 表示第 \(i\) 轮 \(x\) 位置上的期望。注意到期望的性质,我们可以直接 阅读全文
posted @ 2021-09-10 21:24 Smallbasic 阅读(85) 评论(0) 推荐(0)
摘要: 昨天考试遇到的,很奇怪的样子,写一下。 众所周知,树形背包可以轻松地做到 \(\Theta(nm)\)。 考虑如何把树拍成序列。我们注意到树上一个点被选择仅当它所有的祖先被选择,换过来说我们dp的顺序是要先儿子后祖先。应此我们可以按后序遍历顺序(先儿子后父亲)或者直接dfs序倒着来。它的子树是一段区 阅读全文
posted @ 2021-09-10 07:30 Smallbasic 阅读(70) 评论(3) 推荐(3)
摘要: 现在看这题已经是时代的眼泪了啊。。。 首先分别从大到小和从小到大建立两棵重构树,每次在重构树上倍增,它的子树里的点就分别是从起点走 \(L\) 到 \(n\) 中的点能到的点和从终点走 \(1\) 到 \(R\) 中的点能到的点。我们可以轻松地用dfs序把它们弄到两个序列的区间上面。 问题就转化成了 阅读全文
posted @ 2021-09-04 15:44 Smallbasic 阅读(31) 评论(0) 推荐(0)