跳转至

不同顺子的牌组划分

预估时间限制:1.5 秒。内存限制:128 MB。

实际时限以标准程序在目标环境的最慢用例中位时间乘以 \(2\) ,按 \(0.5\) 秒向上取整。参考环境见评测说明。

背景故事

牌具工坊收到几批带有种类和数字的牌。整理员想把全部牌装成规定的组合,其中相同的顺子只能装一次。

(本故事由GPT-6重写)

形式化问题描述

牌有 \(m\) 种,每种牌的数字可以是 \(1,\ldots,n\) .开始时没有牌,随后收到 \(k\) 批;第 \(i\) 批包含 \(a_i\) 张种类为 \(b_i\) 、数字为 \(c_i\) 的牌。同种同数字的牌只在数量上累加,不按批次区分。

判断能否把所有牌恰好使用一次,划分成以下两类组合:

  • 顺子:同一种类、数字连续的三张或五张牌,每个数字恰好一张。任意两个顺子不能相同;即“种类、起始数字、长度”三者完全相同的顺子最多使用一个。
  • 同牌组:种类和数字都相同的三张或四张牌。允许出现任意多个相同的同牌组。

两类组合都可以使用零组。不同种类或不同长度的顺子不视为相同。输出是否存在这样的划分。

输入格式

第一行三个整数 \(n,m,k\) .接下来 \(k\) 行,第 \(i\) 行三个整数 \(a_i,b_i,c_i\) .

输出格式

如果存在合法划分,输出一行 1 ;否则输出一行 0 .

样例

样例 1

输入

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

输出

1

样例 2

输入

3 1 3
2 1 1
2 1 2
2 1 3

输出

0

样例 3

输入

1 2 3
1 1 1
2 1 1
4 2 1

输出

1

样例解释

第一组使用一个长度为五的顺子。第二组若使用顺子,只能使用起点一、长度三的顺子一次,剩余三张牌无法组成合法组,因此无解。第三组把前两批的同牌累加成三张,再将另一种类的四张单独成组。

数据范围与保证

\(1\le n,m,k\le5\times10^6\) , \(1\le a_i\le10^9\) , \(1\le b_i\le m\) , \(1\le c_i\le n\) .

分值比例 额外条件
100% 无额外条件