#1154. 小A的牛马生活

小A的牛马生活

题目描述

小A每天都有许多工作会议。他希望减少上班时长,于是老板给了他 kk 张“会议取消券”。每张券可以取消一场会议,小A可以使用至多 kk 张券,也可以保留一些券不用。

小A统计了接下来 nn 天的会议安排。每天的时间被划分为 mm 个时段,用一个 n×mn\times m 的 0/10/1 矩阵 GG 表示:Gi,j=1G_{i,j}=1 表示第 ii 天的第 jj 个时段有一场会议,Gi,j=0G_{i,j}=0 表示该时段没有会议。

取消部分会议后,如果某天仍有会议,设当天最早和最晚的会议分别位于时段 l,rl,r,则小A当天的上班时长为 r−l+1r-l+1。如果当天没有会议,则当天的上班时长为 00。

例如,一天的会议安排为 [0,1,1,0,1][0,1,1,0,1],在不取消会议时,上班时长为 5−2+1=45-2+1=4;如果当天只剩一场会议,上班时长为 11。

请计算:使用至多 kk 张会议取消券后,这 nn 天的上班时长之和最小是多少?

输入格式

从文件 horse.in 中读入数据。

第一行包含两个整数 n,mn,m,分别表示天数和每天的时段数。

接下来 nn 行,每行包含 mm 个整数,其中第 ii 行的第 jj 个整数为 Gi,jG_{i,j}。

最后一行包含一个整数 kk,表示会议取消券的数量。

输出格式

输出到文件 horse.out 中。

输出一行,包含一个整数,表示最小的总上班时长。

样例 1 输入

4 4
0 0 0 1
1 0 0 1
1 1 0 1
0 0 0 1
3

样例 1 输出

4

样例 1 解释

取消第二天的第一场会议,以及第三天的前两场会议。这样每天都恰好剩下一场会议,每天上班时长均为 11,总上班时长为 44。

样例 2 输入

5 5
0 1 0 1 0
1 1 0 1 1
1 1 0 1 0
0 0 0 1 1
1 1 0 1 1
6

样例 2 输出

9

样例 3

见选手目录下的 horse/horse3.in 与 horse/horse3.ans。

该样例满足第 4∼64\sim6 个测试点的限制,且 n=500,m=3,k=500n=500,m=3,k=500。

样例 4

见选手目录下的 horse/horse4.in 与 horse/horse4.ans。

该样例满足第 7∼87\sim8 个测试点的限制,且 n=m=50,k=500n=m=50,k=500。

样例 5

见选手目录下的 horse/horse5.in 与 horse/horse5.ans。

该样例满足第 9∼109\sim10 个测试点的限制,且 n=m=500,k=500n=m=500,k=500,每天至多有两场会议。

样例 6

见选手目录下的 horse/horse6.in 与 horse/horse6.ans。

该样例满足第 11∼2011\sim20 个测试点的限制,且 n=m=k=500n=m=k=500。

数据范围

对于所有测试数据,保证 1≤n,m≤5001\le n,m\le500,0≤k≤5000\le k\le500,Gi,j∈{0,1}G_{i,j}\in\{0,1\}。

共有 2020 个测试点,每个测试点 55 分。

测试点 nn mm 特殊性质
1∼31\sim3 ≤4\le4 无
4∼64\sim6 ≤500\le500 =3=3
7∼87\sim8 ≤50\le50
9∼109\sim10 ≤500\le500 每天至多两场会议
11∼2011\sim20 无

“每天至多两场会议”指对于每个 1≤i≤n1\le i\le n,都有 ∑j=1mGi,j≤2\sum_{j=1}^mG_{i,j}\le2。

统计

相关

在下列比赛中:

第三套