2016-4-25 完美世界-实习--小萌的包裹

一开始看到这题就认为应该用dp做,先想到用二维,(表示处理到第i个物品时,前m个背包所能装的最大物品数)dp[m][i]=dp[m-1][i]+最后一个背包用来装第i个到n个物品所能获得的最大物品数,后面由于对0,1 背包不熟,加上这个dp方程思路都不怎么清晰,然后没写了。

后面自己又想用三维dp来做,写了个dp[i][m][v] 表示处理到第i个数时,前m个背包,最后一个容量为v时,所能装入的最大物品数。又因为最后一维只表示最后一个背包的状态,而前面一些背包的状态没考虑,所以又感觉不行。后面,看到网上一个人写了个三维DP,然后又想了想,其实,后面可以考虑用两个max 求最大值来表示,一个max来表示最后一个背包的容积,另一个max 来表示只有前m-1个背包时所获得最大物品数。具体代码如下:

 1 #include <cmath>
 2 #include <cstring>
 3 #include <cstdlib>
 4 #include <iostream>
 5 #include <algorithm>
 6 #include <memory>
 7 #include <string>
 8 #include <queue>
 9 #include <map>
10 #include <stdio.h>
11 #include <vector>
12 #include <stack>
13 #include <fstream>
14 using namespace std;
15
16 int main()
17 {
18     int dp[25][25][25];
19     int n,t,m,a[25];
20     while(cin>>n>>t>>m)
21     {
22         for(int i=1;i<=n;i++)
23             cin>>a[i];
24         memset(dp,0,sizeof(dp));
25         for(int i=1;i<=m;++i) // 前i个背包
26         {
27             for(int j=1;j<=n;++j) // 前j件物品
28             {
29                 for(int k=0;k<=t;++k) // 容量为k
30                 {
31                     if(k-a[j]>=0) // 放入
32                     {
33                         dp[i][j][k]=max(max(dp[i][j-1][k],dp[i][j-1][k-a[j]]+1),dp[i-1][j][t]); // 放入当前背包
34
35                     }
36                     else // 丢弃
37                         dp[i][j][k]=max(max(dp[i][j-1][k],0),dp[i-1][j][t]);
38                     //cout<<i <<" 个背包. "<<j<<" 件物品. "<<k<<" 容量  "<<dp[i][j][k]<<endl;
39                 }
40             }
41             //
42         }
43         cout<<dp[m][n][t]<<endl;
44     }
45     return 0;
46 }

时间: 2024-12-10 00:00:12

2016-4-25 完美世界-实习--小萌的包裹的相关文章

小萌库 - 公益广告精彩推荐

小萌库 - 公益广告精彩推荐  2014-06-08 22:06:52再一次 为平凡人喝彩 央视励志公益广告[高清].FLV生活没有彩排,人生也没有彩排. 总会有些时候,满心期待换来的是失望,或者是不体谅. 环顾四周,似乎只有你自己在徘徊. 努力了好像还是看不见希望. 你甚至一度认为,没有人比你更加的不如意了. 渐渐的,你会开始不自信不勇敢不愿向前. 然而,每当这个时候,你都能在心中听到一个声音,清晰而坚定. 再来一次! 当生活的哨声响起, 再一次!选择责任与担当: 再一次!为成长积蓄力量: 再

小萌新的第一篇博客

今天刚刚申请博客,写下第一篇随笔! 之前遇到许多问题,上网发现许多问题都能在这找到答案.这里也有许多的各种技术大咖分享自己的技术和经验,大咖们的帖子有得能看懂,有得看不懂,因为我还是一个小萌新,但我相信通过以后不断的学习和努力会成长起来的!如今我也成为了博客园的一员了,以后也会把自己的点点滴滴分享出来,和大家一起交流,希望博客园的大佬多多提携. 原文地址:https://www.cnblogs.com/xiaolopo/p/10308381.html

NLog类库的使用探索(一)+实习小感悟

1 写在前面 1.1 为什么学了软件 1.高考失败,分数不高,不能随心所欲 2.农村孩子,学点技术,将来有口饭吃 3.有科技含量,想玩电脑(那个时候是这么想的,那个时候觉得学计算机就是玩电脑) 1.2 为什么选了C# 1.大一大二学了c,C++,大三分方向NET和JAVA,觉得C,C++,C#看着好看,读者顺,就选了. 2.大多数学习好点的学了JAVA,不想跟风选了C# 1.3  选择决定命运 本科时候winform,asp.net,WindowsPhone各学了半年,学的最好的还算是WP,只能

工作笔记-2016/1/25

今天上午处理用户遇到的问题是比较多的.而遇到的问题大部分都是已知的问题,有些算不上BUG,有些则是我推不动的,也就是暂时无法解决的. 对于这种无法推动去解决的事情其实我内心是比较愤怒的.因为我觉着用户用的我们现在的产品来看,没有什么不能解决的问题,只有想不想解决的,当然也有一些是解决成本较高,而出现机率很低,那么这种也就可以忍受的. 但是这还不是重点,重点是有些时候,同事的态度让我觉着很烦.我做事情是比较认真的,会以对用户负责的态度去解决,去推进.既然在一家公司工作,那么这家公司的好坏就会与你的

【2016.3.4 】学习小纪

软件工程第二课上完了,于是乎开始准备做些什么了,首先,因为要做个小程序,代码量不算太大,而且要有实用性,MFC我觉得就算了,一方面比较繁琐,另一方面比较丑,我觉得不大适合适合这次的任务,SO,选择剩下了C#和java,另一方面,我觉得小工具之类的放在在线应用里更好,但是表示没接触过PHP,所以就作罢,正好win10的UWP我感觉比较来电,而且基于应用商店,发布之类的也容易些~PS:win10商店里的应用比较水,容易混下去... 既然决定用啥开发工具了,那就开始储备知识了,首先C#跑不掉~,再看一

2016.8.25 NOIP2012 day1 解题报告

考试总结: 1.  显然第一道送分题,我差一点直接打表来对拍了,后来发现我们的pdf有问题不能复制,并且我没有YJQ大神那样足够的时间每道题都对拍,就只能试过样例就遁,(其实这种密码我玩过,密码学入门密码,当时好像叫凯撒密码233):对了,ASCII的掌握也很重要,我之前一直以为大写在小写后面啧.(之间漏掉过大于以后减的步骤,这种简单题还是做少了居然耗了30min,以后好好检查争取一次过): 2.  这道题我拿到的第一反应就是贪心,马上想了一个贪心规则但自己总觉得是错的,花了很长的时间举反例举不

2016/2/25 1, margin auto 垂直方向测试 无效 2,margin重叠 3,哪些是块状哪些是内联 4,display:block inline 导航栏把内联转块状最常见+ 扩展

1.利用margin auto完成首页居中,并自行研究,竖直方向用margin auto,是什么效果#container{width:1002px;margin: 0px auto;}    竖直方向上margin:auto;无效.2.测试margin重叠的发生条件及现象,并自行搜索“父子div”也会发生margin重叠,写出代码及效果图. <!DOCTYPE html> <html> <head> <title>测试父子DIV-margin</tit

2016 - 1 - 25 第三方网络框架 AFN的简单使用

AFNetworking 底层是对NSURlSession 和对 NSURLConnect 的包装 1.具体使用方法可以参照github上的主页面,在这里只是举一个文件上传的简单列子 - (void)update{ AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager POST:@"http://120.25.226.186:32812/upload" parameters:nil constr

2016/05/25 get和post的区别

get是从服务器上获取数据,post是向服务器传送数据.   get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址.用户看不到这个过程.   对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据.   get传