题目简化和分析:

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

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

正确性证明:

  • 若 \(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. ubuntu22.04下编译ffmpeg-6.0,并且激活x264编码功能。记录一下踩坑(ERROR: x264 not found using pkg-config)

    一.编译x264(在编译前确保安装了pkg-config,默认在/usr/share下) 1.下载x264源代码:(我下载到了~/Downloads下,各位随意就好) git clone https: ...

  2. 应用CS5266设计一款TYPEC转HDMI带PD3.0+USB3.1扩展坞方案电路图

    目前市场TYPEC扩展坞有很多,基本都是大同小异,主要功能是TYPEC转HDMI带PD+USB3.1+RJ45+SD/TF读卡器等多种接口,由于产品类型较多,成本也都是越做越低,CS瑞奇达就开发一系列 ...

  3. 从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生

    摘要:随着云计算的兴起和渗透,云数仓成为了数仓技术演进的新阶段,并且逐渐成为了众多企业的共同选择. 本文分享自华为云社区<从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生>,作 ...

  4. 最近很火的开源培训系统,支持免费商用,3个月1000star!

    项目简介 PlayEdu 开源培训系统自发布以来,3个月内帮助上千位开发者部署了私有化培训平台,并在 Github 上获得了1000star. 项目地址 Github 地址:https://githu ...

  5. 一文搞懂什么是 API

    在我学习软件开发之前,API 听起来像是一种啤酒(IPA,印度淡色艾尔).如今我经常使用这个术语,事实上最近我还尝试在酒吧里点了一个 API,结果酒保给了我一个: 404 资源未找到的回应 无论是在科 ...

  6. langchain:Prompt在手,天下我有

    目录 简介 好的prompt 什么是prompt template 在langchain中创建prompt template Chat特有的prompt template 总结 简介 prompts是 ...

  7. JVM中的编译器

    JVM中集成了两种编译器,Client Compiler和Server Compiler,它们的作用也不同.Client Compiler注重启动速度和局部的优化,Server Compiler则更加 ...

  8. CentOS 7相关操作

    防火墙操作 开启防火墙 sudo systemctl start firewalld.service 查看防火墙状态 sudo systemctl status firewalld.service 关 ...

  9. Maven项目配置

    pom.xml配置 配置编码格式为UTF-8 <properties> <project.build.sourceEncoding>UTF-8</project.buil ...

  10. 小白也能看懂的 ROC 曲线详解

    作者:PrimiHub-Kevin ROC 曲线是一种坐标图式的分析工具,是由二战中的电子和雷达工程师发明的,发明之初是用来侦测敌军飞机.船舰,后来被应用于医学.生物学.犯罪心理学. 如今,ROC 曲 ...