n个人作m幅画

题目网址: http://codeforces.com/problemset/problem/416/B

A well-known art union called "Kalevich is Alive!" manufactures objects d‘art (pictures). The union consists of n painters who decided to organize their work as follows.

Each painter uses only the color that was assigned to him. The colors are distinct for all painters. Let‘s assume that the first painter uses color 1, the second one uses color 2, and so on. Each picture will contain all these n colors. Adding the j-th color to the i-th picture takes the j-th painter tij units of time.

Order is important everywhere, so the painters‘ work is ordered by the following rules:

  • Each picture is first painted by the first painter, then by the second one, and so on. That is, after the j-th painter finishes working on the picture, it must go to the (j + 1)-th painter (if j < n);
  • each painter works on the pictures in some order: first, he paints the first picture, then he paints the second picture and so on;
  • each painter can simultaneously work on at most one picture. However, the painters don‘t need any time to have a rest;
  • as soon as the j-th painter finishes his part of working on the picture, the picture immediately becomes available to the next painter.

Given that the painters start working at time 0, find for each picture the time when it is ready for sale.

Input

The first line of the input contains integers m, n (1 ≤ m ≤ 50000, 1 ≤ n ≤ 5), where m is the number of pictures and n is the number of painters. Then follow the descriptions of the pictures, one per line. Each line contains n integers ti1, ti2, ..., tin (1 ≤ tij ≤ 1000), where tijis the time the j-th painter needs to work on the i-th picture.

Output

Print the sequence of m integers r1, r2, ..., rm, where ri is the moment when the n-th painter stopped working on the i-th picture.

Sample test(s)

input

5 112345

output

1 3 6 10 15 

input

4 22 53 15 310 1

output

7 8 13 21
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=50005;
int a[N][5];
int dp[N][5];

int main()
{
    int m,n,sum;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++)
        cin>>a[i][j];
        memset(dp,0,sizeof(dp));
        sum=0;
        for(int i=1;i<=n;i++)
        {
            sum+=a[1][i];
            dp[1][i]=sum;
        }
        sum=0;
        for(int i=1;i<=m;i++)
        {
            sum+=a[i][1];
            dp[i][1]=sum;
        }
        for(int i=2;i<=m;i++)
        for(int j=2;j<=n;j++)
        dp[i][j]=max(dp[i][j-1],dp[i-1][j])+a[i][j];
        for(int i=1;i<m;i++)
        printf("%d ",dp[i][n]);
        printf("%d\n",dp[m][n]);
    }
    return 0;
}
时间: 2024-12-19 22:18:08

n个人作m幅画的相关文章

你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料。为了让问题简单,我们用正整数表示不同颜色的颜料。你知道这幅画需要的n种颜色的颜料,你现在可以去商店购买一些颜料,但是商店不能保证能供应所有颜色的颜料,所以你需要自己混合一些颜料。混合两种不一样的颜色A和颜色B颜料可以产生(A XOR B)这种颜色的颜料(新产生的颜料也可以用作继续混合产生新的颜色,XOR表示异或操作)。本着勤俭节约的

输入描述: 第一行为绘制这幅画需要的颜色种数n (1 ≤ n ≤ 50) 第二行为n个数xi(1 ≤ xi ≤ 1,000,000,000),表示需要的各种颜料. 输出描述: 输出最少需要在商店购买的颜料颜色种数,注意可能购买的颜色不一定会使用在画中,只是为了产生新的颜色. 输入例子: 3 1 7 3 输出例子:3 #include<iostream> #include<algorithm> using namespace std; const int bitnum=8*sizeo

一幅画&lt;十六芒星盾&gt;---程序员or艺术家

画上是一面含有16个尖角的铜盾,这是我用程序算法生成的图像中最震撼的一幅.图像生成出来后,我看了好久,一边看一边想我的人生转向问题:我是不是该离开苦逼又屌丝的程序界,混入高端大气上档次的艺术圈? 说要进入艺术圈,只是提升逼格的话.其实我真正想的是:“靠,这画这么漂亮,要是能换成钱就好了.”虽说艺术是无价的,可艺术家是有价的.程序可以创造无限的财富,但程序员通常分不到多少.艺术虽高雅,但人是生活在世俗中的.我想的一个法子是:在某宝上开个网店,买电子艺术画,只买我用程序算法生成的图像.我需要将图像生

