CF27C 题解
题意翻译:#
如果一个序列是递增或递降的(相等也算增或降),则称它为有序的。给定一个序列,找出最短的非有序的子序列。子序列可以不连续。
解析:#
情况 | 结果 | 原因 |
---|---|---|
无解 | 元素只可能是单调的 | |
在序列中有 且 或 且 的情况 | 一定有解 | 这些元素形成无序的情况 |
我们明显要着重分析 情况:
我们首先需要的是分析是否存在 且 或 且 的情况。
Q:为啥是这样?
如果有解,第一个是 。
再简化:是否存在 且 或 且 的情况。
Q:为啥是这样?
因为:
-
如果 $a[i]>a[i+1]$: 如果 $a[1]$ 是三者最大,呈降序,不符合条件,舍去。 如果 $a[1]$ 居中,满足“小大小”无序。 如果 $a[1]$ 是三者最小,同上。 --by ahawzlc
所以仅需枚举 至 即可。
CODE:#
#include <iostream> using namespace std; int a[100001]; int main(){ cin.tie(0); cout.tie(0); int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=2;i<n;i++) { if((a[i+1]>a[i]&&a[i]<a[1])||(a[i+1]<a[i]&&a[i]>a[1])){ cout<<3<<endl<<1<<' '<<i<<' '<<i+1; return 0; } } cout<<"0\n"; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】