矩阵 matrix

  传送门 注意这题时限是2s

【问题描述】
  有一个n × m的矩阵,你从左上角走到右下角,只能向下和向右走。
  每个点上有一个重量v i,j 价值w i,j 的物品,你有一个容量为S的背包,经过一个点你可以
  将此点的物品放入背包,求最大能得到的价值。
【输入】
  输入文件 matrix.in。
  第一行三个数n, m, S。
  下面n行,每行m个数,第i + 1行第j个数表示v i,j 。
  下面n行,每行m个数,第i + n + 1行第j个数表示w i,j 。
【输出】
  输出文件 matrix.out。
  一行一个数表示最大的价值。

【数据范围】

  n, m ≤ 400, 0 ≤ v i,j , w i,j ≤ 1000, S ≤ 400

思路:

  直接背包 由上面或者下面的点转移过来就可以了

  但是数组要滚动的 不然就MLE了

  (好像大家都是f[2][401]401]?我觉得不需要第一维啊)

反思:

  一个这样子的题我也只有30分

  因为转移取max的时候落掉了f[j-1][k]

  而且还有 k : 0~j-1 时没有转移 (写飞扬的小鸟也是这一步出错)

  要长记性啦!! 对于一个状态没有转移的情况要想清楚啊

  再有把握的题也不要做得太快了 至少还是要再想清楚一遍

 1 #include<iostream>
 2 #include<cstdio>
 3 #define go(i,a,b) for(register int i=a;i<=b;i++)
 4 #define yes(i,a,b) for(register int i=a;i>=b;i--)
 5 using namespace std;
 6 int read()
 7 {
 8     int x=0,y=1;char c=getchar();
 9     while(c<‘0‘||c>‘9‘) {if(c==‘-‘) y=-1;c=getchar();}
10     while(c>=‘0‘&&c<=‘9‘) {x=(x<<1)+(x<<3)+c-‘0‘;c=getchar();}
11     return x*y;
12 }
13 int n,m,s,ans,v[410][410],w[410][410],f[410][410];
14 int main()
15 {
16     //freopen("matrix.in","r",stdin);
17     //freopen("matrix.out","w",stdout);
18     n=read();m=read();s=read();
19     go(i,1,n) go(j,1,m) v[i][j]=read();
20     go(i,1,n) go(j,1,m) w[i][j]=read();
21     go(i,1,n)
22         go(j,1,m)
23     {
24         yes(k,s,v[i][j])
25         {
26             f[j][k]=max(max(max(f[j][k-v[i][j]],f[j-1][k-v[i][j]])+w[i][j],f[j][k]),f[j-1][k]);
27             ans=max(ans,f[j][k]);
28         }
29         go(k,0,v[i][j]-1) f[j][k]=max(f[j][k],f[j-1][k]);
30     }
31     printf("%d",ans);
32     return 0;
33 }

原文地址:https://www.cnblogs.com/forward777/p/10326765.html

时间: 2024-08-03 03:48:36

矩阵 matrix的相关文章

python小白之矩阵matrix笔记(updating)

Matrix #python学习之矩阵matrix 2018.4.18 # -*- coding: UTF-8 -*- from numpy import * import numpy as np import math a=np.matrix('1 2 7;3 4 8;5 6 9')#矩阵的换行必须使用分号隔开,内部数据必须为字符串形式,元素之间必须以空格隔开 print(np.matrix([[1,2],[3,4]])) m=np.asmatrix(a)#将输入的a解释为矩阵m,并修改m中某

[ css 矩阵 Matrix 属性 ] css中transform的Matrix(矩阵)属性讲解及实例演示的区别

一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵)”的时候,难免会心生畏惧(即使你已经学过),正常心理.实际上,这玩意确实有点复杂. 然而,这却是屌丝逆袭的一个好机会. CSS同行间:你是不是有这样的感觉:哎呀呀,每天就是对着设计图切页面,貌似技术没有得到实质性地提升啊,或者觉得日后高度有限! 我们应该都知道二八法则(巴莱多定律),即任何一组东西中

变形--矩阵 matrix()

matrix() 是一个含六个值的(a,b,c,d,e,f)变换矩阵,用来指定一个2D变换,相当于直接应用一个[a b c d e f]变换矩阵.就是基于水平方向(X轴)和垂直方向(Y轴)重新定位元素,此属性值使用涉及到数学中的矩阵,我在这里只是简单的说一下CSS3中的transform有这么一个属性值,如果需要深入了解,需要对数学矩阵有一定的知识. 示例演示:通过matrix()函数来模拟transform中translate()位移的效果.HTML代码: <div class="wra

R 语言数据结构 --2 矩阵和数据框①矩阵-matrix

矩阵-matrix-2018年6月9日 今天很可惜,没有过多地学习R语言(主要因为去听了党课,学习了党重要讲话,所以没有看书),所以今天就总结一个矩阵吧.不过多的学习了. 首先稍微复习一下昨天的因子,首先要记得的就是mode()看每个元素,class()看整体是什么,另外如果你把TRUE abc 1都传给一个向量,那向量会把它进行类型转换.安全性:字符串>数字>逻辑值.会尽量向安全性高的转换.这个是隐式类型转换.当然也可以用as家族进行类型转化,例如将数字转换成字符串:as.character

css3 matrix 2D矩阵和canvas transform 2D矩阵

一看到“2D矩阵”这个高大上的名词,有的同学可能会有种畏惧感,“矩阵”,看起来好高深的样子,我还是看点简单的吧.其实本文就很简单,你只需要有一点点css3 transform的基础就好. 没有前戏,直奔主题 2D矩阵指的是元素在2D平面内发生诸如缩放.平移.旋转.拉伸四种变化,在css3中对应4个方法分别是scale().translate().rotate()和skew(),可以说这4个方法是css3矩阵matrix的快捷方式,因为这4个方法本质都是由matrix实现的.类似地,在canvas

numpy中的matrix矩阵处理

numpy模块中的矩阵对象为numpy.matrix,包括矩阵数据的处理,矩阵的计算,以及基本的统计功能,转置,可逆性等等,包括对复数的处理,均在matrix对象中. class numpy.matrix(data,dtype,copy):返回一个矩阵,其中data为ndarray对象或者字符形式:dtype:为data的type:copy:为bool类型. >>> a = np.matrix('1 2 7; 3 4 8; 5 6 9') >>> a          

leetcode 240. 搜索二维矩阵 II(Search a 2D Matrix II)

目录 题目描述: 示例: 解法: 题目描述: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] 给定 target = 5,返回 t

Leetcode之二分法专题-240. 搜索二维矩阵 II(Search a 2D Matrix II)

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] 给定 target = 5,返回 true. 给定 target = 20,返回 

[算法]在行列都排好序的矩阵中找数

题目: 给定一个有N*M的整型矩阵matrix和一个整数K,matrix的每一行和每一列都是排好序的.实现一个函数,判断K是否在matrix中. 例如: 0   1   2   5 2   3   4   7 4   4   4   8 5   7   7   9 如果K为7,返回true:如果K为6,返回false. 要求时间复杂度为O(N+M),额外空间复杂度为O(1). 思路: 1.从矩阵最右上角的数开始寻找(row=0,col=M-1). 2.比较当前数matrix[row][col]与