s[i][j]=Max_{(0\leq p\leq max(cl_i,k))} \begin{Bmatrix} g[i][j-p]-g[i][p]+1\end{Bmatrix}
放上丑陋的代码:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int s[1000][1000],f[1000],g[1000][1000];
int n,m,k,sum; char c;
int dis(int i,int x,int y){return (g[i][x]-g[i][y]+1);}
int main()
{
cin>>n>>m>>k; memset(s,0x3f,sizeof(s));
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++) {cin>>c;
if (c=='1') g[i][++g[i][0]]=j;}
//~~~~~
for (int i=1;i<=n;i++)
{
int pm=g[i][0],ll=g[i][pm]-g[i][1]+1; s[i][0]=ll; s[i][pm]=0;
if (pm==0) continue; else
for (int p=1;p<=min(k,g[i][0]);p++)//skip p classes in total
for (int j=0;j<=p;j++) if (pm-(p-j)>=j+1) s[i][p]=min(s[i][p],dis(i,pm-(p-j),j+1)); //skip j before
for (int p=0;p<=min(g[i][0],k);p++) s[i][p]=ll-s[i][p];
sum+=ll;
}
for (int i=1;i<=n;i++)
for (int j=k;j>=1;j--)
for (int p=0;p<=min(g[i][0],k);p++)
if (j>=p) f[j]=max(f[j],f[j-p]+s[i][p]);
cout<<sum-f[k]<<endl;
}
```