CF182E Wooden Fence

题目描述

Vasya 最近买了一块地,并决定用木栅栏把它围起来。 他去了一家名叫 “Wooden board” 的公司,这家公司生产用于栅栏的木板。Vasya 在产品目录中看到,该公司有 $n$ 种不同类型的木材。该公司会用第 $i$ 种木材生产出尺寸为 $a_{i} \times b_{i}$ 的矩形木板。 Vasya 决定在这家公司订购木板,并用这些木板来建造栅栏。事实证明,这家公司的仓库足够大,Vasya 可以任意数量地订购每种类型的木板。需要注意的是,Vasya 可以在建造栅栏时旋转木板,但**不能旋转正方形木板**。 Vasya 需要建造一个长度为 $l$ 的栅栏,但随便什么栅栏他都不满意。他想要栅栏看起来漂亮。如果满足下列两个条件,我们就认为栅栏是漂亮的: - 不能有连续两块木板类型相同; - 栅栏的第一块木板可以任意选择长度,之后每一块木板的长度等于前一块木板的宽度。 换句话说,如果第 $i$ 块木板的类型和旋转方式与第 $i-1$ 块木板相同,则该方案不漂亮;此外,从第二块木板起,每块木板的长度要等于前一块木板的宽度。 现在 Vasya 想知道,有多少种不同的漂亮栅栏可以围住他的土地,栅栏的总长度要求正好是 $l$。 如果两组栅栏在木板类型和旋转序列上完全一样,则视为相同的栅栏,否则为不同的栅栏。由于答案可能很大,请输出答案对 $1000000007$ ($10^9+7$) 取模后的结果。

输入格式

第一行包含两个整数 $n$ 和 $l$($1 \leq n \leq 100,1 \leq l \leq 3000$),表示木板类型数以及栅栏的总长度。 接下来的 $n$ 行,每行包含两个正整数 $a_i$ 和 $b_i$($1 \leq a_i, b_i \leq 100$),表示第 $i$ 种木板的尺寸。各行之间数据用空格隔开。

输出格式

输出一个整数,表示不同漂亮栅栏方案数对 $1000000007$ 取模的结果。

说明/提示

在第一个样例中,恰好存在两种漂亮栅栏长为 $3$ 的方案: - 第一种方案,第一块使用第 $1$ 种类型(长度为 $1$,宽度为 $2$),第二块使用第 $2$ 种类型(长度为 $2$,宽度为 $3$)。 - 第二种方案,第一块使用第 $2$ 种类型,旋转过后(此时长度为 $3$,宽度为 $2$),且不接第二块。 由 ChatGPT 5 翻译