#include #include #include using namespace std; int main(){ int t,n; cin>>t>>n; int d[n+1],a[n+1],b[n+1]; for(int i=1;i<=n;i++){ cin>>d[i]; } a[0]=0; b[0]=0; for(int i=1;i<=n;i++){//处理A键的情况 a[i]=a[i-1]+2; for(int j=1;j<i;j++){//枚举最后一次使用A键的位置 if(d[i]-d[j]<=0){//如果敌人能够被击败 a[i]=min(a[i],a[j-1]+2+i-j-1);//从j-1到i-1使用A键,再加上第i个敌人使用B键击败 } } if(d[i]<=0){//如果敌人能够被击败 a[i]=min(a[i],b[i-1]+1);//直接使用B键击败 } } b[1]=1;//处理B键的情况 for(int i=2;i<=n;i++){ b[i]=a[i-1]+1;//使用A键击败前面的敌人,再使用B键击败第i个敌人 if(d[i]<=0){//如果敌人能够被击败 b[i]=min(b[i],b[i-1]+1);//直接使用B键击败 } for(int j=2;j<i;j++){//枚举最后一次使用B键的位置 if(d[i]-d[j]<=0){//如果敌人能够被击败 b[i]=min(b[i],a[j-1]+i-j+1);//从j-1到i-1使用A键,再使用B键击败第i个敌人 } } } cout<<b[n]<<endl;//输出结果 return 0; }


原文地址: https://www.cveoy.top/t/topic/lB1b 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录