热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CodeForces722C数组破坏算法解析与优化策略

题意: 先给你一个序列,然后给你n个1-n的一个数,让你求前i个元素销毁的时候,区间字段和区间最大; 思路: 离线处
题意:

先给你一个序列,然后给你n个1-n的一个数,让你求前i个元素销毁的时候,区间字段和区间最大;

思路:

离线处理,维护新区间首尾位置的起点和终点,倒着处理;


#include
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pairPII;
const double eps=1e-5;
const double pi=acos(-1.0);
//const int mod=1e9+7;
const int INF=0x3f3f3f3f;const int N=1e5+10;
struct asd{int s,t;
};
asd q[N];LL a[N];
LL ans[N],sum[N];
int sp[N],temp[N];int main()
{int n;scanf("%d",&n);sum[0]&#61;0;for(int i&#61;1;i<&#61;n;i&#43;&#43;){scanf("%lld",&a[i]);sum[i]&#61;sum[i-1]&#43;a[i];}for(int i&#61;1;i<&#61;n;i&#43;&#43;)scanf("%d",&sp[i]);memset(temp,0,sizeof(temp));for(int i&#61;1;i<&#61;n;i&#43;&#43;)q[i].s&#61;q[i].t&#61;i;ans[n]&#61;0;LL TMAX&#61;0;for(int i&#61;n;i>&#61;2;i--){temp[sp[i]]&#61;1;if(temp[sp[i]-1])q[sp[i]].s&#61;q[sp[i]-1].s;if(temp[sp[i]&#43;1])q[sp[i]].t&#61;q[sp[i]&#43;1].t;q[q[sp[i]].t].s&#61;q[sp[i]].s;q[q[sp[i]].s].t&#61;q[sp[i]].t;TMAX&#61;max(TMAX,sum[q[sp[i]].t] - sum[q[sp[i]].s-1]);ans[i-1]&#61;TMAX;
// printf("%d %d\n",q[sp[i]].s,q[sp[i]].t);}for(int i&#61;1;i<&#61;n;i&#43;&#43;)printf("%lld\n",ans[i]);return 0;
}






推荐阅读
author-avatar
飘香的风中栀子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有