@[lxy07830](/user/363322)
```in
3
1 1 1
```
by dk_qwq @ 2022-09-07 06:16:59
@[dkqwq](/user/311306) 谢谢大佬,不过这种数据的话似乎只用判断一下全部相等就行吧,请问还有别的问题吗
by lxy07830 @ 2022-09-07 22:45:44
我又修改了一下我的代码,现在可以通过hack了
```cpp
#include <bits/stdc++.h>
using namespace std;
int n, ans = 1, flag;
int a[100005];
int main(){
scanf("%d" ,&n);
for(int i = 1; i <= n; ++i){
scanf("%d" ,&a[i]);
}
for(int i = 2, last = 1; i < n; ++i){
if((a[last] > a[i] && a[i] < a[i + 1]) || (a[last] < a[i] && a[i] > a[i + 1])){
last = i;
flag = 1;
ans++;
}
}
printf("%d\n" ,ans + flag);
return 0;
}
```
by lxy07830 @ 2022-09-08 22:44:37
没有问题的
就是找到谷峰谷底有多少个,把它们连起来就行了,可以保证没有更优的方法,感性理解一下
致敬lxy!
by jimhuang @ 2023-01-25 21:38:00
HACK:
3
1 2 3
```cpp
#include <bits/stdc++.h>
using namespace std;
int n, ans = 1, flag;
int a[100005];
int main(){
scanf("%d" ,&n);
for(int i = 1; i <= n; ++i){
scanf("%d" ,&a[i]);
}
for(int i = 2, last = 1; i < n; ++i){
if((a[last] > a[i] && a[i] < a[i + 1]) || (a[last] < a[i] && a[i] > a[i + 1])){
last = i;
ans++;
}
if(a[i]!=a[1]) flag = 1;
}
printf("%d\n" ,ans + flag);
return 0;
}
```
这样就可以了
by 林瀚旭 @ 2023-08-17 20:58:19