luogu#P11485. 「Cfz Round 5」Non-breath Oblige

    ID: 35213 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 2 上传者: 标签>数学贪心洛谷原创O2优化位运算洛谷月赛

「Cfz Round 5」Non-breath Oblige

题目背景

English statement. You must submit your code at the Chinese version of the statement.


それぞれの好きを守るため
为了保护各自的喜爱之物

君と防空壕で呼吸する
与你在防空壕中一同呼吸

题目描述

给定三个整数 n,s,tn,s,t,其中 0s,t<2n0 \le s,t \lt 2^n

你可以进行若干次操作。每次操作,你可以选择一个非负整数 xx 并把 ss 的值修改为 xx,但有如下要求:

  • 必须满足 x<2nx<2^n
  • 必须满足 sx=2n1s\lor x=2^n-1,其中 \lor 为按位或运算;
  • 你需要花费 sxs\oplus x 的代价,其中 \oplus 为按位异或运算。

你需要求出使 s=ts=t 所需代价之和的最小值。可以证明一定可以使 sstt 相等。

输入格式

本题有多组测试数据。

输入的第一行包含一个正整数 TT,表示测试数据组数。

接下来依次输入每组测试数据。对于每组测试数据,输入共一行,包含三个整数 n,s,tn,s,t

输出格式

对于每组测试数据,输出一行一个整数,表示使 s=ts=t 所需代价之和的最小值。

3
2 1 2
3 1 1
5 1 4
3
0
57

提示

「样例解释 #1」

对于第 11 组测试数据,由于 12=31 \cup 2 = 3,所以可以直接将 ss 的值从 11 修改为 22,此时的代价为 121 \oplus 2,即 33。可以证明使 s=ts=t 所需代价之和的最小值为 33

对于第 22 组测试数据,不需要进行操作即可满足 s=ts=t

「数据范围」

对于所有测试数据,保证:

  • 1T1001 \le T \le 100
  • 1n301 \le n \le 30
  • 0s,t<2n0 \le s,t \lt 2^n

本题采用捆绑测试。

  • Subtask 0(12 points):s=ts=t
  • Subtask 1(15 points):n=1n=1
  • Subtask 2(20 points):s+t=2n1s+t=2^n-1
  • Subtask 3(10 points):t=2n1t=2^n-1
  • Subtask 4(18 points):t=0t=0
  • Subtask 5(25 points):无特殊限制。