map 遍历,分类讨论,思维
若对 a [ i ] ( 1 < i < n ) a[i](1
a [ i ] < a [ i + 1 ] a n d a [ i ] < a [ i − 1 ] a[i]a[i] a [ i + 1 ] a n d a [ i ] > a [ i − 1 ] a[i]>a[i+1] and a[i]>a[i-1] a[i]>a[i+1] and a[i]>a[i−1]:当b大于某个值时,会对 ans 贡献1 a [ i ] > a [ i + 1 ] a n d a [ i ] < a [ i − 1 ] a[i]>a[i+1] and a[i]a[i]>a[i+1] and a[i] a [ i − 1 ] a[i]a[i-1] a[i]a[i−1]:同(3)
最后的贡献,就是“某个值”从小到大,贡献值的前缀和
每种情况的“某个值”,可以通过画图或举例来求出具体如何表示
#includeusing namespace std; const int N=1e5+5; int a[N]; void solve() { int n; cin>>n; for(int i=1;i<=n;i++) scanf("%d",&a[i]); int ans=0; map mp; for(int i=2;i a[i-1]) { int mx=max(a[i+1],a[i-1]); mp[(a[i]+mx)/2+1]--; } else if(a[i]>a[i+1] && a[i]a[i-1] && a[i]>t; while(t--) solve(); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)