首页 > 其他分享 >P7074 [CSP-J2020] 方格取数 题解

P7074 [CSP-J2020] 方格取数 题解

时间:2023-07-23 10:34:44浏览次数:46  
标签:grid int 题解 整数 取数 maxn 方格 P7074 dp

题目:

题目描述

设有 n*m 的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的方格中的整数,求它能取到的整数之和的最大值。

输入格式

第一行有两个整数 n, m。

接下来 n 行每行 m 个整数,依次代表每个方格中的整数。

输出格式

一个整数,表示小熊能取到的整数之和的最大值。

 1 #include<bits/stdc++.h>
 2 #define maxn 1001
 3 using namespace std;
 4 int grid[maxn][maxn],dp[maxn][maxn];
 5 int main()
 6 {
 7     int n, m;
 8     cin >> n >> m;
 9     for(int i=1;i<=n;++i)
10     {
11         for(int j=1;j<=m;++j)
12         {
13             cin>>grid[i][j];
14         }
15     }
16     
17     dp[1][1] = grid[1][1];
18     for(int i=2;i<=n;++i)
19     {
20         dp[i][1]=dp[i-1][1]+grid[i][1];
21     }
22     for(int j=2;j<=m;++j)
23     {
24         int t=INT_MIN;
25         for(int i=1;i<=n;++i)
26         {
27             t=max(t,dp[i][j-1])+grid[i][j],dp[i][j]=max(t,dp[i][j]);
28         }  
29         t=INT_MIN;
30         for(int i=n;i>0;--i)
31         {
32             t=max(t,dp[i][j-1])+grid[i][j],dp[i][j]=max(t,dp[i][j]);
33         }
34     }
35     cout << dp[n][m] << endl;
36     return 0;
37 }

 

标签:grid,int,题解,整数,取数,maxn,方格,P7074,dp
From: https://www.cnblogs.com/hoilai-jz/p/17574720.html

相关文章

  • AtCoder Beginner Contest 311 A-E题解
    A-FirstABC题意给一个长度为N的仅由ABC三个字符组成的字符串S,问S中ABC三个字符第一次出现的位置的最大值。题解使用map<char,bool>判重,记录当前不同的字符串的个数cnt,当cnt等于3时,输出此时的下标+1作为答案。Code#include<bits/stdc++.h>usingnamespacestd;usingll......
  • 第二次比赛部分题解
    P7060[NWRRC2014]AlarmClock  #include<bits/stdc++.h>usingnamespacestd;intmain(){intn;cin>>n;intarr[10]={6,2,5,5,4,5,6,3,7,6};boolcheck=false;//对于时间ab:cdfor(inta=0;a<=2;a++){//a最多可以到2(因为最大为23......
  • 2023“钉耙编程”中国大学生算法设计超级联赛(2)部分题解
    2023“钉耙编程”中国大学生算法设计超级联赛(2)部分题解7.201002 BinaryNumber可以发现,每个位置最多修改两次,再多了没有意义。当k为0时,无法修改直接输出。当n为1时,看k的奇偶性,若为奇数则将其翻转输出,否则直接输出。当n不为1时:如果给定的次数k小于序列中连续0串的个数,那一定......
  • mongodb随机获取数据
    MongoDB随机获取数据在MongoDB中,我们可以使用find方法来查找符合特定条件的文档。通常,我们会使用查询操作符来指定条件,例如相等、大于、小于等。但是,有时我们需要从数据库中随机获取一些数据。本文将介绍如何在MongoDB中实现随机获取数据的操作。随机获取单个文档要随机获取单个......
  • P1833 樱花 题解
    二进制拆分做法:把每一个物品根据2的多少次方拆分,因为任何数都可以转化为二进制数核心思想:把每一个物品拆成很多个,分别计算价值和所需时间,再转化为01背包求解最后一点:完全背包可以把他的空间记为999999,不要太大,一般百万就足够了还有一点:cin和scanf不可以混用代码#include<bit......
  • P1679 神奇的四次方数 题解
    思路先枚举出\(n\)以内的4次方数然后dp.代码#include<bits/stdc++.h>#definelllonglong#defineldlongdouble#definemin(x,y)(x<y?x:y)usingnamespacestd;inlinevoidread(int&x){ x=0; shortflag=1; charc=getchar(); while(c<'0'......
  • P1757 通天之分组背包 题解
    思路分组背包模版题,不多说。代码#include<bits/stdc++.h>#definelllonglong#defineldlongdoubleusingnamespacestd;inlinevoidread(int&x){ x=0; shortflag=1; charc=getchar(); while(c<'0'||c>'9'){ if(c=='-......
  • 第二次比赛出题题解
    第二次比赛题解P1138第k小整数-洛谷|计算机科学教育新生态(luogu.com.cn)主要了解set的用法,set会自动去重和排序#include<bits/stdc++.h>usingnamespacestd;signedmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intn,k;cin>>......
  • P1060 [NOIP2006 普及组] 开心的金明 题解
    思路01背包模版题,唯一不同的是加了一个条件就是价格与重要度的乘积。转移方程为:dp[j]=max(dp[j],dp[j-w[i]]+w[i]*v[i]);这里加了滚动数组优化。代码#include<bits/stdc++.h>#definelllonglong#defineldlongdoubleusingnamespacestd;inlinevoidread(int&x){......
  • 【大联盟】20230626 集查并(dsu) 题解 AT_toyota2023spring_final_g 【Git Gud】
    【大联盟】20230626集查并(dsu)题解AT_toyota2023spring_final_g【GitGud】zyx/bx题目描述here题解由于这场出了T2、验了T3(顺序是反的),所以赛时一直在想这个题,不过很遗憾不会。相当有意思的题。考虑合并两个点\(x,y\)时,对以后产生的贡献为\(\max\{f_x,f_y\}\),\(f_x......