本文主要是介绍Codeforces Round #241 (Div. 2) B,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:B. Art Union
题意:m张画,n个画家,每个画家画每幅画都有一个时间,然后只能从1到n一个个画过去,问每张画的完成时间
思路:贪心思想,每个画家画的时候,他的开始位置肯定为上一个结束位置和自己空闲时间开始的最大值。然后推过去,每张画保存下答案即可
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int M = 50005;
const int N = 10;int m, n, ti[M][N], vis[N], ans[M];int main() {scanf("%d%d", &m, &n);for (int i = 1; i <= m; i++)for (int j = 1; j <= n; j++) {scanf("%d", &ti[i][j]);}for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {vis[j] = max(vis[j - 1], vis[j]) + ti[i][j];}ans[i] = vis[n];}printf("%d", ans[1]);for (int i = 2; i <= m; i++)printf(" %d", ans[i]);printf("\n");return 0;
}
这篇关于Codeforces Round #241 (Div. 2) B的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!