竞赛讨论区 > 【题解】牛客练习赛44
头像
wxyww
编辑于 2019-08-01 12:10
+ 关注

【题解】牛客练习赛44

A.小y的序列

对于每种颜色,只要找到出现的最靠右的位置和最靠左的位置输出即可。如果找不到,那就藏在下一种颜色下面。

其实可以做到数据范围受限于

B.小y的线段

画出图来,可以发现具有单调性,只要计算出有多少个位置回到了源点就行了。

C.小y的质数

首先换个姿势看这个问题

求有多少个满足,并且

众所周知,等价。

所以问题转化为求区间内有多少满足

因为区间比较大。所以可以对分解质因子。

然后容斥一下公因数,假设当前枚举到的质因子个数为。那就暴力搜索出来所有可能的公因数。然后计算内为当前公因数倍数的数字个数。然后容斥就行了。

D.小y的盒子

此题为送温暖题目。。

把所有的数字转换为三进制,对于每个卡片都是形如的形式

所以的形式,共有

然后考虑当第位上为的时候,表示这一位上需要选的卡片,同样,为时需要个,为时只需一个。

当需要个时,有两种选择,其他的都只有一种选择。

又因为的形式是

我们从枚举到,只需考虑哪些位置上面是2即可。

如果当前有个位置为那么共有种情况,且贡献为,然后其他位置可以为,也可以为.所以贡献为。所以当前的贡献就是

所以最终答案为

提出来。那就是

用二项式定理合并那个,其实就是,所以最终答案为.

注意到当时是不符合题目要求的,所以要减去他的贡献.

所以真正的最后答案是

E.小y的工资

首先树形一下,用表示以为根的子树最大收益是多少。

询问的简单路径中,有些边是必须跑的,所以j把这些边从里面单独拿出来。然后再强制加回去就行了。

F.小y的纸牌

题目大意:

给出一个序列,分成两个子序列(长度可以不相同,位置可以不连续),使得两个序列各个位置的前缀最大值的和最小。

一道非常巧妙的dp + 非常套路的分块题

首先考虑的dp怎么做

可以发现两个性质:
设原数组为
性质:假设分成的两个序列为,。若其中某个位置时,a中的最大值比b小,那么以后肯定一直都是a中的最大值比b小。因为要使a中的最大值比b大,那么只能是有一个且s被分到了a数组中。显然,s分到b数组中会更优秀

性质:假设a数组中的最大值一直比b小,那么所有分到b数组中的数字的贡献是原序列中该数字前面所有数字的最大值。因为b中的最大值一直比a大,所以这个很显然。

根据上面的两个性质,我们就可以设出状态。设表示第i个数字分到了a数组且作为a数组中的最大值最终的贡献。

那么对于原序列S中第i个元素我们可以分成以下两种情况,

1.将该元素放到b数组中。

显然,只有当比a数组中的最大值大时,我们才可能会选择这种情况。所以我们对于每个

2.将放到a数组中。

如果放到a数组中且a数组中的最大值不变,即,那么将即可

如果放到a数组中a数组中的最大值变为,这时,只要找到前面最小的一个来更新即可

考虑得到了这个的dp之后怎么优化,可以直接对着代码考虑

现在相当于一道数据结构题,需要支持:

  1. 查询满足的最小值

这是一个经典的分块维护凸包的模型,对于每个转移点,我们可以将其看做的形式,是常量,是被执行过操作的次数

接下来可以将每个按照分块,因为,所以只要分为块即可

对于每一块,可以通过打标记来维护操作(相同块内加的值是相同的)。同时我们可以将块内的每个转移点看做一个函数(也就是),其中自变量每次只会,现在我们只需要知道对于每个,这些函数对应的最小值。

也就是说我们只需要维护出红色的线段

image

这又是个经典模型,,而且考虑到该题比较好的性质,对于每一块只需要从前往后扫一遍,判断一下相邻点的位置关系即可。

查询的时候由于单增,只需要判断第一个元素和第二个元素的关系,如果不满足弹出队首即可

复杂度

代码

A: https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40569856
B: https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40569861
C: https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40569871
D: https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40569872
E: https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40569877
F: https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40570772

全部评论

(10) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