• 洛谷 p3399


    一道非常弱智的DP

    就是个01背包的sb版

    但是需要个初始化,二维数组记录i=城市数,j=天数,记得二维数组时第二个循环为正常顺序,不能倒序。还有就是初始化,真的没想到该把f初始为什么,因为要求min,memset成0,ans就全是0,初始为极大则会直接影响结果。

    所以,就把(i,i)全整出来,因为这是我们完全已知的条件,二层循环从i+1开始是因为不可能在小于i天内走完i个城市,所以(i,i)也是最基层条件。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    
    int n,m,f[1002][1002],d[1002],c[1002];
    
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
            scanf("%d",&d[i]);
        for(int i=1;i<=m;i++)
            scanf("%d",&c[i]);
        //for(int i=1;i<+n;i++)//一个绝对烧饼的错误,(仔细看~
            
        for(int i=1;i<=n;i++){
            f[i][i]=f[i-1][i-1]+d[i]*c[i];
            for(int j=i+1;j<=m;j++){
                f[i][j]=min(f[i][j-1],f[i-1][j-1]+d[i]*c[j]);
            }
        }
        printf("%d",f[n][m]);
        
        return 0;
    }
  • 相关阅读:
    笛卡尔树学习笔记
    图论基础(自认为很全)
    我的博客在这里
    C++学习资料
    test
    个人介绍
    CF1153F Serval and Bonus Problem
    【ZJOI2020】抽卡
    【LOJ】小 Q 的序列
    我的个人博客:https://xyix.github.io
  • 原文地址:https://www.cnblogs.com/jindui/p/11025217.html
Copyright © 2020-2023  润新知