#include<bits/stdc++.h> using namespace std; int a[55][55],f[55][55][55][55],n,m,t; int main(){ scanf("%d",&n); int b,c,d; do{ scanf("%d%d%d",&b,&c,&d); a[b][c]=d; }while(b||c||d);
题目描述 设有$N\times N$的方格图 $(n\leqslant 9)$,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 $0$。如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0
设有 N×N 的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。 某人从图中的左上角出发,可以向下行走,也可以向右行走,直到到达右下角。 在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。 共走了两次,试找出两条这样的路径,使得取得的数字和为最大。
洛谷版链接:https://www.luogu.com.cn/blog/jvruo-0076/solutiun-p1004 这个题其实吧,说简单也不简单对于我来说,说难也不难对您来说。 其实,这个题就是让你去找最值。也就是 ~~~ f[i][j][l][k] = max(max(f[i - 1][j][l - 1][k], f[i][j - 1][l][k-1]), max(f[i - 1][j][l][k - 1], f
这是提高组得一道动态规划题,也是学习y氏思考法的第一道题。 题意为给定一个矩阵,里面存有一些数,你从左上角开始走到右下角,另一个人从右下角开始走到左上角,使得两个人取数之和最大,当然一个数只可以取走一次并且行走规则与采花生一样。开始之前我们把问题进行一下转化,把右下角的人拿
P1004 方格取数 题解 我们可以两遍路一起走 f[i][j][k][l] 表示第一条路走到(x,y ),第二条路走到(k,l)时的最大值 然后转移 判断(x,y)(k,l)是否相同就好 代码 #include<iostream>#include<cstdio>#include<string>#include<cstring>#include<cmath>#include<algorithm>#include<queu
P1004 方格取数 我们做题的思路可以这样: ①先看一下出题日期(毕竟是NOIP的题目,有一定的水准),然后发现是2000年的普及第四题 我们要知道的是,好像比较前面的几年由于1999的数塔IOI问题后,接下来几年的最后一两题都很喜欢出DP 所以,我们首先看一下题目的内容,求路径最大的方法,这时候就要想
题目描述 设有N \times NN×N的方格图(N \le 9)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字00。如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0 0 0
网络流大法吼 不想用DP的我选择了用网络流…… 建模方法: 从源点向(1,1)连一条容量为2(走两次),费用为0的边 从(n,n)向汇点连一条容量为2,费用为0的边 每个方格向右边和下边的方格连一条容量为inf,费用为0的边 走到每个方格,会取出方格上的数。每个方格的数只会被取走一次。 于是我们考
题目描述 设有N \times NN×N的方格图(N \le 9)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字00。如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0 0 0 15 0 0