1. 程式人生 > 其它 >2021.08.13(AcWing每日一題)

2021.08.13(AcWing每日一題)

1.3802. 消滅陣列 - AcWing題庫

#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++){
        if
(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)); } }
View Code

注:就是要分清楚在哪裡進行分塊,還用到部分的dfs,其實這個資料暫時不用剪枝,主要是資料範圍小