codeforces C2. Pokémon Army (hard version)(模拟)
原题链接
//#pragma GCC optimize("Ofast")
//#pragma GCC target("avx,avx2,fma")
//#pragma GCC optimization ("unroll-loops")
#include <bits/stdc++.h>
#define pb push_back
#define ll long long
#define IOS std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
inline int read() {char c = getchar(); int x = 0, f = 1;while (c < '0' || c > '9') {if (c == '-')f = -1; c = getchar();}while (c >= '0' && c <= '9') {x = x * 10 + c - '0'; c = getchar();}return x * f;
}
using namespace std;ll t,n,q;
ll a[300005];
ll l[300005],r[300005];
ll vis[300005];
int main()
{scanf("%lld",&t);while(t--){scanf("%lld %lld",&n,&q);for(int i=1;i<=n;i++){scanf("%lld",&a[i]);}for(int i=1;i<=n;i++){vis[i]=0;}if(n==1)//tepan{printf("%lld\n",a[1]);for(int i=1;i<=q;i++){scanf("%lld %lld",&l[i],&r[i]);printf("%lld\n",a[1]);}continue;}ll val=0;for(int i=1;i<=n;i++){if(i==1){if(a[i]>a[i+1]){val+=a[i];vis[i]=1;}}else if(i==n){if(a[i]>a[i-1]){val+=a[i];vis[i]=1;}}else{if(a[i]>a[i-1]&&a[i]>a[i+1]){val+=a[i];vis[i]=1;}if(a[i]<a[i-1]&&a[i]<a[i+1]){val-=a[i];vis[i]=-1;}}}printf("%lld\n",val);for(int i=1;i<=q;i++){scanf("%lld %lld",&l[i],&r[i]);if(l[i]==r[i]){printf("%lld\n",val);continue;}if(l[i]+1==r[i]){int st=max(l[i]-1,(ll)1);int en=min(r[i]+1,n);for(int j=st;j<=en;j++){if(vis[j]==1){vis[j]=0;val-=a[j];}if(vis[j]==-1){vis[j]=0;val+=a[j];}}swap(a[l[i]],a[r[i]]);for(int j=st;j<=en;j++){if(j==1){if(a[j]>a[j+1]){vis[j]=1;val+=a[j];}}else if(j==n){if(a[j]>a[j-1]){vis[j]=1;val+=a[j];}}else{if(a[j]>a[j-1]&&a[j]>a[j+1]){vis[j]=1;val+=a[j];}if(a[j]<a[j-1]&&a[j]<a[j+1]){vis[j]=-1;val-=a[j];}}}}else{for(int j=max(l[i]-1,(ll)1);j<=min(l[i]+1,n);j++){if(vis[j]==1){vis[j]=0;val-=a[j];}if(vis[j]==-1){vis[j]=0;val+=a[j];}}int st=r[i]-1;if(st==l[i]+1){st++;}for(int j=st;j<=min(r[i]+1,n);j++){if(vis[j]==1){vis[j]=0;val-=a[j];}if(vis[j]==-1){vis[j]=0;val+=a[j];}}swap(a[l[i]],a[r[i]]);for(int j=max(l[i]-1,(ll)1);j<=min(l[i]+1,n);j++){if(j==1){if(a[j]>a[j+1]){vis[j]=1;val+=a[j];}}else{if(a[j]>a[j-1]&&a[j]>a[j+1]){vis[j]=1;val+=a[j];}if(a[j]<a[j-1]&&a[j]<a[j+1]){vis[j]=-1;val-=a[j];}}}for(int j=st;j<=min(r[i]+1,n);j++){if(j==n){if(a[j]>a[j-1]){vis[j]=1;val+=a[j];}}else{if(a[j]>a[j-1]&&a[j]>a[j+1]){vis[j]=1;val+=a[j];}if(a[j]<a[j-1]&&a[j]<a[j+1]){vis[j]=-1;val-=a[j];}}}}printf("%lld\n",val);}}return 0;
}
codeforces C2. Pokémon Army (hard version)(模拟)相关推荐
- C2. Pokémon Army (hard version)
C2. Pokémon Army (hard version) http://codeforces.com/problemset/problem/1420/C2 题解:序列是一个起伏的形状,答案其实就 ...
- C2. Pokémon Army (hard version)(贪心分治)
C2. Pokémon Army (hard version) (贪心&分治) 思路:局部最优解→\rightarrow→全局最优解. 显然答案数组长度为奇数,因为ai>0a_i> ...
- 差分 ---- Codeforces Round #672 (Div. 2):C2. Pokémon Army (hard version)[差分的思想]
题目链接 题目大意:就算给你一序列,按照顺序出若干个数组成一个的序列,然后对这个序列定义一个权值就算奇数位置的和减去偶数位置的和,问你能的到的最大的权值是多少? **a1 - a2 + a3 - a4 ...
- Codeforces Round #672 (Div. 2) C2 - Pokémon Army (hard version)(贪心,维护变化值)
x数组里选一个子数组y(原数组顺序),y1-y2+y3-y4+- 的最大值 然后还有q次交换操作,每次修改之后都要输出新的最大值 (1)如果没有修改,单纯对于当前数组考虑,我们最后选出来的点肯定是波峰 ...
- C2 - Pokémon Army (hard version)(思维+差分/线段树+dp)详解
https://codeforces.com/contest/1420/problem/C2 这道题十分的锻炼思维,也让我知道了同样是差分,从前面减后面和从后面减前面是有不同的意义的. 还记得c1吗? ...
- 1420C1. Pokémon Army (easy version)
C1. Pokémon Army (easy version):题目 题意:选择其中一部分,按照+-依此计算,求总和 思路:找到局部最大值,然后减去局部最小值,依此找. #include <bi ...
- C1. Pokémon Army (easy version)(DP)
C1. Pokémon Army (easy version)(DP) 思路:dpdpdp. 考虑:分数组长度的奇偶性进行dpdpdp. 令dp[i][0]dp[i][0]dp[i][0]表示前iii ...
- C1. Pokémon Army (easy version)(栈模拟)
有 n 个数,从中选出任意 x (x 为随机数)个数但是不能打乱顺序,有 p 次操作,可以交换对应两个数的位置 现在要求你选出的这几个数中 能够构成 a1-a2+a3-a4--ax 值最大 输出最 ...
- Pokémon Army (easy version)
cf 1420: C1 这是个简单题版的题目,只需要判断加一个数减一个数的最大值. #include<bits/stdc++.h> #include<algorithm> #i ...
最新文章
- linux常用命令(转载)
- java基础面试题整理-2021
- Android UI开发第三十篇——使用Fragment构建灵活的桌面
- linux touch 学习
- 设置span的宽度,让span象button那样显示
- IOS 输入框 placeholder字体的颜色
- python实现宿舍管理系统_基于PYTHON微信小程序的病历管理系统的设计与实现
- Java黑皮书课后题第7章:*7.21(整数求和)编写程序,从命令行输入不定数目的整数,然后显示它们的和
- c语言上机指导答案清华,第一章自测练习答案清华大学c语言习题实验指导及课程设计...
- 史上最全Redis总结,你想知道的都在这里啦
- Yii2性能优化之:缓存依赖
- Android FrameWork——Binder机制详解(2)
- 包括淘宝天猫API明细接口
- hdu11601087
- python-pptx 操作PPTx幻灯片文件删除并替换图片
- 机器学习实战——xgboost股票close预测
- 掠食细菌—蛭弧菌B. bacteriovorus,可以对抗革兰氏阴性感染?
- 推广链接生成html操作流程,拼多多生成商城推广链接接口
- [vue-router] Named Route ‘Layout‘ has a default child route. When navigating to this named route (:t
- matlab 动态图只能显示等平面吗,matlab平面浓度图
热门文章
- 菜单导航间竖杠竖线间隔符 | 效果的CSS实现
- VMware软件安装与完全卸载
- 如何从有故障的 SD 卡恢复文件
- 世界技能大赛夺冠背后,亚马逊云科技如何培养云计算技能人才?
- win10服务器网页打不开怎么办,Win10电脑有网但浏览器打不开网页怎么办?
- 2048和多地址入口_王者荣耀2020周年庆返场皮肤投票入口 周年庆皮肤返场投票地址...
- 如何用计算机进行照片合成,不借助软件怎样将两张照片合成一张?一招教你搞定!...
- Python 简单的龟鱼游戏
- Geant4学习记录(二)B
- 希尔伯特的23个数学问题