原题链接

//#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)(模拟)相关推荐

  1. C2. Pokémon Army (hard version)

    C2. Pokémon Army (hard version) http://codeforces.com/problemset/problem/1420/C2 题解:序列是一个起伏的形状,答案其实就 ...

  2. C2. Pokémon Army (hard version)(贪心分治)

    C2. Pokémon Army (hard version) (贪心&分治) 思路:局部最优解→\rightarrow→全局最优解. 显然答案数组长度为奇数,因为ai>0a_i> ...

  3. 差分 ---- Codeforces Round #672 (Div. 2):C2. Pokémon Army (hard version)[差分的思想]

    题目链接 题目大意:就算给你一序列,按照顺序出若干个数组成一个的序列,然后对这个序列定义一个权值就算奇数位置的和减去偶数位置的和,问你能的到的最大的权值是多少? **a1 - a2 + a3 - a4 ...

  4. Codeforces Round #672 (Div. 2) C2 - Pokémon Army (hard version)(贪心,维护变化值)

    x数组里选一个子数组y(原数组顺序),y1-y2+y3-y4+- 的最大值 然后还有q次交换操作,每次修改之后都要输出新的最大值 (1)如果没有修改,单纯对于当前数组考虑,我们最后选出来的点肯定是波峰 ...

  5. C2 - Pokémon Army (hard version)(思维+差分/线段树+dp)详解

    https://codeforces.com/contest/1420/problem/C2 这道题十分的锻炼思维,也让我知道了同样是差分,从前面减后面和从后面减前面是有不同的意义的. 还记得c1吗? ...

  6. 1420C1. Pokémon Army (easy version)

    C1. Pokémon Army (easy version):题目 题意:选择其中一部分,按照+-依此计算,求总和 思路:找到局部最大值,然后减去局部最小值,依此找. #include <bi ...

  7. 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 ...

  8. C1. Pokémon Army (easy version)(栈模拟)

    有 n 个数,从中选出任意 x (x 为随机数)个数但是不能打乱顺序,有 p 次操作,可以交换对应两个数的位置 现在要求你选出的这几个数中 能够构成  a1-a2+a3-a4--ax  值最大 输出最 ...

  9. Pokémon Army (easy version)

    cf 1420: C1 这是个简单题版的题目,只需要判断加一个数减一个数的最大值. #include<bits/stdc++.h> #include<algorithm> #i ...

最新文章

  1. linux常用命令(转载)
  2. java基础面试题整理-2021
  3. Android UI开发第三十篇——使用Fragment构建灵活的桌面
  4. linux touch 学习
  5. 设置span的宽度,让span象button那样显示
  6. IOS 输入框 placeholder字体的颜色
  7. python实现宿舍管理系统_基于PYTHON微信小程序的病历管理系统的设计与实现
  8. Java黑皮书课后题第7章:*7.21(整数求和)编写程序,从命令行输入不定数目的整数,然后显示它们的和
  9. c语言上机指导答案清华,第一章自测练习答案清华大学c语言习题实验指导及课程设计...
  10. 史上最全Redis总结,你想知道的都在这里啦
  11. Yii2性能优化之:缓存依赖
  12. Android FrameWork——Binder机制详解(2)
  13. 包括淘宝天猫API明细接口
  14. hdu11601087
  15. python-pptx 操作PPTx幻灯片文件删除并替换图片
  16. 机器学习实战——xgboost股票close预测
  17. 掠食细菌—蛭弧菌B. bacteriovorus,可以对抗革兰氏阴性感染?
  18. 推广链接生成html操作流程,拼多多生成商城推广链接接口
  19. [vue-router] Named Route ‘Layout‘ has a default child route. When navigating to this named route (:t
  20. matlab 动态图只能显示等平面吗,matlab平面浓度图

热门文章

  1. 菜单导航间竖杠竖线间隔符 | 效果的CSS实现
  2. VMware软件安装与完全卸载
  3. 如何从有故障的 SD 卡恢复文件
  4. 世界技能大赛夺冠背后,亚马逊云科技如何培养云计算技能人才?
  5. win10服务器网页打不开怎么办,Win10电脑有网但浏览器打不开网页怎么办?
  6. 2048和多地址入口_王者荣耀2020周年庆返场皮肤投票入口 周年庆皮肤返场投票地址...
  7. 如何用计算机进行照片合成,不借助软件怎样将两张照片合成一张?一招教你搞定!...
  8. Python 简单的龟鱼游戏
  9. Geant4学习记录(二)B
  10. 希尔伯特的23个数学问题