【普及组模拟赛】Note
2016-09-24 13:01
106 查看
题目描述
数学课上,D突然想到一件很重要的事情要告诉Z,但是她们分别坐在教室的左前方和右后方,这可怎么办呢?D决定传纸条!
但是问题又出现了,D要告知Z的是个机密,D不希望有很多人知道。可是由于纸条必须经过其它同学,所以D只好希望知道这个机密的人越少越好。
每个同学都有一个好奇程度k(0≤k≤20),好奇程度越大,偷看纸条的可能性也就越大,D希望传递纸条的路径经过的同学的好奇程度和越小越好。
我们假定每个同学只会将纸条传递给ta后方或者右方的同学。
输入
第1行,两个整数n,m,表示教室有n行m列。(1≤n,m≤100)第2行到第n+1行,每行m个整数,表示每个同学的好奇程度。
其中D在第1行第1列,Z在第n行第m列,她们的好奇程度都为0。
输出
共1行,1个整数,表示传递路径的好奇程度.思路
很明显的dp水题,f[i,j]=max(f[i−1,j],f[i,j−1])#include <stdio.h> using namespace std; int f[1000][1000],a[1000][1000]; int min(int x,int y) { return x<y?x:y; } int main() { freopen("note.in","r", stdin); freopen("note.out","w", stdout); int n,m; scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) scanf("%d",&a[i][j]); for (int i=2;i<=m;i++) f[1][i]=f[1][i-1]+a[1][i]; for (int i=2;i<=n;i++) f[i][1]=f[i-1][1]+a[i][1]; for (int i=2;i<=n;i++) for (int j=2;j<=m;j++) f[i][j]=f[i][j]+min(f[i-1][j],f[i][j-1])+a[i][j]; printf("%d",f [m]); }
相关文章推荐
- 【普及组模拟赛】游戏(atlantis.pas/cpp) //2018.1.26
- JZOJ(中山纪中) 1983. 【普及组模拟赛】手机(mobile.pas/cpp)
- 【jzoj】2018.2.3NOIP普及组——D组模拟赛
- 初中OJ1996【2015.8.3普及组模拟赛】WZK旅游(seek)
- 2017.1.19【初中部 】普及组模拟赛C组 eko 题解
- 2017.09.09【NOIP 普及组】模拟赛C组
- 【普及组模拟赛】家族(family.pas/cpp)//2018.1.26
- JZOJ(中山纪中) 1985. 【普及组模拟赛】家族(family.pas/cpp)
- 2016.09.17【初中部 NOIP普及组 】模拟赛
- 2017.1.15【初中部 】普及组模拟赛C组 小x的数列 题解
- 2017.1.19【初中部 】普及组模拟赛C组 MATH 题解
- JZOJsenior2433.2017.04.08【NOIP 普及组】模拟赛C组 T1最短路上的统计
- 纪中训练 day1 【NOIP普及组】模拟赛D组 解题报告
- 纪中模拟赛——普及
- JZOJ(中山纪中) 1986. 【普及组模拟赛】作业(homework.pas/cpp)
- 初中OJ1997【2015.8.3普及组模拟赛】WZK打雪仗(war)
- 2017.1.12【初中部 】普及组模拟赛C组 连续自然数和 题解
- 2017.1.15【初中部 】普及组模拟赛C组 小x的极限 题解
- JZOJsenior2016.2017.04.08【NOIP 普及组】模拟赛C组 T2最小步数
- 2018.01.21【NOIP普及组】模拟赛D组