1 条题解

  • 0
    @ 2025-10-8 16:48:39
    #include<bits/stdc++.h>
    using namespace std;
    double sw[1100],w[1100],f[1100],v[1100];
    int main()
    {
        double W,L,vm;int n;scanf("%lf%lf%d",&W,&L,&n);
        sw[0]=0;
        for(int i=1;i<=n;i++)scanf("%lf%lf",&w[i],&v[i]),v[i]/=60,sw[i]=sw[i-1]+w[i];
        f[0]=0; 
        for(int i=1;i<=n;i++) 
        {
            f[i]=vm=1e50;//1e50=1*10^50 
            for(int j=i;j>=1;j--)
            {
                vm=min(vm,v[j]);
                if(sw[i]-sw[j-1]<=W)
                {
                    f[i]=min(f[i],f[j-1]+L/vm);
                }
            }
        }
        printf("%.1lf",f[n]);
        return 0;
    }
    
    • 1

    *【动态规划:区间一维一边推】护卫队

    信息

    ID
    127
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    117
    已通过
    59
    上传者