|
有一说一,其实挺水
做一个以身高为关键字的单调栈储存每个奶牛的序号,再单独以一个数组存储身高,在弹出时处理它对答案的贡献,显然为当前序号到它的序号的差减一
最后注意一下数据大小开个longlong
#include<bits/stdc++.h> using namespace std; int n,a[110086],tmp,c[110086],num; int main () { freopen("hair.in","w",stdin); freopen("hair.out","r",stdout); cin>>n; for(int i = 1; i<=n; i++){ int y; cin>>y; while(y>=c[a[tmp-1]]&&tmp>0){ num+=i-a[tmp-1]-1; tmp--; } c[i]=y; a[tmp++]=i; } while(tmp>0){ if(a[tmp-1]!=n)num+=n-a[tmp-1]; tmp--; } cout<<num; return 0; }
题目1746 [POJ 3250]乱头发节
AAAAAAAAAA
评论
2025-03-29 11:35:26
|