博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P2706 巧克力
阅读量:5077 次
发布时间:2019-06-12

本文共 1458 字,大约阅读时间需要 4 分钟。

题目背景

王7的生日到了,他的弟弟准备送他巧克力。

题目描述

有一个被分成n*m格的巧克力盒,在(i,j)的位置上有a[i,j]块巧克力。就在送出它的前一天晚上,有老鼠夜袭巧克力盒,某些位置上被洗劫并且穿了洞。所以,你——王7的弟弟王9,必须从这个满目苍夷的盒子中切割出一个矩形巧克力盒,其中不能有被老鼠洗劫过的格子且使这个盒子里的巧克力尽量多。

输入格式

第一行有两个整数 n、m。第 i+1行的第 j 个数表示a[ i , j ]。如果这个数为 0 ,则表示这个位置的格子被洗劫过。

输出格式

输出最大巧克力数。

输入输出样例

输入 #1复制
3 41 2 3 45 0 6 310 3 4 0
输出 #1复制
17//10 3 4这个矩形的巧克力数最大

说明/提示

1≤n,m≤300

0≤a[i,j]≤255

 

这道题。。。

 

吐槽:我从昨天晚上交上去,到今天晚上整整24个小时后它还是“Juding”。。。。。。

 

我觉得我是对的。。。

 

 

#include
#include
#define inf 1<<25#define ll long longusing namespace std;ll n,m;ll map[310][310],s[310],up[310][310];ll ans;int i,j,k;inline int read(){ int s=0,w=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-'){ w=-1; } ch=getchar(); } while(ch>='0'&&ch<='9'){ s=s*10+ch-'0'; ch=getchar(); } return s*w;}int main(){ n=read(); m=read(); for(i=1;i<=n;++i){ for(j=1;j<=m;++j){ map[i][j]=read(); if(!map[i][j]){ map[i][j]=-inf; } up[i][j]=up[i-1][j]+map[i][j]; } } for(i=1;i<=n;++i){ for(j=i;j<=n;++j){ ll mi=0; for(k=1;k<=m;++k){ s[k]=s[k-1]+up[j][k]-up[i-1][k]; } for(k=1;k<=m;++k){ ans=max(ans,s[k]-mi); mi=min(s[k],mi); } } } printf("%lld\n",ans); return 0;}

 

 

转载于:https://www.cnblogs.com/hrj1/p/11538073.html

你可能感兴趣的文章
IOS开发之实现App消息推送
查看>>
Workspace defines a VM that does not contain a valid jre/lib/rt.jar: C:\Program Files\Java\jre7
查看>>
java多线程有哪些实际的应用场景?
查看>>
动态分配内存-realloc
查看>>
PHP 程序员学数据结构与算法之《栈》
查看>>
Three typical types of Data Mining applications
查看>>
通过rsync+inotify实现数据实时备份
查看>>
四种第三方登录(附源码)(转)
查看>>
20145305 《信息安全系统设计基础》第12周学习总结
查看>>
【OpenCV应用笔记】(彩色/灰度)图像像素值读取并保存到txt文件
查看>>
一句话输出NGINX日志访问IP前十位排行
查看>>
Linux SendMail 使用外部SMTP服务发送邮件
查看>>
thinkPHP5.0 获取域名
查看>>
PKU P2411 Mondriaan's Dream
查看>>
策略模式
查看>>
分布式Hadoop安装(一)
查看>>
204. Count Primes
查看>>
Laravel 下生成验证码的类
查看>>
Linux基础命令---cal
查看>>
四种线程池使用
查看>>