【DFS】搬书

描述  

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

输入

  第一行3个整数,分别为三堆书的数量i,j,k;第二行至第四行分别为每堆由下至上的书本重量。

输出

  一行,输出最累方式的体力消耗总值

输入样例1

3 2 4
2 3 2
1 5
9 8 7 4 

输出样例1

257

解题思路

  刚开始想的是贪心,每次取三堆中最小的,但是后面被卡住了,发现不行,然后就用熟悉的记忆化搜索啦(不想用DP,好吧,是还没学),

题解

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n1,n2,n3;
 4 int a1[101];
 5 int a2[101];
 6 int a3[101];
 7 int dp[101][101][101];
 8 int dfs(int x,int y,int z)
 9 {
10     int qwe=x+y+z;//体力
11     if(x<0||y<0||z<0)return 0;//负数取不了啊
12     if(dp[x][y][z])return dp[x][y][z];//记忆化搜索,剪枝
13     return dp[x][y][z]=max(dfs(x-1,y,z)+a1[x]*qwe,max(dfs(x,y-1,z)+a2[y]*qwe,dfs(x,y,z-1)+a3[z]*qwe));
14 }//类似于状态转移方程
15 int main()
16 {
17     cin>>n1>>n2>>n3;
18     for(int i=n1;i>=1;i--)//初始化,倒着存方便
19     {
20         cin>>a1[i];
21     }
22     for(int i=n2;i>=1;i--)
23     {
24         cin>>a2[i];
25     }
26     for(int i=n3;i>=1;i--)
27     {
28         cin>>a3[i];
29     }
30     dp[1][0][0]=a1[1];//初始化取每一堆的第一本
31     dp[0][1][0]=a2[1];
32     dp[0][0][1]=a3[1];
33     cout<<dfs(n1,n2,n3);
34     return 0;
35 }

借鉴专用区(大家都懂)

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n1,n2,n3;
 4 int a1[101];
 5 int a2[101];
 6 int a3[101];
 7 int dp[101][101][101];
 8 int dfs(int x,int y,int z)
 9 {
10     int qwe=x+y+z;
11     if(x<0||y<0||z<0)return 0;
12     if(dp[x][y][z])return dp[x][y][z];
13     return dp[x][y][z]=max(dfs(x-1,y,z)+a1[x]*qwe,max(dfs(x,y-1,z)+a2[y]*qwe,dfs(x,y,z-1)+a3[z]*qwe));
14 }
15 int main()
16 {
17     cin>>n1>>n2>>n3;
18     for(int i=n1;i>=1;i--)
19     {
20         cin>>a1[i];
21     }
22     for(int i=n2;i>=1;i--)
23     {
24         cin>>a2[i];
25     }
26     for(int i=n3;i>=1;i--)
27     {
28         cin>>a3[i];
29     }
30     dp[1][0][0]=a1[1];
31     dp[0][1][0]=a2[1];
32     dp[0][0][1]=a3[1];
33     cout<<dfs(n1,n2,n3);
34     return 0;
35 }

原文地址:https://www.cnblogs.com/hualian/p/11155829.html

时间: 2024-11-09 03:10:20

【DFS】搬书的相关文章

陈老师搬书

[问题描述] 陈老师喜欢网购书籍,经常一次购它个百八十本,然后拿来倒卖,牟取暴利.前些天,高一的新同学来了,他便像往常一样,兜售他的书,经过一番口舌,同学们决定买他的书,但是陈老师桌上的书有三堆,每一堆都有厚厚的一叠,他要想个办法用最轻松的方式把书拿下来给同学们.但是你想逗一下陈老师,于是,请你设计一个最累的方式给他. 若告诉你这三堆分别有i,j,k本书,以及每堆从下到上书的重量.每次取书只能从任意一堆的最上面取,那么请你帮助他设计一个方案,让他花最大的力气取下所有书(陈老师别打我). 显然,每

暑假第二次考试 冲刺Noip2017模拟赛2 解题报告——五十岚芒果酱

题1 牛跑步(running) [题目描述] 新牛到部队,CG 要求它们每天早上搞晨跑,从 A 农场跑到 B 农场.从 A 农场到 B 农场中有 n-2 个路口,分别标上号,A 农场为 1 号,B 农场为 n 号,路口分别为 2...n-1 号,从 A 农场到 B 农场有很多条路径可以到达,而 CG 发现有的路口是必须经过的,即每条路径都经过的路口,CG 要把它们记录下来,这样 CG 就可以先到那个路口,观察新牛们有没有偷懒,而你的任务就是找出所有必经路口. [输入格式] 第一行两个用空格隔开的

