搬书
Description
陈老师桌上的书有三堆,每一堆都有厚厚的一叠,你想逗一下陈老师,于是你设计一个最累的方式给他,让他把书
拿下来给同学们。若告诉你这三堆分别有i,j,k本书,以及每堆从下到上书的质量,每次取书只能从任一堆的最上
面取,显然,每次取书陈老师的体力消耗都会加大,这里用体力系数代表,取下第一本书时,体力系数为1,第二
本书时体力系数为2,依次类推,而每次体力消耗值则为体力系数与书的重量之积。书最多有100本。
Input
第一行3个整数,分别为三堆书的数量i,j,k;第二行至第四行分别为每堆由下至上的书本重量。
Output
一行,输出最累方式的体力消耗总值
Sample Input
3 2 4
2 3 2
1 5
9 8 7 4
Sample Output
257

这道题我也实在想不出具体用的什么算法,就是三重循环跑一遍,时间复杂度O(i×j×k),因为i,j,k的和才100,所以不会TLE。

代码就先贴在下面,自己理解一下【滑稽】。

#include<bits/stdc++.h>
using namespace std;
int a[101],b[101],c[101],f[101][101][101];
int I1,J1,K1,ans=0;
int book(int I,int J,int K)
{
for(int i=0;i<=I;i++)
{
for(int j=0;j<=J;j++)
{
for(int k=0;k<=K;k++)
{
if(i>=1)f[i][j][k]=max(f[i][j][k],f[i-1][j][k]+a[i]*(i+k+j));
if(j>=1)f[i][j][k]=max(f[i][j][k],f[i][j-1][k]+b[j]*(i+k+j));
if(k>=1)f[i][j][k]=max(f[i][j][k],f[i][j][k-1]+c[k]*(i+k+j));
}
}
}
return f[I][J][K];
}
int main()
{
cin>>I1>>J1>>K1;
for(int i=I1;i>=1;i--)
cin>>a[i];
for(int i=J1;i>=1;i--)
cin>>b[i];
for(int i=K1;i>=1;i--)
cin>>c[i];
cout<<book(I1,J1,K1)<<endl;
return 0;
}

ov.

最新文章

  1. struts2+spring的两种整合方式
  2. 关于DOM操作的性能优化
  3. env
  4. jquery 常用函数
  5. input固定定位后,当input框获取到焦点时,会离开手机软键盘的解决方法
  6. HTML常用字符
  7. Android开发之导入错误
  8. spring3.0注解定时任务配置及说明
  9. SQL点滴23—T-SQL中的除法
  10. JDK的下载与配置
  11. Win7 IIS建站
  12. python3 二分法查找
  13. Python——开发一个自动化微信投票器【附代码实例方法】
  14. dependent object 和root object
  15. Java基础恶补——内存泄露、内存溢出
  16. Django 学习笔记(二) --- HTML 模版
  17. mysql5.7执行sql语句出现only_full_group_by错误
  18. 7dynamic_cast用法
  19. ThinkPHP快速实现数据分页(前端/后端分离)
  20. 多进程多线程GDB调试 (转)

热门文章

  1. 如何Update跨表修改数据
  2. PE工具列表(看雪学院)
  3. 冒泡排序C#实现,使用委托,包括三种方式:Fun&lt;&gt;,匿名方法,Lambda表达式
  4. Qt移动开发大部分的场景基本上实现没问题,listview支持刷新3000~5000的实时数据没有任何压力(QML的几个大型应用)
  5. Markdown 语法简体中文版
  6. VC 函数调用的 汇编代码 浅析
  7. 【canvas】基础练习一 图形
  8. Google+团队如何测试移动应用 - from Google Testing Blog
  9. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发4- 后台模板html页面创建
  10. SYN5104型 时间综合测试仪