给你两个长度为 \(n\)\(01\)\(A\)\(B\) ,你可以做 \(3\) 种操作:

  • 1:将 \(A\) 串每一位向左移(即假设 \(A\)\(=A_1A_2…A_n\),将 \(A\) 变为 \(A_2A_3…A_nA_1\))
  • 2:将 \(A\) 串每一位向右移(即假设 \(A\) 串=\(A_1A_2…A_n\),将 \(A\) 变为 \(A_nA_1A_2A_3…A_{n-1}\) )
  • 3:可以任意挑选一个 \(i\) ,若 \(B_i = 1\) ,则 \(A_i \wedge{} =1\)

每种操作的操作次数不限,问最少操作几次可以使 \(A=B\),如果无法使 \(A=B\),则输出 \(-1\)

\(n \le 2000\)

样例输入:

1010 
1100

样例输出:
3


给你 \(n\) 个物品,每个物品有 \(3\) 种属性(\(a_i,b_i,c_i\)),现在你需要从中挑选 \(k\) 个物品,分别是 \(t_1,t_2,t_3…t_k\). 这 \(k\) 个物品需要满足以下条件:

  • 1:\(a_{t_1} \wedge{} a_{t_2} \wedge{} a_{t_3} \wedge{} a_{t_4}… \wedge{} a_{t_k}=0\)
  • 2:对于任意一个 \(b_i\),都至少存在一个 \(j\) (\(j \le k\)),使得 \(b_{t_j}=b_i\)
  • 3:\(c_{t_1},c_{t_2},c_{t_3}…c_{t_k}\)必须互不相同。

时间限制:2s

数据范围:\(1 \le n \le 32\),\(1 \le b_i,c_i \le n\),\(1 \le a_i \le 100000\)

样例输入:

5
1 2 1
1 1 2
1 2 2
2 1 1
3 2 2

样例输出:

2


给你一棵 \(n\) 个点的树和 \(m\) 条非树边,每条非树边有一个权值 \(x_i\)

你可以从 \(m\) 条边中挑选若干条加到树中,但必须保证每个点最多只能属于一个简单环,你能得到的收益是这些边的权值和。

求收益的最大值。

\(n \le 2*10^5,m \le 2*10^5\)

样例输入:

7 3
1 1 2 2 3 3
4 5 1
6 7 1
2 3 1

样例输出:

2


给定一棵 \(n\) 个节点的有根树,在输入数据通过给出每个节点的父亲来表示这棵树。若某个节点的父亲为 \(0\) ,那么该节点即为根。现在对于每个点 \(i\) ,询问它的每个祖先的子树中深度不超过 \(i\) 的点的数量的总和(不包括i自己)。

时间限制:2s

\(n \le 5*10^5\)

样例输入:
4
0 1 2 1

样例输出:

0 2 4 2


给你一棵 \(n\) 个点的有根树,每个点有一个点权 \(a_i\),你需要在树上挑选尽可能多的点,但必须满足以下条件:

如果你选取了 \(x,y\),且 \(x\)\(y\) 的祖先,则 \(a_x > a_y\)

求最多能取多少个点。

数据范围:\(n \le 100000\)


\(t\) 次询问,每次给你 \(n\) 个数 \(x_1,x_2…x_n\),把它们按不同的顺序排列,一共可以得到 \(n!\) 个新的数,问这 \(n!\) 个数中,有多少数能被 \(11\) 整除,答案 \(\% 998244353\)

\(n \le 2000,1 \le x_i \le 10^9\)

样例输入:

4
2
1 1
3
1 31 12
3
12345 67 84
9
1 2 3 4 5 6 7 8 9

样例输出:

2
2
2
31680