1 条题解

  • 0
    @ 2025-2-14 21:20:40

    C++ :

    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int N(1003),oo(0x7ffffff);
    int f[N][N][2]={0},t[N]={0},w[N][N]={0};
    int main()
    {
        int n,v;
        cin>>n>>v;
        for(int i=1;i<=n;i++)
            cin>>t[i]>>w[i][i];
        for(int i=1;i<=n;i++)
            w[1][i]=w[1][i-1]+w[i][i];
        for(int i=n;i>=1;i--)
            w[i][n]=w[i+1][n]+w[i][i];
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                f[i][j][0]=f[i][j][1]=oo;
        f[v][v][0]=f[v][v][1]=0;
        for(int i=v;i>=1;i--)
            for(int j=v;j<=n;j++)
                if(i!=j)
                {
                    f[i][j][0]=min(f[i+1][j][0]+(t[i+1]-t[i])*(w[1][i]+w[j+1][n]),
                                   f[i+1][j][1]+(t[j]-t[i])*(w[1][i]+w[j+1][n]));
                    f[i][j][1]=min(f[i][j-1][1]+(t[j]-t[j-1])*(w[1][i-1]+w[j][n]),
                                   f[i][j-1][0]+(t[j]-t[i])*(w[1][i-1]+w[j][n]));
                }
        cout<<min(f[1][n][0],f[1][n][1])<<endl;
        return 0;
    }
    
    • 1

    信息

    ID
    771
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者