1.花匠
刷题链接
https://ac.nowcoder.com/acm/problem/16535
思路就是一个最长摆动序列
我本来想的是要分奇偶 但是这样很难实现 要求出一个通用的状态转移方程 递推公式 就应该不分奇偶 他分的是看最后是上升序列还是下降序列 根据当前这个和前一个的关系
如果data[i]==data[i-1] 没有带来改变
如果 data[i]>data[i-1] data[i]<data[i-1] 分类讨论 一旦变换了摆动 摆动序列长度就+1 反之不加
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n;
int data[100001];
int dp[1000001][2];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>data[i];
}
dp[1][1]=1;
dp[1][0]=1;
for(int i=2;i<=n;i++){
if(data[i]==data[i-1]){