p1164【立方体求和】
题目:
SubRaY有一天得到一块西瓜,是长方体形的....
SubRaY发现这块西瓜长m厘米,宽n厘米,高h厘米.他发现如果把这块西瓜平均地分成m*n*h块1立方厘米的小正方体,那么每一小块都会有一个营养值(可能为负,因为西瓜是有可能坏掉的,但是绝对值不超过200).
现在SubRaY决定从这m*n*h立方厘米的西瓜中切出mm*nn*hh立方厘米的一块小西瓜(一定是立方体形,长宽高均为整数),然后吃掉它.他想知道他最多能获得多少营养值.(0<=mm<=m,0<=nn<=n,0<=hh<=h.mm,nn,hh的值由您来决定).
换句话说,我们希望从一个m*n*h的三维矩阵中,找出一个三维子矩阵,这个子矩阵的权和最大.
一个2*3*4的例子,最优方案为切红色2*3*1部分
输入格式 Input Format
首行三个数h,m,n(注意顺序),分别表示西瓜的高,长,宽.
以下h部分,每部分是一个m*n的矩阵,第i部分第j行的第k个数表示西瓜第i层,第j行第k列的那块1立方厘米的小正方体的营养值.
输出格式 Output Format
SubRaY所能得到的最大营养值
样例输入 Sample Input
2 3 4
4 1 2 8
0 5 -48 4
3 0 1 9
2 1 4 9
1 0 1 7
3 1 2 8
样例输出 Sample Output
45
时间限制 Time Limitation
1s
注释 Hint
对于30%的数据,h=1,1<=m,n<=10
对于全部的数据,1<=h<=32,1<=m,n<=50,保证h<=m,n
来源 Source
noip 模拟赛
因为数据比较小,所以不会超时的。你先处理下这一层这个位置和上个位置的累加和,然后在处理每一列的累加和。
然后每次运算只用从左开始往右进行累加,算的就是一个矩阵了。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int a[52][52][52]; int c[52][52][52]; int b[1000]; int p[1000]; int main() {int h,m,n;//高,长,宽cin>>h>>m>>n;for(int w=1;w<=h;w++){for(int i=1;i<=m;i++){for(int j=1;j<=n;j++)cin>>a[w][i][j],c[w][i][j]=a[w][i][j];}}for(int w=1;w<=h;w++){for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){c[w][i][j]+=c[w-1][i][j];}}}for(int w=1;w<=h;w++){for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){c[w][i][j]+=c[w][i-1][j];}}}/*cout<<endl;for(int w=1;w<=h;w++){for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){cout<<c[w][i][j]<<' ';}cout<<endl;}}*/int ans=0;for(int w=1;w<=h;w++)//第几层 {for(int H=1;H<=w;H++)//w层上面选几层 {for(int i=1;i<=m;i++)//第i行 {for(int t=1;t<=i;t++)//这行上面的t行 {memset(b,0,sizeof(b));memset(p,0,sizeof(p));for(int k=1;k<=n;k++)//从左往右加 {p[k]=c[w][i][k]-c[H-1][i][k]-c[w][t-1][k]+c[H-1][t-1][k];b[k]=max(b[k-1]+p[k],p[k]);if(b[k]>ans)ans=b[k];}}}}}cout<<ans<<endl;return 0; }
程序里有标注
转载于:https://www.cnblogs.com/lcyhaha/p/7387842.html
p1164【立方体求和】相关推荐
- 多维时空数据介绍(1)时空立方体创建及可视化
前言 时空立方体是Pro软件中用来表示时间与空间相结合的一类多维时空数据.使用时空立方体可以对时空数据进行可视化,并进行时间序列预测以及时空模式分析. . 操作平台:arcgis pro PART/ ...
- 张量基础学习(一 概念,求和指标,符号)
欢迎大家来到我的这一个新专栏,本专栏我们将一起学习并探讨一些张量方面的知识,同样,需要一定的线性代数的基础知识铺垫,但肯定是没有量子计算那么深入和复杂,有需要的小伙伴可以点点关注,您的鼓励是我前进的最 ...
- LeetCode简单题之逐步求和得到正数的最小值
题目 给你一个整数数组 nums .你可以选定任意的 正数 startValue 作为初始值. 你需要从左到右遍历 nums 数组,并将 startValue 依次累加上 nums 数组中的值. 请你 ...
- loj2058 「TJOI / HEOI2016」求和 NTT
loj2058 「TJOI / HEOI2016」求和 NTT 链接 loj 思路 \[S(i,j)=\frac{1}{j!}\sum\limits_{k=0}^{j}(-1)^{k}C_{j}^{k ...
- PyTorch 安装和基本运算— Tensor 的数据类型(浮点型、整型、随机浮点型等)、基本运算(绝对值、求和、裁剪、求商、求积、求幂等)、Tensor 与 Numpy 转换
PyTorch 的安装可以到官网 https://pytorch.org/,选择适合自己机器以及安装方式,执行对应的命令即可. 除了安装 PyTorch 之外,建议也安装 torchvision 包. ...
- L1-009. N个数求和
L1-009. N个数求和 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题的要求很简单,就是求N个数字的和.麻烦的是,这些 ...
- matlab立方体投影,那些投影到三维的高维立方体,后来都怎么样了?(浅度好文)...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 function hypercube( N, a, b, c) %N为立方体维数,N不小于3 % a为投影方式,b为是否画面,c为是否旋转 %取值 1 点 ...
- shell脚本求和_【零基础学云计算】Shell编程之case语句与循环语句
case多分支语句 循环语句 for循环语句 while循环语句 untli循环语句 Shell函数 Shell数组 case语句的结构 针对变量的不同取值,分别执行不同的命令序列 case 变量值 ...
- ply补全为立方体_ply 点云文件格式
英文版 ply格式 http://paulbourke.net/dataformats/ply/ 典型的 PLY 文件结构:头部顶点列表面片列表(其他元素列表) 头部是一系列以回车结尾的文本行 ...
最新文章
- [20190402]对比_mutex_wait_scheme不同模式cpu消耗.txt
- 数据中心节能专题—他山之石可以攻玉
- 互联网1分钟 | 0914
- Hinton神经网络公开课10 Combining multiple neural networks to improve generalization
- 前端学习(2319):angular2概述
- 万字干货:一步步教你如何在容器上构建持续部署!
- 安卓手机状态栏 定位服务自动关闭_手机电池为什么会越用越不耐用
- WebSocket 解决javascript跨域问题一剂良药
- 创建数据账号只有个别表的权限_只有普通权限账号,如何把远程数据库中该用户的数据表导入到本地数据库?...
- 5行代码识别各种验证码
- 2018-1-27工作周总结
- 2022年TikTok的9个变现模式
- Windows取证——CHNTPW工具使用(可更改 Windows 密码)
- win7 安装openssh_Windows安装OpenSSH服务
- js时间搓转时间,日期横杠转斜杠,时间转时间搓,年月日补个零,星期几,获取当前时间
- rd 删除 长目录_长时间的反馈循环如何伤害您的rd
- 强哥带你零基础学java-03运行第一个java程序
- 李永乐团队2021数学基础过关660题勘误表
- 光纤主干线路绕不过的一款光时域反射仪 TFN F7系列
- FUTURES模型 | 4. Demand 需求子模块
热门文章
- 遍历List过程中同时修改
- Ulink2 No Ulink Device found 解决办法
- iOS 为tableview添加新的cell类
- 卷积,DFT,FFT,图像FFT,FIR 和 IIR 的物理意义
- c语言科学计数法_C入门:C语言中数据的储存(上)
- C如何将二维数组作为返回值
- 在python中、实例变量在类的内部通过_[宜配屋]听图阁
- byte数组转为string_String类
- html的扇形代码导航,CSS3--利用transform和transition属性制作扇形导航
- c语言调用话筒的程序,c – OpenAL:如何创建简单的“麦克风回声”程序?