自用。
题目传送门:红牌 - 洛谷
题解:Inori_333
参考题解:无
/*
P1130 红牌
https://www.luogu.com.cn/problem/P1130
2024/10/25 submit:inori_333
*/
#include <iostream>
using namespace std;
int n, m;//n步,m个小组
int day[2005][2005];//day[i][j]表示第i个小组第j步需要的天数
/*
day[1][1]=2 day[1][2]=6 day[1][3]=1 day[1][4]=8
day[2][1]=3 day[2][2]=6 day[2][3]=2 day[2][4]=6
day[3][1]=4 day[3][2]=2 day[3][3]=3 day[3][4]=6
*/
int main(){
cin >> n >> m;
for(int i = 1; i <= m; i++){//第i个小组
for(int j = 1; j <= n; j++){//第j步
cin >> day[i][j];
}
}
for (int j = n - 1;j >= 1;j--){//从第n-1步开始
for (int i = 1; i <= m;i++){
int minval = 1e8;
day[i][j]+=min(day[i][j+1],day[i%m+1][j+1]);
}
}
/*
cout << endl;
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++){
cout << "day[" << i << "]" << "[" << j << "] = " << day[i][j] << " ";
}
cout << endl;
}*/
int ans = 1e8;
for (int i = 1; i <= m;i++){
ans = min(ans, day[i][1]);
}
cout << ans;
}