2017 济南综合班 Day 6

循环移动 (cyclic.cpp/c/pas) (1s/256M) 问题描述 给出一个字符串S与N个操作.每个操作用三元组(L, R, K)进行描述:操作将字符串第L个到第R个位置构成的子串循环移动K次.一次循环移动就是将字符串最后的这个字符移动到第一位,其余的字符顺次后移. 例如,对于字符串abacaba,操作(L=3, R=6, K=1)后得到的字符串即为abbacaa. 求出在N个操作后得到的字符串. 输入格式(cyclic.in) 第一行一个字符串S. 第二行一个整数N,代表操作的总数.

暑假集训垂死挣扎记录

7.10 Wedn 最后一天文化课hhh 小学期期末都不考了还颓什么语数外物化地 晚三机房众都恣意妄为翘掉了忙着往教室外搬书 我却在录某个野鸡英语比赛的口试?? 下午的时候找教练唠了几句觉得我还能抢救 下定决心集训的时候不颓游记不颓图不颓题解不颓代码不扯淡不带违禁品 (我有预感这即将成为我人生中为数不多的实现的flag) 听说放假前就要考5场?瑟瑟发抖.jpg 也许第二机房才适合我这样基础极差习惯没有还容易飘的辣鸡吧 补补联赛也挺好的,真不想退役啊 等过了再想省选的神仙知识吧 忽然悲伤逆流成河

慢慢平静

最近的生活很是忙碌呀,一边进行着新课程,一边在备战春招.还好都是复习,比从0到1简单,但行百里者半九十,复习之路还是要努力一些. 每天上课放学,我总喜欢带上耳机,听着歌,这或许是我一天学习间隙中最放松的时刻(睡眠除外).最近喜欢听的歌有<我的天空>,<we can't stop>,<look at me now>等之类特别励志的歌,在<我的天空>中有一句很经典的歌词:"在无尽的黑夜 所有都要毁灭 至少我还有梦 也为你而感动",我现在倒没感

codeforces 500C New Year Book Reading (贪心,很好的思维题)

C. New Year Book Reading time limit per test 2 seconds memory limit per test 256 megabytes New Year is coming, and Jaehyun decided to read many books during 2015, unlike this year. He has n books numbered by integers from 1 to n. The weight of the i-

不要在游戏还没开始就输了

说点什么,我很纠结,留点什么,我很拉圾,但,我只是个正式接触电脑不到一年的人.没有什么经验可谈,更没有什么成果可留: 我只是想留下我这是的心情,不知道几年后的我看到回是什么样的感触. 前几天在poj上刷了二十多道水题,自己感觉倒是优越感极强,直到开始做任神(任神随后详细介绍)规划的题,才感觉道自己是多么的水. 没错现在的我打字还得看着键盘,可能是我的接受期比较长,到现在还不能准确的记住键盘上每个字母的位置: 下面让我花大概一晚上的时间去理一下大学开学到现在我的生活,看看是否有些许能缓释一下现在心

展望&#183;新学期

因有一个双胞胎哥哥,寓为并蒂雪莲,因此爸妈给我取名为袁文雪.今年即将进入20岁的旅程,来自朱德元帅故里四川仪陇,现就读于成都大学,是计算机科学与技术专业一名大三的学生.平时喜欢笑,喜欢旅游,阅读,做菜,因为对英语很感兴趣,平时也喜欢听一些英语歌以及看一些英语演讲视频. 我学的是计科,处在这样一个男女比例严重失衡的专业中,虽平时完全不需要干搬书这类体力活,但同时在专业学习中,女生的优势也明显的弱化.就我自己而言,初次接受专业的学习变觉得自己没有多高的兴趣,但我还是想尽力学好自己的专业,我敬仰那些在

高中的我

记得我考的是县一中,也算是同辈中学习比较好的,记得高二下学期的时候转来一个上一届的女生,那天我无所事事,为着自己的成绩想着怎么才能拿高分或者是想着前面那个女的皮肤真好(其实我这个时候已经有了手淫了,所以这种感觉的结果就是想上)或者觉得那个男的对这个漂亮的女的太亲近让我感到自己就要失去一个机会让我在心中产生了敌意,记得是快上晚自习的黄昏吧,那时候她个挺高,穿着连衣裙我觉得一般吧,不是太惹眼,就觉得又来了一个大家的玩物(请注意这是我的真实措辞,因为我觉得他们和男的打情骂俏,我觉得是不自重,我当时并不