题目简化和分析:

这题没啥好说的,找其绝对值最大,也就是找到每一个山峰山谷。

这样不仅满足选择的个数最少,并且值最大。

正确性证明:

  • 若 \(a\le b\le c\)
  • \(|a-b|+|b-c|=(b-a)+(c-b)=b-a+c-b=c-a=|a-c|\)
  • 若 \(a\ge b\ge c\)
  • \(|a-b|+|b-c|=(a-b)+(b-c)=a-b+b-c=a-c=|a-c|\)

注意:最后一个特判一下。

Solution:

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef double db; const int N=1e5+50;
const int M=1e5+50;
const int Mod=1e9+7; inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
} int t,n;
int a[N]; int main()
{
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%d",&a[i]);
}
queue<int>q;
int f=-1,ans=0;
for(int i=1;i<n;++i){
int k=(a[i]>a[i+1]);
if(k!=f){
q.push(a[i]);
++ans;
f=k;
}
}
q.push(a[n]);
++ans;
printf("%d\n",ans);
while(!q.empty()){
printf("%d ",q.front());
q.pop();
}
printf("\n");
}
return 0;
}

随机推荐

  1. Java Date与时间戳的转换问题

    Java中String与Date格式之间的转换 - NemoWang - 博客园 (cnblogs.com) 主要是String类型的时间,需要使用DateFormat来进行设置转换的格式,调用fmt ...

  2. 获得 markdown 无序列表格式的文件目录树

    tree 命令可以获得文件目录结构,但是放在文档中时,我想用 markdown 无序列表的形式,在编辑器内还可以折叠. 完整解决方案:在 ~/.oh-my-zsh/custom 下添加下述自定义函数( ...

  3. ENVI实现QUAC、简化黑暗像元、FLAASH方法的遥感影像大气校正

    本文介绍基于ENVI软件,实现对Landsat 7遥感影像加以预处理与多种不同大气校正方法的操作. 目录 1 数据导入与辐射定标 2 波段合成 3 编辑头文件 4 转换文件格式 5 QUAC快速大气校 ...

  4. Centos 7安装JDK1.8

    # 安装 yum install -y java-1.8.0-openjdk* # 添加环境变量 vim /etc/profile export JAVA_HOME=/usr/lib/jvm/java ...

  5. Day-4 路由匹配源码

    1. 请求来了会走WSGIHandler的call方法 convert_exception_to_response也是进行封装 真的handler是从下图定义 resolver = URLResolv ...

  6. Linux切换Root权限配置和无法切换排查

    1.wheel组 普通用户禁止su切换root 在默认的情况下,普通用户通过su可以切换到root用户下,为了加强系统安全性,使用Linux的特殊用户组wheel来实现,只有用户加入到wheel组当中 ...

  7. docker笔记-安装、操作和Registry

    注意事项 强烈建议docker宿主机关闭firewalld,改用iptables 1 docker安装 1.1 离线安装 下载 Docker 二进制文件(https://download.docker ...

  8. 仪酷LabVIEW AI视觉工具包及开放神经网络交互工具包常见问题解答

    前言 哈喽,各位朋友,好久不见~ 之前给大家分享了基于LabVIEW开发的AI视觉工具包及开放神经网络交互工具包,不少朋友私信说在安装和使用过程中会遇到一些问题,今天我们就集中回复一下大家问到最多的问 ...

  9. React: 动态添加样式

    问题背景 在软件开发过程中,经常会出现动态添加style或className,比如:同一个表格组件在A处调用,需要固定前四列数据, B处调用则不用,那这时候,动态添加元素就派上了用场. 解决方案 如下 ...

  10. mysql 命令安装

    1.   mysql  下载安装好压缩文件,下面我们进入正题,少废话. 09:39:112023-08-05 先到 mysql 官方网站下载:https://dev.mysql.com/downloa ...