70pts,求条
查看原帖
70pts,求条
740254
To_2051楼主2024/10/13 19:38

rt,玄关

#include<iostream>
using namespace std;
int v[300][300],d[300],s[300],f[300],ans=300,n,b;
void work(int dz,int xz)
{
    if(v[dz][xz]==1) return;
    else v[dz][xz]=1;
    if(dz==n)
    {
        ans=min(ans,xz);
        return;
    }
    for(int i=1;i<=d[xz];i++)
    {
        if(f[dz+i]<s[xz]&&dz+i<=n)
            work(dz+i,xz);
    }
    for(int i=xz;i<=b;i++)
    {
        if(s[xz+i]>=f[dz]) work(dz,xz+1);
    }
}
int main(){
    // freopen("snowboots.in","r",stdin);
    // freopen("snowboots.out","w",stdout);
    cin>>n>>b;
    for(int i=1;i<=n;i++) cin>>f[i];
    for(int i=1;i<=b;i++) cin>>s[i]>>d[i];
    work(1,0);//地砖编号 靴子编号
    cout<<ans-1<<endl;
    return 0;
}
2024/10/13 19:38
加载中...