cf946D 背包+区间dp 好题 /* 先预处理出每行消去i个1后可以的到的最小时间: 先求每行的前缀和,枚举左端点和右端点,消去的1 cost=tot-sum[r]+sum[l-1],区间长度=r-l+1 time[cost]=min(time[cost],len) 然后再进行行间处理: 就是n行删k个,转化为n组物品,然后总代价是k 分组背包做一下完事 dp[i][j]表示到第i行删了j个的最少上课时间 */ #include<bits/stdc++.h> using namespace…