[solution]JZOJ-5838 旅游路线
[solution] JZOJ-5838 旅游路线
Time Limits 1000ms,Memory Limits 128MB
题面
Description
GZOI队员们到X镇游玩。X镇是一个很特别的城镇,它有m+1条东西方向和n+1条南北方向的道路,划分成mn个区域,这些区域标从北到南、从西到东的坐标标识为从坐标 (1,1) 到坐标(m,n)。 GZOI队员们预先对这mn个区域打分V(i,j)(分数可正可负)。分数越高表示他们越想到那个地方,越低表示他们越不想去。为了方便游玩,队员们需要选定一个连续的区域集合作为活动范围。例如,如果他们选择了最西北的区域(m1,nl)和最东南(m2,n2)区域(m1<=m2,n1<=n2),那他们的活动范围是 {D(i,j)|m1<=i<=m2,n1<=j<=n2},其游览总分则为这些活动范围的区域总分。 GZOI队员们希望他们活动范围内的区域的分值总和最大。你的任务是编写一个程序,求出他们的活动范围(m1,nl),(m2,n2〉。
Input
输入第一行为整数m(1<=m<=200),n(1<=n<=200),用空格隔开 下面为m行,每行有n列整数,其中第i行第j列的整数,代表V(i,j),每个整数之间用空格隔开,每个整数的范围是 [-200000,200000],输入数据保证这些整数中,至少存在一个正整数。
Output
输出只有一行,为最高的分值。
Sample Input
4 5
1 -2 3 -4 5
6 7 8 9 10
-11 12 13 14 -15
16 17 18 19 20
Sample Output
146
解题思路
一眼看出这是一个包装过的最大子矩阵和问题,枚举左右边界列号,再将选中的每行的部分合并,做一下最大子串和就OK了
什么,最大子串和不会? 请出门右转
每行的选中部分的和用前缀和搞一下,ok
code
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
#define maxn 205
using namespace std;
ll map[maxn][maxn];
ll sum[maxn][maxn];
ll a[maxn],ssum[maxn];
ll q[2000],head=0,tail=0;
ll n,m;
ll ans=-1;
int main(){
//freopen("a.in","r",stdin);
//freopen("a.out","w",stdout);
scanf("%lld %lld",&m,&n);
for(ll i=1;i<=m;++i){
sum[i][0]=0;
for(ll j=1;j<=n;++j){
scanf("%lld",&map[i][j]);
sum[i][j]=sum[i][j-1]+map[i][j];
}
}
a[0]=0,ssum[0]=0;
for(ll i=1;i<=n;++i){
for(ll j=i;j<=n;++j){
for(ll k=1;k<=m;++k){
a[k]=sum[k][j]-sum[k][i-1];
ssum[k]=ssum[k-1]+a[k];
//cout<<a[k]<<' '<<ssum[k]<<endl;
}//cout<<endl;
//ans=ans<a[1]?a[1]:ans;
q[0]=0;
tail=1;
for(ll k=1;k<=m;++k){
ll tmp=ssum[k]-q[0];
ans=ans>tmp?ans:tmp;
for(;q[tail-1]>ssum[k] && tail;tail--);
q[tail]=ssum[k];
++tail;
}
}
}
printf("%lld\n",ans);
return 0;
}
[solution]JZOJ-5838 旅游路线的更多相关文章
- JZOJ 5838. 旅游路线 最大子段和
5838. 旅游路线 Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits Goto ProblemSet Descrip ...
- 「LibreOJ NOIP Round #1」旅游路线
Description T 城是一个旅游城市,具有 nnn 个景点和 mmm 条道路,所有景点编号为 1,2,...,n1,2,...,n1,2,...,n.每条道路连接这 nnn 个景区中的某两个景 ...
- [solution] JZOJ 5459. 密室
[solution] JZOJ 5459. 密室 Description 小X 正困在一个密室里,他希望尽快逃出密室. 密室中有$N$ 个房间,初始时,小X 在1 号房间,而出口在N 号房间. 密室的 ...
- [loj#539][LibreOJ NOIP Round #1]旅游路线_倍增_dp
「LibreOJ NOIP Round #1」旅游路线 题目链接:https://loj.ac/problem/539 题解: 这个题就很神奇 首先大力$dp$很好想,因为可以把一维放到状态里以取消后 ...
- 2019中山纪念中学夏令营-Day20[JZOJ] T1旅游详解
2019中山纪念中学夏令营-Day20[JZOJ] 提高组B组 Team_B组 T1 旅游 Time Limits: 2000 ms Memory Limits: 262144 KB Descrip ...
- 带你找到五一最省的旅游路线【dijkstra算法推导详解】
前言 五一快到了,小张准备去旅游了! 查了查到各地的机票 因为今年被扣工资扣得很惨,小张手头不是很宽裕,必须精打细算.他想弄清去各个城市的最低开销. [嗯,不用考虑回来的开销.小张准备找警察叔叔说自己 ...
- 「LOJ 539」「LibreOJ NOIP Round #1」旅游路线
description 题面较长,这里给出题目链接 solution 考虑预处理出\(f[i][j]\)表示在第\(i\)个点加满油后,从第\(i\)个点出发,至多消耗\(j\)元钱走过的最大路程,那 ...
- 带你找到五一最省的旅游路线【dijkstra算法代码实现】
算法推导过程参见[dijkstra算法推导详解] 此文为[dijkstra算法代码实现] https://www.cnblogs.com/Halburt/p/10767389.html package ...
- LibreOJ #539. 「LibreOJ NOIP Round #1」旅游路线(倍增+二分)
哎一开始看错题了啊T T...最近状态一直不对...最近很多傻逼题都不会写了T T 考虑距离较大肯定不能塞进状态...钱数<=n^2能够承受, 油量再塞就不行了...显然可以预处理出点i到j走c ...
随机推荐
- vue 自定义组件使用v-model(组件通信方式1)
父组件通过v-model传递值给子组件时,会自动传递一个value的prop属性,在子组件中通过this.$emit(‘input’,val)自动修改父组件v-model绑定的值 child: < ...
- 【java】多个对象的序列化和反序列化
当我们需要序列化多个对象的时候,可以采用集合把多个对象放到集合中,然后序列化整个集合. 而我们要反序列化的时候,就使用集合接收反序列化后的对象 如: List<Student> stude ...
- WPF中的数据绑定(初级)
关于WPF中的数据绑定,初步探讨 数据绑定属于WPF中比较核心的范畴,以下是对WPF中数据绑定的一个初步探讨.个人感觉还是带有问题性质的叙述比较高效,也比较容易懂 第一,什么是数据绑定? 假定有这么一 ...
- 磁盘管理 lvm减容扩容
参考https://blog.csdn.net/wk022/article/details/50543922 新增磁盘/dev/sdb fdisk /dev/sdb 分两个分区 (n p 1 /n ...
- Centos7 出现Welcome to emergency mode!
做mount挂载时,修改了 /etc/fstab 文件,导致Centos7重启时出现如下图所示错误: Welcome to emergency mode! After logging in, typ ...
- select 两层 第二个select需要加别名
select t.id from (select xxx) t
- windows server 2012 FTP连接报530 User 用户名 cannot log in home directory inaccessible的解决方法
我最近在创建个人网站,经过了万网购买域名注册(www.lingcup.xyz ,www.lingcup.com),在主机屋购买免费云服务器(ip是49.4.142.41),域名别名解析(cname)到 ...
- Numpy Ndarray对象
Numpy 最重要的一个特点是 N 维数组对象 ndarrary ,它是一系列同类型数据的集合,以 0 下标为开始进行集合中的索引. ndarray 对象是用于存放同类型元素的多维数组. ndarra ...
- MySQL ERROR 1064(42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
通常出现该错误的原因是使用了 MySQL 的保留字 解决方法是对使用的保留字使用反引号 (Tab键上面)
- BaseDao.util(虎大将军)
package logistics.util; import java.sql.Connection; import java.sql.PreparedStatement; import java.s ...