题目背景
精准的解析刻画,是应该首先尝试的突破口。
——command_block 《考前小贴士》
题目描述
请问有多少个不同的序列 a,满足:
- a 的长度为 n。
- a 中的元素均为不大于 k 的非负整数。
- 满足 m 组形如 (xi,yi,zi) 且 xi<yi 的限制,每组限制的意义为 axi⊕ayi=zi (⊕ 表示按位异或运算)。
两个序列相同,当且仅当它们所有元素均相同。
请输出答案对 109+7 取模的结果。
输入格式
输入共 m+1 行:
- 第一行三个数,n,m,k。
- 接下来 m 行,每行 3 个数,xi,yi,zi。
输出格式
输出仅一行,表示答案对 109+7 取模的结果。
提示
【样例 1 说明】
共有 6 种序列:{0,1,0},{0,1,1},{0,1,2},{1,0,0},{1,0,1},{1,0,2}。
【数据规模与约定】
本题采用捆绑测试。
- Subtask 1(1 point):n=1。
- Subtask 2(5 points):m=0。
- Subtask 3(15 points):n,m,k≤5。
- Subtask 4(10 points):zi=0。
- Subtask 5(20 points):k≤16。
- Subtask 6(2 points):数据随机。
- Subtask 7(47 points):无特殊限制。
对于 100% 的数据,1≤n≤5×105,0≤m≤5×105,0≤zi<230,1≤k<230,1≤xi,yi≤n。
【提示】
如果你不知道什么是异或,请点击这里。