#CCSP2025A. 仓库价格调整

    ID: 727 Type: Default 1000ms 512MiB Tried: 35 Accepted: 12 Difficulty: 3 Uploaded By: Tags>CCSP字符串Trie树数据结构树状数组贪心其他分治位运算

仓库价格调整

题目来自 CCSP2025 T1,评测使用官方数据。

时间限制: 1.0 秒

空间限制: 512 MiB

题目背景

小新是一名全栈工程师,刚加入全球智能仓储公司 SmartDepot。这家公司运营着一个集仓储管理、云端计算、数据库服务与硬件加速于一体的智能系统,负责全球范围内的物流调度与计算任务。为了确保 SmartDepot 的整个业务链条高效运转,小新决定寻求你的帮助,一起完成一系列关键任务。

题目描述

公司仓库中,依次摆放着一排共有 mm 件货物(编号从 11 到 mm,表示它们的固定顺序)。每件货物都有一个互不相同的整数价格 AiA_i。

由于系统升级时出了一点小差错,部分货物在盘点时出现价格顺序混乱,因此需要小新对所有货物的价格进行调整。具体做法是选择一个整数 XX,并将每个货物的价格调整为 Bi=Ai⊕XB_i=A_i\oplus X。其中 ⊕\oplus 表示按位异或。

如果某件货物在位置上靠前,但其价格比后面货物的价格还高,就会造成混乱。小新希望选择合适的掩码 XX,使得在调整后的混乱程度更小。

更准确地说,若一对货物 (i,j)(i,j) 满足 i<ji<j 且 Bi<BjB_i<B_j,则称它们为一个“合法对”。你的任务是找到使得合法对数量最大化的最优掩码 Xmin⁡X_{\min},若存在多个最优掩码则取最小者。

输入格式

从标准输入读入数据。

输入的第一行包含一个正整数 mm。

输入的第二行包含 mm 个非负整数 A1,A2,…,AmA_1,A_2,\ldots,A_m,表示每件货物的原本价格。

输出格式

输出到标准输出。

输出的第一行为一个非负整数,表示最大合法对数量。

输出的第二行为一个整数,表示最小的最优掩码 Xmin⁡X_{\min},也就是所有能达到最大合法对数量的掩码中,数值最小的那个。

5
12 15 6 0 4
8
8

样例 1 解释

取 X=8X=8 时,$B=[12\oplus 8,15\oplus 8,6\oplus 8,0\oplus 8,4\oplus 8]=[4,7,14,8,12]$。

满足 i<ji<j 且 Bi<BjB_i<B_j 的合法对共有 88 个,分别是 (1,2),(1,3),(1,4),(1,5),(2,3),(2,4),(2,5),(4,5)(1,2),(1,3),(1,4),(1,5),(2,3),(2,4),(2,5),(4,5)。

子任务

对于所有测试点,保证 m≤2×105, 0≤Ai<230m\le 2\times 10^5,\ 0\le A_i< 2^{30},所有 AiA_i 两两不同。

本题采用捆绑测试,你只有通过一个子任务中的所有测试点才能得到该子任务的分数。

子任务编号 分值 m≤m\le 特殊性质
1 30 20002000 最终有最大合法对数和 Xmin⁡<1000X_{\min}<1000
2 20 无
3 50 2×1052\times 10^5

来源

CF1416C - XOR Inverse