AT_agc017_f.[AGC017F] Zigzag

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

如上图所示,有 NN 个点构成边长为 11 的正三角形,每个点都排列成正三角形的形状,总共有 N(N+1)/2N(N+1)/2 个点。我们用 (i, j)(i,\ j) 表示从上往下第 ii 行、从左往右第 jj 个点(1≤i≤N1\leq i\leq N,1≤j≤i1\leq j\leq i)。另外,(i+1, j)(i+1,\ j) 是 (i, j)(i,\ j) 的正左下方的点,(i+1, j+1)(i+1,\ j+1) 是 (i, j)(i,\ j) 的正右下方的点。

高桥君打算在这些点之间画 MM 条折线 1,2,…,M1,2,\ldots, M。每条折线都从 (1,1)(1,1) 出发,随后「每次选择当前位置的正左下方或正右下方的点,用直线连接到那个点并移动过去」,重复 N−1N-1 次。因此,存在某些 Xi,1,…,Xi,NX_{i,1},\ldots, X_{i,N} 满足以下条件:

  • 折线 ii 依次连接 NN 个点 (1, Xi,1), (2, Xi,2),…,(N, Xi,N)(1,\ X_{i,1}),\ (2,\ X_{i,2}),\ldots,(N,\ X_{i,N})。
  • 对于 j=1,2,…,N−1j=1,2,\ldots, N-1,有 Xi,j+1=Xi,jX_{i,j+1} = X_{i,j} 或 Xi,j+1=Xi,j+1X_{i,j+1}=X_{i,j}+1。

高桥君希望画图时,编号大的折线不会位于编号小的折线左边。也就是说,对于 j=1,2,…,Nj=1,2,\ldots,N,有 X1,j≤X2,j≤…≤XM,jX_{1,j}\leq X_{2,j}\leq\ldots\leq X_{M,j}。

此外,高桥君还需要满足关于曲线拐弯的 KK 个条件。第 ii 个条件 (Ai, Bi, Ci)(A_i,\ B_i,\ C_i) 的意义如下:

  • 当 Ci=0C_i=0 时,画折线 AiA_i 时,在第 BiB_i 次移动时,必须选择左下方的点。
  • 当 Ci=1C_i=1 时,画折线 AiA_i 时,在第 BiB_i 次移动时,必须选择右下方的点。

换句话说,XAi,Bi+1=XAi,Bi+CiX_{A_i,B_i+1} = X_{A_i,B_i} + C_i。

请计算,高桥君能画出不同的 MM 条折线的方案数,对 10000000071000000007 取模后输出。

输入格式

输入从标准输入读入,格式如下:

NN MM KK A1A_1 B1B_1 C1C_1 A2A_2 B2B_2 C2C_2 …\ldots AKA_K BKB_K CKC_K

输出格式

输出高桥君画 MM 条折线的方案数,对 10000000071000000007 取模。

输入输出样例

  • 输入#1

    3 2 1
    1 2 0

    输出#1

    6
  • 输入#2

    3 2 2
    1 1 1
    2 1 0

    输出#2

    0
  • 输入#3

    5 4 2
    1 3 1
    4 2 0

    输出#3

    172
  • 输入#4

    20 20 0

    输出#4

    881396682

说明/提示

注意

提交前,强烈建议使用“代码测试”测量运行时间。

限制

  • 1≤N≤201\leq N\leq 20
  • 1≤M≤201\leq M\leq 20
  • 0≤K≤(N−1)M0\leq K\leq (N-1)M
  • 1≤Ai≤M1\leq A_i\leq M
  • 1≤Bi≤N−11\leq B_i\leq N-1
  • Ci=0,1C_i=0,1
  • (Ai,Bi)(A_i,B_i) 作为同一组不会重复出现多次。

样例解释 1

如图所示,共有 66 种画法。红线表示折线 11,绿色表示折线 22。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页