2021.08.13(AcWing每日一題)
阿新 • • 發佈:2021-08-13
#include<iostream> #include<algorithm> #include<cmath> #include<cstdio> #include<cstring> using namespace std; #define int long long int a[100]; int cal(int l,int r){/*返回長度*/ int mid=(l+r)/2; int sum=0; for(int i=l;i<=r;i++){ ifView Code(a[i]<a[i-1]&&i-1>=0){ return 0; } } return r-l+1; } int len=0; void dfs(int l,int r){ if(l>=r){ return ; } if(cal(l,r)){ len=max(len,cal(l,r)); return ; } int mid=(l+r)/2; dfs(l,mid); dfs(mid+1,r); } signed main(){int t; scanf("%lld",&t); while(t--){ int n; len=0; scanf("%lld",&n); for(int i=0;i<n;i++){ scanf("%lld",&a[i]); } int sum=1; int s=1; dfs(0,n-1); printf("%lld\n",max(len,(int)1)); } }
注:就是要分清楚在哪裡進行分塊,還用到部分的dfs,其實這個資料暫時不用剪枝,主要是資料範圍小