CF1220F.Gardener Alex

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

园丁 Alex 喜欢种树。树是一个包含 nn 个顶点的连通无环图。

今天他决定种一棵有根二叉树。二叉树是指任意一个顶点的儿子不超过两个的树。幸运的是,Alex 拥有一个从 11 到 nn 的排列,这是他上次生日时收到的礼物,所以他决定按照这个排列来种树。具体过程如下:他找到排列中的最小元素,并将其作为树的根节点。然后将排列分为两部分:最小元素左边的所有元素和右边的所有元素。左边部分的最小元素作为根的左儿子,右边部分的最小元素作为根的右儿子。之后,对这两部分递归重复上述过程。

现在 Alex 想要种一片森林:对于排列的每一个循环左移,都种一棵树。他想知道,哪一种循环左移能使树的深度最小。不幸的是,种一片森林既困难又耗时,但 Alex 现在就想知道答案。你能帮帮他吗?

对于排列 a1,a2,…,ak,…,ana_1, a_2, \ldots, a_k, \ldots, a_n,循环左移 kk 位后的排列为 ak+1,ak+2,…,an,a1,a2,…,aka_{k+1}, a_{k+2}, \ldots, a_n, a_1, a_2, \ldots, a_k。

输入格式

第一行包含一个整数 n (1⩽n⩽200 000)n~(1 \leqslant n \leqslant 200\,000),表示排列的长度。

第二行包含 nn 个整数 a1,a2,…,an (1⩽ai⩽n)a_1, a_2, \ldots, a_n~(1 \leqslant a_i \leqslant n),保证所有数字恰好出现一次。

输出格式

输出两个用空格分隔的整数:树的最小可能深度,以及需要左移多少个元素才能达到这个深度。左移的元素个数应为 00 到 n−1n-1 之间的一个数。如果有多组答案,输出任意一组即可。

输入输出样例

  • 输入#1

    4
    1 2 3 4
    

    输出#1

    3 2
    

说明/提示

下图展示了样例测试中所有可能的树以及它们对应的循环左移次数。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页