UOJ Logo Universal Online Judge

UOJ

#703. 赵云八卦阵

附件下载 统计

功盖三分国,名成八阵图。江流石不转,遗恨失吞吴。 —— 杜甫《八阵图》

三国时期,诸葛亮的八卦阵,可比十万精兵。穿越到 2022 年的赵云,却发现八卦阵早已失传。

不过时代在进步。在这个 64 位计算机横行的年代,赵云开始思考如何超越诸葛亮,发明出更强的新八卦阵 —— 又名 260 卦阵。正好,UOJ 也需要引入先进技术来保护自己的服务器。

赵云想发明的新八卦阵是一个圆形的多层防御体系,严密地保护住 UOJ 服务器。新八卦阵里里外外一共 n 层子阵,从外到内依次编号为 1,,n。每层子阵都设置了精巧的防御手段来防范入侵,其中第 i 层子阵的防御力为 ai,为小于 260 的非负整数(0ai<260)。

为了对入侵者进行心理威慑,八卦阵应由从外到内防御力逐渐递增子阵构成,即 a1an 严格递增。在满足这个条件的基础上,八卦阵层数越多越好。然而,在赵云的设计初稿上,a1an 并不一定严格递增。于是他决定按照太极八卦的二进制思维对这些子阵进行多次操作:

  • 修改操作:选择一个层数编号 2xn,并将 ax 变成 axax1(其中表示二进制异或);
  • 删除操作:选择一个层数编号 1xn,并将这一层删掉,总层数减一,后续层数编号依次平移一位。

看着赵云满头大汗地对付大整数二进制运算的样子,你决定带领三个臭皮匠帮帮他:给定初始的 a1,,an,允许多次进行上述修改和删除操作,如果想让操作后的八卦阵从外到内防御力逐渐递增,初始的八卦阵至多可以保留多少层子阵?

人话题面:给定一个序列 a1,,an,每次可以将某一项 ax2xn)变成 axax1,求这个序列最长上升子序列长度的最大值。

输入格式

第一行一个正整数 n,表示序列长度。

第二行 n 个正整数 a1,,an 表示赵云的初稿上每一层的防御力。注意初稿上所有 ai 均大于等于 1,但后续使用修改操作时允许产生 ai=0

由于本道题输入规模过大,提供一份快速输入输出模板,见下发文件中的 io.cpp

输出格式

一行一个数表示这个八卦阵的防御力。

样例一

input

5
5 4 3 2 1

output

4

explanation

依次对4,3,4,5,3,2操作可以得到最终序列为5,1,3,6,7,最长上升子序列长度为4。同时可以证明不存在更优的方案。

样例二

见附加文件中的ex_xor2.inex_xor2.ans

样例三

见附加文件中的ex_xor3.inex_xor3.ans

数据范围与提示

子任务编号 n ai< 分值
1 5 16 10
2 20 216 20
3 1000 260 20
4 105 20
5 106 30

对于所有数据,n106,1ai<260

时间限制:1s

空间限制:512MB