Minimal Height Tree(贪心)

发布时间:2026/10/29 1:13:51
Minimal Height Tree(贪心)

题目大意
已知一个BFS的遍历顺序,每个结点的子节点是按照升序从左到右排列的
求树的最少的层数

思路
将每个升序的子序列接到树的目前的根结点,并且该子序列的长度即为下次可以接的子树的个数

#pragmaGCCoptimize("-Ofast","-funroll-all-loops")#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<math.h>usingnamespacestd;#defineendl'\n'#defineINF0x3f3f3f3f// #define int long long#definedebug(a)cout<<#a<<"="<<a<<endl;typedeflonglongll;constdoublePI=acos(-1.0);constdoublee=exp(1.0);constintM=1e9+7;constintN=2e5+7;inlineintmymax(intx,inty){returnx>y?x:y;}inlineintmymin(intx,inty){returnx<y?x:y;}intT,n,a[N];intans,now,cnt,sum;voidsolve(){cin>>n;ans=sum=1;cnt=now=0;cin>>a[1];for(inti=2;i<=n;i++){cin>>a[i];if(a[i]>a[i-1])now++;else{cnt++;if(cnt==sum){ans++;cnt=0;sum=now;}}}cout<<ans<<endl;return;}signedmain(){intT;cin>>T;while(T--)solve();return0;}