不懂就问为啥E看了好久没看出问题来
#include "iostream" #define ll long long int main(){ int t; scanf("%d",&t); while (t--){ ll a[100005]; ll w[100005]; int n; int pos; ll ans = 0x3f3f3f3f3f3f3f3f; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); if(!a[i]){ pos=i; } } if(n==1){ printf("No Solution\n"); } //left for(int i=pos-1;i>=1;i--){ if(i!=pos-1){ w[i] = std::max(w[i+1]-a[i],a[i]+1); } else{ w[i] = a[i]+1; } } //right for(int i= pos+1;i<=n;i++){ if(i!=pos+1){ w[i] = std::max(w[i-1]-a[i],a[i]+1); } else{ w[i]=a[i]+1; } } for(int i=1;i<=n;i++){ if(i==pos){ continue; } else{ ans = std::min(ans,w[i]); } } printf("%lld\n",ans); } return 0; }
就是这样,看了眼其实应该和题解里写的几乎一样,但是为什么哇了捏QAQ