对于这幅画~都是橡皮和笔的锅~ (?&#180;ω`?)

好久没有画画~啦,然后哎,找2b 铅笔都没找到~橡皮也没找到~线条emmmm (//▽//),好像有点粗~(没事,当没有看见吧~),本来想再仔细画下~没有橡皮的纸是越描越黑啊~ emmmmm.....什么都不想说了,作案工具:hb 铅笔3支(应该是小学生用的吧~),还有那个橡皮(看图吧~硬的emmm ,非常的硬..都不敢擦的~) 假期没有特殊情况是不会再下筆了.除非工具都买好了再考虑吧~总结下,真的够惨的 小学生铅笔 小学生用的铅笔上的小橡皮(╯#--)╯╧═╧ ( ╯#--)╯┴-┴ 以下图片

android在Canvas使用drawBitmap画一幅画

1.画图的主要方法 //Bitmap:图片对象,left:向左偏移.top: 顶部偏移 drawBitmap(Bitmap bitmap, float left, float top, Paint paint) 2.对图片剪接和限定显示区域 drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint). Rect src: 是对图片进行裁截.若是空null则显示整个图片 RectF dst:是图片在Canvas画布中显示的区域. 多于sr

SDUT 2857-艺术联合会(dp)

艺术联合会 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 艺术联合会顾名思义就是n个画家用n种颜色一起进行艺术创作(作画).每一位画家仅使用一种颜色,并且规定n位画家使用的颜色是不同的,这里我们可以假设第一位画家使用的颜色编号为1,第2位画家使用的颜色编号为2以此类推.每一幅画上面都有n种颜色.我们假设把第j种颜色涂在第i幅画上需要消耗第j个画家的时间为 t[i][j]. 我们知道在任何情况下,规则都是至关重要的,因此画家们

用excel做一幅像素画

开发背景 看到网上有人发教程,如何通过在excel里设置单元格颜色画一幅画,感觉手工做太复杂,就打算用程序实现一个. 开发运行环境 python 2.7 PIL xlsxwriter 用法 python image2xlsx.py somefile.png 会在somefile.png目录下生成一个somefile.png.xlsx的文件 效果预览 其他说明 最好先使用小图,100*100左右,大图很慢. xlsxwriter对excel长宽的控制不是很好,可以在程序里微调. 源码下载 http

黑板报粉笔画绘画详细教程

1.粉笔画绘画技法 (1)直接画法 直接画法是指在黑板上用粉笔直接描绘出画面的画法.此种画法是笔笔定位,环环相扣,不做重复,作画速度快,画面痛快淋漓,一气呵成,能充分发挥出粉笔线描.色点和色块塑造形象的特点.所绘制的画面层次较少,简练概括,笔触生动清晰,极具装饰性.运用直接画法,首先应对描绘物象的结构.比例.位置布局做到心中有数,其次要从整体到局部逐步进行完善,下笔时,要准确果断,依手腕弹性.力度大小和用笔角度来控制点.线.面的变化.使画面达到具有韵律的美感.直接画法运用点.线.面塑造画面形象,

用鼠标在窗口中画方形

//用鼠标在窗口中画方形 //作者:sandy //时间:2015-10-7 //user can draw boxes on the screen #include <cv.h> #include <highgui.h> using namespace std; CvRect box; bool drawing_box=false; //定义一个回调函数 //define our callback which we will install for mouse event //

随便画一张,奥古斯都的世界观 及 lambda

他说:我依靠上帝,得见此眼前的世界,因上帝的光芒照耀它们:而正因为我身在上帝的光辉之中,我甚至不知道祂的存在. 他是早期基督教哲学家圣奥古斯都,他著有<上帝之城>和<忏悔录>. 上周,长春-武汉-宜昌,没有取得预想的结果.这算是武汉-宜昌之行的一个收获.飞机上升下降抖啊抖的,我正看到这一章,脑海里出现的就是下面这幅画的场景. 上上周,上海,完成了求音频的音高算法,也算一个收获. 回到长春,开始发烧.