矩阵 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 时没有转移 (写飞扬的小鸟也是这一步出错)
要长记性啦!! 对于一个状态没有转移的情况要想清楚啊
再有把握的题也不要做得太快了 至少还是要再想清楚一遍
#include<iostream>
#include<cstdio>
#define go(i,a,b) for(register int i=a;i<=b;i++)
#define yes(i,a,b) for(register int i=a;i>=b;i--)
using namespace std;
int read()
{
int x=,y=;char c=getchar();
while(c<''||c>'') {if(c=='-') y=-;c=getchar();}
while(c>=''&&c<='') {x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
int n,m,s,ans,v[][],w[][],f[][];
int main()
{
//freopen("matrix.in","r",stdin);
//freopen("matrix.out","w",stdout);
n=read();m=read();s=read();
go(i,,n) go(j,,m) v[i][j]=read();
go(i,,n) go(j,,m) w[i][j]=read();
go(i,,n)
go(j,,m)
{
yes(k,s,v[i][j])
{
f[j][k]=max(max(max(f[j][k-v[i][j]],f[j-][k-v[i][j]])+w[i][j],f[j][k]),f[j-][k]);
ans=max(ans,f[j][k]);
}
go(k,,v[i][j]-) f[j][k]=max(f[j][k],f[j-][k]);
}
printf("%d",ans);
return ;
}
矩阵 matrix的更多相关文章
- numpy教程:矩阵matrix及其运算
http://blog.csdn.net/pipisorry/article/details/48791403 numpy矩阵简介 NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组ar ...
- 果皇的矩阵[matrix]
#1101. 果皇的矩阵[matrix] 题目描述 输入格式 一行两个数,表示 N,M. 输出格式 一行一个数,表示答案对 10^9+7 取模后的结果 样例 样例输入 3 3 样例输出 38 数据范围 ...
- python小白之矩阵matrix笔记(updating)
Matrix #python学习之矩阵matrix 2018.4.18 # -*- coding: UTF-8 -*- from numpy import * import numpy as np i ...
- 题解 矩阵 matrix
矩阵 matrix Description 给出一个 n × m 的矩阵.请在其中选择至多 3 个互不相交的,大小恰为 k × k 的子矩阵,使得子矩阵的 权值和最大. Input 第一行三个整数 n ...
- 矩阵matrix
矩阵matrix 1. 矩阵matrix 1.1. 定义由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵.记作: 这m×n 个数称为矩阵A的元素,简称为元,数aij ...
- 变形--矩阵 matrix()
matrix() 是一个含六个值的(a,b,c,d,e,f)变换矩阵,用来指定一个2D变换,相当于直接应用一个[a b c d e f]变换矩阵.就是基于水平方向(X轴)和垂直方向(Y轴)重新定位元素 ...
- R语言矩阵matrix函数
矩阵是元素布置成二维矩形布局的R对象. 它们包含相同原子类型的元素.尽管我们可以创建只包含字符或只逻辑值的矩阵,但是它们没有多大用处.我们使用的是在数学计算中含有数字元素矩阵. 使用 matrix() ...
- 自定义View(11)**在onDraw中使用矩阵Matrix
1.代码示例 1.1 效果 原图 : 其尺寸为162 x 251,示例中的红点是变形的锚点. 变形之后: 1.2 代码 package com.e.weixin.session.view; impor ...
- 矩阵matrix变换的用法(css3属性transform: matrix)
参数 2D矩阵的表示 matrix(a,b,c,d,e,f),其中6个参数在矩阵的分布: -- -- | a c e | | b d f | | 0 0 1 | -- -- 在CSS3中矩阵的原始值是 ...
随机推荐
- 【Java并发编程】之九:死锁
当线程需要同时持有多个锁时,有可能产生死锁.考虑如下情形: 线程A当前持有互斥所锁lock1,线程B当前持有互斥锁lock2.接下来,当线程A仍然持有lock1时,它试图获取lock2,因为线程B ...
- Qt——常用控件样式
下面是我设计.调整.修改的Qt控件样式,仅供参考. Github地址:https://github.com/ikongziming/QtDemo/tree/master/StyleSheetDemo ...
- 虚拟机VMware的安装
什么是虚拟软件: 虚拟软件是一个可以使你在一台机器上同时运行二个或更多Windows.LINUX等系统.它可以模拟一个标准PC环境.这个环境和真实的计算机一样,都有芯片组.CPU.内存.显卡.声卡.网 ...
- 最新wireshark抓包教程
http://jingyan.baidu.com/article/d71306350f213b13fdf475b9.html 大家都知道,sniffer是一款收费产品, 要真正的学会使用,因为有许多的 ...
- 消除unchecked cast Warning
在Java中,经常会将一个Object类型转成自己想要的Map.List等等.通常的做法是: Object obj = ....; Map<String, String> castMap ...
- 【BZOJ2733】永无乡(线段树,并查集)
[BZOJ2733]永无乡(线段树,并查集) 题面 BZOJ 题解 线段树合并 线段树合并是一个很有趣的姿势 前置技能:动态开点线段树 具体实现:每次合并两棵线段树的时候,假设叫做\(t1,t2\), ...
- 用Python实现的数据结构与算法:快速排序
一.概述 快速排序(quick sort)是一种分治排序算法.该算法首先 选取 一个划分元素(partition element,有时又称为pivot):接着重排列表将其 划分 为三个部分:left( ...
- Android Studio怎么文件添加到收藏和打开收藏夹
http://jingyan.baidu.com/article/1709ad809e608b4634c4f0b9.html 在使用Android studio编写的代码的过程中,有时会碰到有一些文件 ...
- OpenJudge1001Exponentiation
问题描述 Problems involving the computation of exact values of very large magnitude and precision are co ...
- SSH连接与自动化部署工具paramiko与Fabric
paramiko paramiko是基于Python实现的SSH2远程安全连接,支持认证及密钥方法.可以实现远程命令执行,文件传输,中间SSH代理等功能,相对于Pexpect,封装层次更高. pip ...