抽象代数
Problem Description
在 U={1,2,⋯,n} 上定义有结合律的二元运算 ⊕ 满足 ∀a,b∈U,a⊕b∈{a,b}。
对于一个运算 ⊕,称数 x 是交换子当且仅当 ∀y∈U,x⊕y=y⊕x。
已知 m 个形如 a⊕b=c 的等式(1≤a,b≤K≤17,c∈{a,b}),对于所有可能的 ⊕ 求 2交换子个数 和。
首先输入三个自然数 n,m,K(2≤n≤105,0≤m≤K2,1≤K≤17),分别表示元素个数、已知等式个数和已知等式的数字范围。
之后有 m 行,每行有三个正整数 a,b,c(1≤a,b≤K,c∈{a,b}),表示一个等式 a⊕b=c。
Output
输出一行一个自然数,表示答案除以 998244353 的余数。
3 3 3
1 2 1
2 3 2
2 1 2
Sample Output
3
Hint
我们把已知信息列成一张表,未知部分用字母表示:
a \ a⊕b \ b |
1 |
2 |
3 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
3 |
p |
q |
3 |
其中,方框内数字由“a\oplus b\in \{a,b\} ​”可以自动得到;黑色数字是输入的条件。 |
|
现在还有两个空 p,q 没填,对两个空进行枚举: |
- p=1,q=2:符合题意,此时交换子有 3。
- p=3,q=2:(3⊕1)⊕2=3⊕(1⊕2)。
- p=1,q=3:(3⊕2)⊕1=3⊕(2⊕1)。
- p=3,q=3:符合题意,此时没有交换子。
因此你输出 21+20=3。
Source
2025“钉耙编程”中国大学生算法设计暑期联赛(9)