CodeForces722C Destroying Array【瞎搞】
来源:互联网 发布:金岩财富 知乎 编辑:程序博客网 时间:2024/05/16 00:48
题意:
先给你一个序列,然后给你n个1-n的一个数,让你求前i个元素销毁的时候,区间字段和区间最大;
思路:
先给你一个序列,然后给你n个1-n的一个数,让你求前i个元素销毁的时候,区间字段和区间最大;
思路:
离线处理,维护新区间首尾位置的起点和终点,倒着处理;
#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int>PII;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]=0; for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); sum[i]=sum[i-1]+a[i]; } for(int i=1;i<=n;i++) scanf("%d",&sp[i]); memset(temp,0,sizeof(temp)); for(int i=1;i<=n;i++) q[i].s=q[i].t=i; ans[n]=0; LL TMAX=0; for(int i=n;i>=2;i--) { temp[sp[i]]=1; if(temp[sp[i]-1]) q[sp[i]].s=q[sp[i]-1].s; if(temp[sp[i]+1]) q[sp[i]].t=q[sp[i]+1].t; q[q[sp[i]].t].s=q[sp[i]].s; q[q[sp[i]].s].t=q[sp[i]].t; TMAX=max(TMAX,sum[q[sp[i]].t] - sum[q[sp[i]].s-1]); ans[i-1]=TMAX;// printf("%d %d\n",q[sp[i]].s,q[sp[i]].t); } for(int i=1;i<=n;i++) printf("%lld\n",ans[i]); return 0;}
0 0
- CodeForces722C Destroying Array【瞎搞】
- Codeforces722C-Destroying Array(线段树 or 并查集)
- Destroying Array
- codeforces722C
- Codeforces722 C Destroying Array
- Destroying Array CodeForces
- codeforces 722C Destroying Array
- codeforces(722c)-Destroying Array
- codeforces-772C-Destroying Array
- Codeforces 722C. Destroying Array
- codefoces 722C - Destroying Array
- codeforces 722C. Destroying Array
- 【37.38%】【codeforces 722C】Destroying Array
- 722C - Destroying Array 线段树
- codeforces Destroying Array 线段树维护区间
- codeforces 722C Destroying Array 【线段树好题】
- codeforces 722C. Destroying Array map+multiset
- CF Destroying Array(容器的使用)
- Hrbustoj 棋盘村(DP)
- [NOI2007] 社交网络
- 顺序表和链式表
- c++小知识点2.0
- C++ HDOJ 1020
- CodeForces722C Destroying Array【瞎搞】
- Mac、Phone、iPad中浏览器中的user-agent实例
- led操作
- JavaScript 逗号表达式笔记
- Android自定义Dialog实现弹出二维码效果
- 网络中的超时检测!
- 学习SpringMVC系列教程(一)Spring MVC入门(转载)
- 常用命令
- 人工智能领域的会议和期刊