zoukankan      html  css  js  c++  java
  • 洛谷 P2374 搬运工

    题目背景

    陈老师喜欢网购书籍,经常一次购它个百八十本,然后拿来倒卖牟取暴利。(ps:描述要看懂)

    题目描述

    前些天,高一的新同学来了,他便像往常一样兜售他的书,经过一番口舌,同学们决定买他的书,但是陈老师桌上的书有三堆,每一堆都有厚厚的一叠,他要想个办法用最轻松的方式把书拿下来给同学们。但是你想逗一下陈老师,于是你设计一个最累的方式给他。若告诉你这三堆分别有i,j,k本书,以及每堆从下到上书的质量,每次取书只能从任一堆的最上面取,那么请你设计一个方案,让他花最大的力气取下所有的书。

    显然,每次取书陈老师的体力消耗都会加大,这里用体力系数代表,取下第一本书时,体力系数为1,第二本书时体力系数为2,依次类推,而每次体力消耗值则为体力系数与书的重量之积。

    输入输出格式

    输入格式:

     

    第一行3个整数,分别为三堆书的数量i,j,k

    第二行至第四行分别为每堆由下至上的书本重量

     

    输出格式:

     

    输出最累方式的体力消耗总值。

     

    输入输出样例

    输入样例#1: 复制
    3 2 4
    2 3 2
    1 5
    9 8 7 4
    
    输出样例#1: 复制
    257

    说明

    对于50%的数据有0≤i,j,k<10;

    对于100%的数据有0≤i,j,k<100

    最后输出的体力消耗总值在int范围内

    思路:动态规划。

    f[i][j][k]表示第一摞书选了i个,第二摞书选了j个,第三摞书选了k个,所消耗的最大的体力值。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int x,y,z;
    int f[110][110][110];
    int num1[100],num2[100],num3[100];
    int main(){
        scanf("%d%d%d",&x,&y,&z);
        for(int i=1;i<=x;i++)    scanf("%d",&num1[i]);
        for(int i=1;i<=y;i++)    scanf("%d",&num2[i]);
        for(int i=1;i<=z;i++)    scanf("%d",&num3[i]);
        for(int i=1;i<=x/2;i++)    swap(num1[i],num1[x-i+1]);
        for(int i=1;i<=y/2;i++)    swap(num2[i],num2[y-i+1]);
        for(int i=1;i<=z/2;i++)    swap(num3[i],num3[z-i+1]);
        for(int i=0;i<=x;i++)
            for(int j=0;j<=y;j++)
                for(int k=0;k<=z;k++){
                    int pos=i+j+k;
                    if(i)    f[i][j][k]=f[i-1][j][k]+pos*num1[i];
                    if(j)    f[i][j][k]=max(f[i][j][k],f[i][j-1][k]+pos*num2[j]);
                    if(k)    f[i][j][k]=max(f[i][j][k],f[i][j][k-1]+pos*num3[k]);
                }
        cout<<f[x][y][z];
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    hihocoder1062 最近公共祖先·一
    POJ2342 Anniversary party(动态规划)(树形DP)
    【动态规划】抄近路(水题)
    【动态规划】数的划分 (动态规划)
    【动态规划】矩形嵌套 (DGA上的动态规划)
    hihocoder Popular Products(STL)
    hihocoder Counting Islands II(并查集)
    51nod 编辑距离问题(动态规划)
    51nod 最长公共子序列问题(动态规划)(LCS)(递归)
    目标提取——背景均匀、目标与背景相似
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7894696.html
Copyright © 2011-2022 走看看