QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB Total points: 100

#16543. Non-breath Oblige

统计

题目背景

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

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

题目描述

给定三个整数 $n,s,t$,其中 $0 \le s,t \lt 2^n$。

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

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

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

输入格式

本题有多组测试数据。

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

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

输出格式

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

样例 1 输入

3
2 1 2
3 1 1
5 1 4

样例 1 输出

3
0
57

样例 1 解释

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

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

数据范围

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

  • $1 \le T \le 100$;
  • $1 \le n \le 30$;
  • $0 \le s,t \lt 2^n$。

本题采用捆绑测试。

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

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.