题意:给定一个2*n的矩形方格,每个格子有一个权值,从(0,0)开始出发,要求遍历完整个网格(不能重复走一个格子),求最大权值和,(权值和是按照step*w累加,step步数从0开始)。

转载:

题解:思维题,如果正向考虑的话很容易把自己绕晕,我们需要反过来想,你会发现其实对于一个2*N的矩阵,你一共只有N个终点(如下图1),如果在认真推敲,你会发现对于这n个终点,从起点到终点的路线都是很有规律的,只有下图2和3两种情况)那么问题就简单了,只需要考虑各种前缀的预处理,之后直接O(n)判断这N个终点得到的最大贡献即可~

图一

图二

图三

可以发现需要得到的是每个终点左边的贡献和右边的贡献,左边的贡献都是蛇形的,只用处理一个数组保存,右边由于有顺时针和逆时针,所有需要处理2个数组维护前缀和等~

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include <vector>
#include<queue>
#include <stack>
#include <map>
#define maxn 605005
#define INF 0x3f3f3f3f
#define LL long long
using namespace std;
LL n;
LL a[maxn];
LL b[maxn];
LL sum_s[maxn];//顺时针的从1~2n的前缀和
LL sum_n[maxn];//逆时针的从1~2n的前缀和
LL sumpre[maxn];//取i~n列的a[i]+b[i]和
LL suml[maxn];//对于一种路线中的左边部分
LL sumr[maxn];//同理,右边部分
LL ans;
void init( )
{
for(int i=n ; i>= ; i--)
sumpre[i]=sumpre[i+]+a[i]+b[i];
for(int i= ; i<=n ; i++)
{
sum_s[i]=sum_s[i-]+(i-)*a[i];
sum_n[i]=sum_n[i-]+(i-)*b[i];
}
for(int i=n ; i>= ; i--)
{
sum_s[*n-i+]=sum_s[*n-i]+(*n-i)*b[i];
sum_n[*n-i+]=sum_n[*n-i]+(*n-i)*a[i];
}
for(int i= ; i<=n ; i++)
{
if(i%==)
{
suml[i] = suml[i-] + (*i-)*a[i-] + (*i-)*b[i-];
sumr[i] = sum_s[*n-i+]-sum_s[i-]+(i-)*sumpre[i];
}
else
{
suml[i]=suml[i-]+(*i-)*a[i-]+(*i-)*b[i-];
sumr[i]=sum_n[*n-i+]-sum_n[i-]+(i-)*sumpre[i];
} }
}
int main( )
{
scanf("%d",&n);
for(int i= ; i<=n ; i++)
scanf("%d",&a[i]);
for(int i= ; i<=n ; i++)
scanf("%d",&b[i]);
init();
ans=;
for(int i= ; i<=n ; i++)
{
ans=max(ans,suml[i]+sumr[i]);
}
printf("%I64d\n",ans);
return ;
}

给自己的一点忠告,分析问题不能太过的片面,要打开思维走向未来

最新文章

  1. Netty服务端与客户端(源码一)
  2. 每天一个 Linux 命令(16):which命令
  3. ubuntu add application to launcher
  4. python中最简单的多进程程序
  5. 前端MVC学习总结(四)——NodeJS+MongoDB+AngularJS+Bootstrap书店示例
  6. glusterFS安装维护文档
  7. MySQL复制-设置延迟复制
  8. 利用Vagrant搭建多平台环境
  9. C#应用Newtonsoft.Json操作json
  10. 学习swift语言的快速入门教程推荐
  11. .net core 利用中间件处理常见的网站功能 包括 session、routers、重定向、重写和文件下载
  12. 8.Java 加解密技术系列之 PBE
  13. docker结合jenkins、gitlab实现.netcore的持续集成实践
  14. @Controller @RestController
  15. iView组件添加API中介绍的事件的方式(render方式添加事件)
  16. 51nod--1079 中国剩余定理
  17. 26_ArrayList_HashSet的比较及Hashcode分析
  18. GTP+SDI工程播出部分思路整理
  19. 课程设计个人报告——基于ARM实验箱的Android交友软件的设计与实现
  20. 自实现jQuery版分页插件

热门文章

  1. 8th
  2. ACM学习历程—UESTC 1215 Secrete Master Plan(矩阵旋转)(2015CCPC A)
  3. properties使用
  4. 恢复到特定点(时间点、scn、日志序列号),rman不完全恢复
  5. bzoj 2044 三维导弹拦截——DAG最小路径覆盖(二分图)
  6. DataGrid 支持字符截断显示
  7. js提交数据时需判断是点击事件还是回车键
  8. DNA甲基化及其测量方法(转)
  9. c++中字符串的截取:
  10. 如何保持blog的高质量(相对于自己的进步而言的)