#P10200. [湖北省选模拟 2024] 花神诞日 / sabzeruz

[湖北省选模拟 2024] 花神诞日 / sabzeruz

题目背景

传说,之所以这个日子会叫做「花神诞日」,其实最早是「花神祝诞」的意思。

在很久很久以前,有一次树王大人过生日,她的朋友们举办了宴席为她祝寿。

宴席上,几位神明大人都喝醉了,其中一位便乘兴弹奏起了乐器,于是树王大人唱歌,花神大人就跳起舞来。

在花神大人起舞时,她踏过的草地上,长出了无数美丽的帕蒂沙兰……

啊,若是时间能永驻此刻就好了。

题目描述

你正在为花神诞日准备宴席。你一共有 NN 种食材,依次编号为 1,2,,N1,2,\cdots, N,第 ii 种食材的味道为 aia_i,任意两种食材的味道都不相同。你希望用这 NN 种食材做两道菜,每种食材必须被在恰好一道菜中使用。每道菜至少使用一种食材。

同一道菜中不同食材的味道会两两发生反应。食材 ii 与食材 jj 反应,将产生 aiaja_i \oplus a_j 的味道,其中 \oplus 表示异或运算。一道菜最终的味道为两两反应产生的味道的最小值。例如,一道菜使用了味道分别为 2,3,42,3,4 的三种食材,食材将会两两反应产生 1(23)1(2 \oplus 3)6(24)6(2\oplus 4)7(34)7(3\oplus 4) 三种味道,这道菜的味道为 min(1,6,7)=1\min(1,6,7)=1

本真的味道最为美味。如果一道菜只使用了一种食材,这道菜的味道为 ++\infty

你希望第一道菜的味道不低于 k1k_1,第二道菜的味道不低于 k2k_2。请问,你一共有多少种做菜的方案?

请注意:相同集合的食材,分别作为第一道菜与第二道菜是两种不同的方案。 例如,第一道菜使用食材 1,2,31,2,3,第二道菜使用食材 4,54,5,与第一道菜使用食材 4,54,5,第二道菜使用食材 1,2,31,2,3 是两种不同的方案。

由于答案可能很大,你只需要输出答案对 109+710^9+7 取模的值。

输入格式

输入共两行。

输入的第一行为三个正整数 N,k1,k2N,k_1,k_2,分别表示食材的种类数、第一道菜与第二道菜要求的味道。

输入的第二行包含 NN 个正整数 a1,a2,,aNa_1,a_2,\cdots,a_Naia_i 表示第 ii 种食材的味道。

输出格式

输出一行一个整数,表示做菜的方案数对 109+710^9+7 取模的结果。

2 10 10
1 2
2
4 2 5
5 3 1 4
5
见选手目录下的 sabzeruz/sabzeruz3.in 与 sabzeruz/sabzeruz3.ans。
该样例符合测试点 9 ∼ 11 的限制。
见选手目录下的 sabzeruz/sabzeruz4.in 与 sabzeruz/sabzeruz4.ans。
该样例符合测试点 12 ∼ 15 的限制。
见选手目录下的 sabzeruz/sabzeruz5.in 与 sabzeruz/sabzeruz5.ans。

提示

样例解释 2

做菜的五种方式列举如下:

  • 第一道菜使用食材 1,2,31,2,3,第二道菜使用食材 44
  • 第一道菜使用食材 1,21,2,第二道菜使用食材 3,43,4
  • 第一道菜使用食材 1,31,3,第二道菜使用食材 2,42,4
  • 第一道菜使用食材 2,3,42,3,4,第二道菜使用食材 11
  • 第一道菜使用食材 3,43,4,第二道菜使用食材 1,21,2

子任务

对于所有测试数据,保证 1N2×1051 \le N \le 2\times 10^51k1,k2,ai<2601 \le k_1,k_2,a_i <2^{60}。对于任意的 1i<jN1 \le i<j \le N,有 aiaja_i \neq a_j

测试点编号 NN\le 特殊性质
11 1818
232\sim 3 5×1035\times 10^3 A
484\sim 8
9119\sim 11 2×1052\times 10^5 A
121512\sim 15 B
162516\sim 25

特殊性质 A:保证 k1=k2k_1=k_2

特殊性质 B:保证 k1=1k_1=1