#370. 1

1

\documentclass{article}

\usepackage{amsmath}

\usepackage{amssymb}

\usepackage{enumerate}

\begin{document}

\section{子集和}

给定一组正整数 a1,a2,,ana_1, a_2, \ldots, a_n,它们的和为 SS。我们想要计算每个子集的和,并得到了 2n2^n 个介于 00SS 之间的和,其中每个和 xx 出现了 cxc_x 次。现在给你一个数组 cc,要求还原出 a1,a2,,ana_1, a_2, \ldots, a_n 这些数。

\subsection{输入格式}

第一行包含两个整数 n,Sn, S

第二行包含 n+1n + 1 个整数 c0,c1,,cSc_0, c_1, \ldots, c_S

\subsection{输出格式}

输出一行,包含 nn 个整数,表示 a1,a2,,ana_1, a_2, \ldots, a_n,从小到大排序。

数据保证有唯一解。

\subsection{样例输入输出}

\begin{enumerate}

\item 输入:

\begin{verbatim}

3 6

1 1 1 1 2 1

\end{verbatim}

输出:

\begin{verbatim}

1 2 3

\end{verbatim}

\item 输入输出 2 见下发文件。

\end{enumerate}

\subsection{数据规模}

共 10 组数据。

测试点 1 满足 n,S5n, S \leq 5

测试点 2,3 满足 n10,1cx10n \leq 10, 1 \leq c_x \leq 10

测试点 4,5 满足 n10n \leq 10

测试点 6,7 满足 1cx101 \leq c_x \leq 10

对于所有数据,满足 1n50,1S100001 \leq n \leq 50, 1 \leq S \leq 10000

\section{异或}

给定数组 a1,a2,,ana_1, a_2, \ldots, a_n,统计有多少个三元组 (i,j,k)(i, j, k) 满足 i<j<ki < j < k 并且 aiaj<ajaka_i \oplus a_j < a_j \oplus a_k。这里 \oplus 表示异或。

\subsection{输入格式}

第一行包含一个整数 nn

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n

\subsection{输出格式}

输出一行,一个整数表示答案。

\subsection{样例输入输出}

\begin{enumerate}

\item 输入:

\begin{verbatim}

5

2 3 4 5 1

\end{verbatim}

输出:

\begin{verbatim}

16

\end{verbatim}

\item 输入输出 2 见下发文件。

\end{enumerate}

\subsection{数据规模}

共 10 组数据。

测试点 1,2 满足 n102n \leq 10^2

测试点 3,4 满足 n2×103n \leq 2 \times 10^3

测试点 5,6 满足 ai26a_i \leq 2^6

对于所有数据,满足 1n5×105,0ai<2301 \leq n \leq 5 \times 10^5, 0 \leq a_i < 2^{30}

\section{异或 2 (rox)}

给定 xx,输出 x=1+(x1)(x2)x = 1 + (x - 1) \oplus (x - 2)。这里 \oplus 表示异或。

\subsection{输入格式}

第一行包含一个整数 xx

\subsection{输出格式}

输出一个整数,表示答案。

\subsection{样例输入输出}

\begin{enumerate}

\item 输入:

\begin{verbatim}

2021

\end{verbatim}

输出:

\begin{verbatim}

2022

\end{verbatim}

\item 输入输出 2 见下发文件。

\end{enumerate}

\subsection{数据规模}

共 10 组数据。

测试点 1,2 满足 $x \leq 10^6