zoukankan      html  css  js  c++  java
  • C2-Zexal的钢管切割

    题目描述

    在钢管切割的背景下,已经知道长度为1n的钢管的价值,给定长度为n的钢管在切割若干次(也可以不切割)所带来的最小价值是?

    输入

    多组数据输入

    第一行一个整数n,为起始钢管长度(0<n1000

    第二行n个整数,分别为长度为i的钢管的价值ti0<ti10^6

    输出

    对于每组数据,输出一行,为这根钢管所带来的最小价值T

    输入样例

    3
    2 3 7

    输出样例

     5

    Hint

    算法导论第三版15.1节

    转移方程

    dp[i] = min(dp[i-j] + dp[j], dp[i]);

    代码

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    long long n,dp[1003];
    int main()
    {
        while(~scanf("%d",&n))
        {
            for(int i = 1; i <= n; i++)
            {
                scanf("%d",&dp[i]);
            }
            for(int i = 1; i <= n; i++)
                for(int j = 1; j < i; j++)
                    dp[i] = min(dp[i-j] + dp[j], dp[i]);
            printf("%d
    ",dp[n]);
        }
        return 0;
    }
  • 相关阅读:
    [CF528D] Fuzzy Search
    [WC2013] 糖果公园
    [APIO2011] 方格染色
    [CTSC2017] 吉夫特
    [HNOI/AHOI2018] 转盘
    [CTSC2008] 网络管理
    [HAOI2018] 苹果树
    [SCOI2016] 萌萌哒
    git创建分支并提交项目
    git 常规操作
  • 原文地址:https://www.cnblogs.com/kubab119/p/11823254.html
Copyright © 2011-2022 走看看