bestcoders Happy Birthday

Happy birthday

Accepts: 178

Submissions: 511

Time Limit: 2000/1000 MS (Java/Others)

Memory Limit: 65536/65536 K (Java/Others)

问题描述

今天是Gorwin的生日。所以她的妈妈要实现她的一个愿望。Gorwin说她想吃很多蛋糕。所以他妈妈带她来到了蛋糕园。

这个园子被分成了n*m个方格子。在每一个格子里面,有一个蛋糕。第i行,第j列的格子中有一个重量为wij千克的蛋糕,Gorwin从左上角(1,1)的格子开始走,走到右下角(n,m)的格子。在每一步中,Gorwin可以向右或者向下走,即是:Gorwin站在(i,j)的时候,她可以走向(i+1,j)或者(i,j+1) (然而她不能走出这个花园)。

当Gorwin到达一个格子的时候,她可以把那个格子里面的蛋糕吃完或者不吃。但是,她不能只吃一部分。她的胃不是那么大,所以她最多只能吃K千克的蛋糕。现在,Gorwin站在左上角,她在看蛋糕园的地图,想要找出一条路,能够使得她吃到的蛋糕最多的一条路。请你来帮帮忙。

输入描述

多组测试数据(大概15组), 每一组数据在一行中给出n, m, K.
在接下来n行中,第i行有m个整数wi1,wi2,wi3,?wim,代表第i行m个蛋糕的重量。
请处理到文件末尾。

[参数约定]
所有输入均为整数。
1<=n,m,K<=100
1<= wij <=100

输出描述

对于每一个数据,输出一个值,代表Gorwin最多能吃到的蛋糕重量。

输入样例

1 1 2
3
2 3 100
1 2 3
4 5 6

输出样例

0
16

Hint

在第一组数据中,Gorwin不能吃蛋糕的一部分,所以她不能吃掉任何蛋糕。
在第二个数据中,Gorwin按照以下路径行走(1,1)->(2,1)->(2,2)->(2,3)

当她通过一个格子的时候,就把那个格子里面的蛋糕吃光。这样她吃的总重量就是1+4+5+6=16。
#include <bits/stdc++.h>

using namespace std;
#define maxn 100 + 5

int a[maxn][maxn];
int d[maxn][maxn][maxn];
int n, m, k;

void solve()
{
    memset(d, 0, sizeof(d));
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
           for(int t=0; t<=k; t++)
    {
        if(t < a[i][j])
            d[i][j][k] = max(d[i-1][j][t], d[i][j-1][t]);
        else d[i][j][t] = max(max(d[i-1][j][t], d[i][j-1][t]), max(d[i-1][j][t-a[i][j]]+a[i][j], d[i][j-1][t-a[i][j]]+a[i][j]));
    }
    int ans = 0;
    for(int i=1; i<=k; i++)
        ans = max(ans, d[n][m][i]);
    printf("%d\n", ans);
}

int main()
{
    while(~scanf("%d%d%d", &n, &m, &k))
    {
        for(int i=1; i<=n; i++)
            for(int j=1; j<=m; j++)
            scanf("%d", &a[i][j]);

        solve();
    }
    return 0;
}

时间: 2024-08-13 07:07:21

bestcoders Happy Birthday的相关文章

bestcoders

ZYB loves Xor I Accepts: 142 Submissions: 696 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) 问题描述 ZYB喜欢研究Xor,现在他得到了一个长度为n的数组A.于是他想知道:对于所有数对(i,j)(i∈[1,n],j∈[1,n]),lowbit(AixorAj)之和为多少.由于答案可能过大,你需要输出答案对998244353取模后的值 定

bestcoders pog love szhIII

pog loves szh III Accepts: 63 Submissions: 483 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) 问题描述 pog在与szh玩游戏,首先pog在纸上画了一棵有根树,这里我们定义1为这棵树的根,然后szh在这棵树中选了若干个点,想让pog帮忙找找这些点的最近公共祖先在哪里,一个点为S的最近公共祖先当且仅当以该点为根的子树包含S中的所有点

[精通Objective-C]键值编程

[精通Objective-C]键值编程 参考书籍:<精通Objective-C>[美] Keith Lee 目录 精通Objective-C键值编程 目录 键值编码KVC 键值观察KVO 键值编码KVC 键值编码API可以直接访问类的属性: @interface Hello : NSObject @property NSString* greeting; @end @implementation Hello -(id)init{ if ((self = [super init])) { _gr