题解 | #智乃的博弈游戏#

任造化落骰

https://ac.nowcoder.com/acm/contest/95338/E

E题题解

知乎个人补题链接,思路+代码

思路

为什么要数据随机?因为不随机做不出来。

考虑这么一个例子,

1 2 3 4 5 6 7 8 9 ...

我们要取出所有的区间,复杂度是 的,直接爆炸。

现考虑随机性。

我们固定左端点,右端点在不断右移的时候,能够使得区间改变 的位置是有限的。

为什么?

改变 需要严格大于,每次选出一个大于其的数,后续严格大于的期望其实是在不断折半的,因此最多 个。同理对于 ,所以我们固定左端点,右端点有效移动的位置,是这些严格 大于/小于 的位置之和,最多 个,我们通过单调栈 + 双指针 即可完成模拟。

实现

通过单调栈找严格 大于/小于,然后通过双指针取出这些位置, 记录 的数量,最后丢进数组中,记录 即可。

代码

代码

全部评论

相关推荐

10-27 02:29
已编辑
门头沟学院 嵌入式工程师
牛客72783561...:简历不是这么写的,你这两个项目只说了用到了什么技术,却没说取得了什么成果,在我看来这就是你自己做的一个demo,没有价值。你为什么不写你电赛国二的那个项目?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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