3997: [TJOI2015]组合数学

来源:互联网 发布:mac多余账户删不了 编辑:程序博客网 时间:2024/05/16 06:16

Description

 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走。问至少走多少次才能将财宝捡完。此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完。

题解:
一道DP题,对于一个点,它左边的下面的那个点它一定到不了,所以走的最小次数就是两个点上的财宝数。

直接开打。。。。

#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;const int N=1010;int t,n,m;int sa[N][N];int f[N][N];int main(){scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){scanf("%d",&sa[i][j]);}memset(f,0,sizeof(f));for(int i=1;i<=n;i++){for(int j=m;j>=1;j--){f[i][j]=max(f[i][j],f[i-1][j+1]+sa[i][j]);f[i][j]=max(f[i-1][j],f[i][j]);f[i][j]=max(f[i][j+1],f[i][j]);}}printf("%d\n",f[n][1]);}}
题外话:

昨天早上打了个乱七八糟的noip模拟赛(其实是名字太长忘记了)

第一题用set居然0分????!!!

结果发现忘打文件输入输出了,真的菜啊。。。。

总分170,太弱了。

原创粉丝点击