各位dalao,我算过,如果是最坏情况,序列有序,那么我的程序复杂度应该是O(n^2)才对,题目说1<=n<=100000 , 显然TLE , 但是提交上去却AC了 , 这是为什么?
code:
#include<bits/stdc++.h>
using namespace std;
int n,ans=0;
int minn(int l,int r,int a[]){
int ans=l;
for(int i=l;i<=r;i++){
if(a[i]<a[ans]){
ans=i;
}
}
return ans;
}
void jian(int l,int r,int a[],int t){
for(int i=l;i<=r;i++){
a[i]-=t;
}
}
void jc(int l,int r,int a[]){
if(l>r){
return;
}
int t=minn(l,r,a);
ans+=a[t];
jian(l,r,a,a[t]);
jc(l,t-1,a);
jc(t+1,r,a);
}
int main(){
scanf("%d",&n);
int *a=new int[n+10];
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
jc(1,n,a);
printf("%d",ans);
return 0;
}
(难道是因为数据水?)