QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#17962. 考试

Statistics

Deokin 教授正在教授算法课程。在即将到来的期中考试中,他决定加入他在课堂上讲授的最大子段和(maximum subarray sum)问题,即以下问题:

  • 给定数组 $A = [a_1, a_2, \dots, a_n]$,计算值 $MSS(A) = \max_{1 \le i \le j \le n} \left( \sum_{k=i}^j a_k \right)$。

Deokin 想要强迫学生们手动解决最大子段和问题。为此,他使用了以下步骤:

  • 准备一个大小为 $N \times N$ 的二维整数数组。
  • 从单元格 $(1, 1)$ 开始,重复向右或向下移动,直到到达单元格 $(N, N)$。如果当前单元格是 $(i, j)$,若 $j < N$ 他可以向右移动到单元格 $(i, j + 1)$,若 $i < N$ 他可以向下移动到单元格 $(i + 1, j)$。
  • 写下一个长度为 $2N - 1$ 的序列,其中按访问顺序包含所经过单元格中的元素。

Deokin 教授想在题目中加入一个“内部梗”(inside joke),以便那些上课专心听讲的学生能对自己的答案充满信心。他希望构造一个序列,使得其 $MSS(A)$ 的值恰好为 $K$。给定一个大小为 $N \times N$ 的二维数组,你需要求出网格中共有多少条不同的路径,其对应的序列的最大子段和恰好为 $K$。

输入格式

第一行包含两个整数 $N$ 和 $K$,分别表示二维数组的大小和目标值($1 \le N \le 20$,$-4 \times 10^{10} \le K \le 4 \times 10^{10}$)。

接下来的 $N$ 行,每行包含 $N$ 个整数,表示二维数组中的值。第 $i$ 行的第 $j$ 个整数表示值 $A_{i,j}$。数组中使用的所有下标均从 1 开始($-10^9 \le A_{i,j} \le 10^9$)。

输出格式

输出一个整数,表示网格中能够产生最大子段和恰好为 $K$ 的序列的不同路径数量。

样例

输入样例 1

3 3
1 2 -5
-2 3 0
-1 -1 1

输出样例 1

2

输入样例 2

4 3
1 -1 1 1
1 1 1 1
1 1 1 1
1 1 -1 1

输出样例 2

4

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.