牛客训练赛115题解

很抱歉由于出题人的懈怠,题目难度可能与顺序稍有不符。

但还是希望大家喜欢这些题目!

(好像通过率就没几个题达标,寄寄子)

A Mountain sequence

我们从大到小考虑每个数放在序列里的方案数,相同值的数一起考虑。

首先,所有的最大值都会放在中间;

接着我们考虑第二大的值,假设出现了 x 次,那我们应该有 x+1 种方式放置这些数。

比如原序列是[2],插入两个1,那么就有[1,1,2],[1,2,1],[2,1,1],即在外面包裹一层。

以此类推。

因此答案就是 非最大值的数的出现次数+1的乘积。

复杂度 O(nlogn),取决于排序实现。

花絮:本来是没有这个题的,但是审题人嫌原来的B题太难了,于是把本场的B题(原来的A题)往后移了一个位置,加了这个题。

B Antiamuny wants to leaern binary search again

考虑每次二分过程在[l,mid-1],[mid+1,r]这两个区间一定取更长的区间,因此每次都选择[mid+1,r]这个区间就可以了。

如果走不到=k的位置就说明无解。

复杂度 O(qlogn)

C Find the maximum slope

根据拉格朗日中值定理,非常显然的,问题等价于求最大的a_i-a_{i-1},。

因此直接差分维护就可以了,等价于单点修改,全局最大值,拿set维护即可。

复杂度 O(Qlogn)

花絮:本来CSL只出了输出最大斜率的版本,我加了一个区间加^_^

D Genealogy in the trees

一个可行的做法是,dfs一整颗树;

在dfs到一个 p_i 时,在 q_i 的点位置上贡献+1。

在dfs到一个 a_j 时,对 b_j 这个子树求有多少贡献。

在dfs完 p_i 这颗子树时,减去 q_i 这个点的贡献。

对于上述操作,我们只要预处理出dfs序,实现一个单点加区间求和即可完成。

复杂度 O(Qlogn)

一些代码写了复杂的数据结构,常数不是巨大应该都可以通过。

E High contrast pattern

这题一定有一万种做法,这里介绍一下出题人的做法和贴一下Heltion老师的代码(带注释,蟹蟹hls)。

首先 n=1 时必定有解,构造显然。

n \ge 2 时,k=n\times m-1 时无解,这也显然(样例都给你了!)。

剩下全都有解,因为构造的出来。

出题人的做法:

我们先给出一个 3 \times 5 的矩阵

00000

00000

00000

我们填充一下

10000

00000

10000

这样子,我们就完成了k=[1,3]的方案。

我们再填充一下:

10300

02000

10400

数字表示按顺序把这几个位置填充1,可以发现,按照这个操作,我们完成了3,5,7,9,的方案实现。

我们这样只实现了奇数,但是我们可以在最右边开始增加一个1,这样子我们就可以实现偶数了。

然而这样依然是有一些问题的,会有一些特别情况无法处理(比如填最后一列就不是+2了)

那么我们对这些情况进行特殊处理,显然这些情况应该是 k>=n \times m-n左右的情况,总之 k 应该蛮大的。

我们还是回到 3 \times 5,现在我们先填满(k=n\times m):

23101

01010

10101

其中2应该填1,3应该填0.

我们考虑2这个位置,如果我们把他改成0,那么连通块数量-2,如果改3这个位置,那么连通块数量-3。

所以,我们对上面的情况用这些边角料调整一下,就可以轻松构造出这些情况。

复杂度为 O(nm)

Hls的做法:

hls写注释了,我直接贴代码了。

Jewel maximizing magic

首先问题等价于在 n 个数里选出 k(k 未知) 个数异或起来的最大值,通过打表、数学归纳法、画图推导等方法,我们可以得到:

n%3=1,k%3=0

n%3=2,k%3=2

n%3=0,k%3=1

因此我们可以设一个dp[选的数数量%3][异或得到的值]这样子的一个dp,正常转移即可。

复杂度 O(nA)A为值域。

全部评论
可以这样理解,如下图,假设 k3 是最优斜率且 |i-l| > 1 ,那么我们观察处于 i,l 中间的一个 元素 j:如果 aj 比较小,那么 k2 斜率比 k3 优;如果 aj 比较大,那么 k1 斜率比 k3 优。所以说,只有 aj 位于 i->l 的斜率直线上,即 k1 = k2 = k3 的时候,才与“k3是最优斜率”不矛盾,而这个时候我们可以取更短的区间 k1 或者 k2。 综上,如果最优斜率的两点间距不为1,那么我们总能找到一个间距为1 的斜率,它也是最优斜率。
5 回复 分享
发布于 2023-09-09 11:18 湖南
为什么发在吐槽和提问里面呀
点赞 回复 分享
发布于 2023-09-09 11:14 新加坡
c题怎么根据拉格朗日中值定理得出求最大的ai-ai-1的
点赞 回复 分享
发布于 2023-09-09 09:36 山东

相关推荐

不愿透露姓名的神秘牛友
07-03 17:30
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 16:22
点赞 评论 收藏
分享
强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
投递长鑫存储等公司8个岗位
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务