x数组里选一个子数组y(原数组顺序),y1-y2+y3-y4+… 的最大值
然后还有q次交换操作,每次修改之后都要输出新的最大值

(1)如果没有修改,单纯对于当前数组考虑,我们最后选出来的点肯定是波峰波谷这样子,然后最后一个点一定是波峰,并且最后选出来的一定是奇数个
(2)那么最后的答案就是max(0 , a[i] - a[i+1] ) 求和,记得让a[n+1]为0方便统计最后一个波峰 (这里真的妙)
(3)这样的话,对于每个操作,维护一下他的变化就行
(4)不关流会T

#define int ll
int a[MX],ans;void del(int pos)
{if(pos!=1) ans-=max(0ll,a[pos-1]-a[pos]);ans-=max(0ll,a[pos]-a[pos+1]);
}
void add(int pos)
{if(pos!=1) ans+=max(0ll,a[pos-1]-a[pos]);ans+=max(0ll,a[pos]-a[pos+1]);
}
void solve()
{int n,q; cin>>n>>q;rpp(i,n) cin>>a[i];a[0]=a[n+1]=0;ans=0;for(int i=n;i>=1;--i) ans=ans+max(0ll,a[i]-a[i+1]);cout<<ans<<endl;while(q--){int l,r;cin>>l>>r;if(l+1==r) del(l),ans-=max(0ll,a[r]-a[r+1]);else del(l),del(r);swap(a[l],a[r]);if(l+1==r) add(l),ans+=max(0ll,a[r]-a[r+1]);else add(l),add(r);cout<<ans<<endl;}
}
signed main()
{fast;int T = 1;cin>>T;while (T--){solve();}stop;return 0;
}

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

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

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

  2. Codeforces Round # 555 (Div. 3) C2. Increasing subsequence (complicated version) (贪心)

    题目链接:http://codeforces.com/contest/1157/problem/C2 当左右两边数字相同时,需要判断一下取哪边能得到更长的递增序列 #include <iostr ...

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

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

  4. Codeforces Round #568 (Div. 2)C2. Exam in BerSU (hard version)

    Codeforces Round #568 (Div. 2)C2. Exam in BerSU (hard version) 贪心+暴力 大致题意:N个人考试,每个人花费的时间是a[i],他们总共花费 ...

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

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

  6. Codeforces Round #658 (Div. 1) A2. Prefix Flip (Hard Version)

    Codeforces Round #658 (Div. 1) A2. Prefix Flip (Hard Version) 题目链接 There are two binary strings a an ...

  7. Codeforces Round #672 (Div. 2)

    A - Cubes Sorting 冒泡排序交换次数等于逆序对数,严格降序需要交换n(n−1)2\frac{n(n-1)}{2}2n(n−1)​次才能升序排列,由此只需要判断原数组是否严格降序即可. ...

  8. Codeforces Round #632 (Div. 2) F. Kate and imperfection 数论 + 贪心

    传送门 文章目录 题意: 思路: 题意: n≤5e5n\le5e5n≤5e5 思路: 首先有个显然的结论:当往集合中加入一个数xxx的时候,如果存在d∣xd|xd∣x且ddd不在集合中,那么加入ddd ...

  9. Codeforces Round #620 (Div. 2) F2. Animal Observation (hard version) dp + 线段树

    传送门 文章目录 题意: 思路: 题意: 比如下面这个图: 思路: 对于这个题,比较容易就能考虑到dpdpdp,设f[i][j]f[i][j]f[i][j]为到了第iii行,覆盖了[j,j+k−1][ ...

最新文章

  1. gbase 导出_GBase 8a导出本地文件时多了目录,gbase_export_directory参数用处
  2. VTK:几何对象之Arrow
  3. git 操作简明扼要,命令不需要多,够用就行
  4. 【C语言简单说】十八:二维数组
  5. 设计模式 原型模式_创新设计模式:原型模式
  6. Numpy出现TypeError: integer argument expected, got float的分析与解决
  7. c++ ea 代码 生成_EA生成实体类代码
  8. 壁挂炉洗澡怎么调水温_壁挂炉水温太高怎么维修【调节壁挂炉温度】
  9. 实例225 模拟淘宝购物买卖双方交易问题
  10. Python 爬虫经常需要睡眠防止被封IP time sleep
  11. 数字证书驱动_网上申报中环CA数字证书更新流程(图解)
  12. linux安装多路径软件,IBM服务器多路径软件RDAC安装详解
  13. 计算机管理无guest用户,win10管理账户里头没有guest账户
  14. 软件的分类及应用领域
  15. 【考研初试】复习规划以及推荐资料/老师
  16. 昆仑通态mcgs通过西门子200PLC200smart通讯
  17. JAVA——为新员工分配部门
  18. 加缪:人生无意义且荒诞
  19. 如何理解三维曲面的法线向量公式?
  20. 浅析分时系统和实时系统

热门文章

  1. 程序中图片透明 函数
  2. mixin(公共样式定义)
  3. WooCommerce可扩展性:如何扩大您的WooCommerce商店
  4. 音频标准AES的一点理解
  5. idcardweb装入失败_卡巴斯基安装错误的解决办法
  6. PTMs-GPT,GPT2
  7. 清北学堂 2017-10-05
  8. 数字加千分位分隔符,加货币符号,数字转百分数
  9. 如何理解国产操作系统,现状又是如何?
  10. python绘制三维地形_三维数字场地模型(上篇):Civil3D 地形的生成