动态规划_01背包:小飞侠的游园方案

描述

经过抽签选择,小智将军第一个进入考场。

菜虫:(身上散射出华贵(?)的光芒)欢迎你,第一位挑战者!!
小智:……(走到菜虫身后,关灯)女王陛下,虽然我们国家现在很富裕,但也请您不要浪费电来用这么大功率的灯泡。

菜虫(汗):啊啊~~爱卿所言甚是~~那么,你的题目是……我们的情报组织探听到敌人的重要将领——小飞侠星期天会邀他的灵儿妹妹到公园去玩。公园里有很多娱乐项目,可并不是每一项他们都喜欢,所以他们对每一项都进行了“喜欢度”的评分。因为小飞侠也是一个了不起的角色,所以他一定会选择在有限时间内的最好的方案。现在要你做的就是找出在规定时间内他们选择哪几项不同的活动可以使其“喜欢度”之和达到最大,据此我们就可以知道他会在哪些地方出现,从而在那里派人看守了。

小智:(灯泡一亮)每个地方都派人看守不就行了?!
“当~~~” 
菜虫:(手执八公分直径炒锅,筋)……你是白痴吗?-_-##(都派人去看守的话我们会有多少桌三缺一?!)听好了,输入格式是第一行一个正整数N(1<=N<=100)表示总共的娱乐项目数;第二行一个正整数表示规定的时间t(0<t<1000);下面有N行,其中第i+2行有两个正整数fi(0<=fi<=100)和ti(0<ti<=100),分别表示对项目i的“喜欢度”和它所耗费的时间。输出的时候在第一行输出最大的“喜欢度”之和,下面给你一个样例:

样例1

样例输入1[复制]

3
5
1 2
5 5
4 3

样例输出1[复制]

5

限制

各个测试点1s

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <string>
 5 #include <algorithm>
 6
 7 using namespace std;
 8
 9 const int MAX = 1010;
10
11 int bp[MAX][MAX], t[MAX], v[MAX];
12
13 int main()
14 {
15 #ifdef OFFLINE
16     freopen("in.txt", "r", stdin);
17     freopen("out.txt", "w", stdout);
18 #endif
19
20     int n;
21     while (~scanf("%d", &n))
22     {
23         int tt;
24         scanf("%d", &tt);
25
26         memset(bp, 0, sizeof(bp));
27         memset(t, 0, sizeof(t));
28         memset(v, 0, sizeof(v));
29
30         for (int i = 0; i < n; i++)
31             scanf("%d%d", &v[i], &t[i]);
32
33         for (int i = 0; i < n; i++)
34             for (int j = 1; j <= tt; j++)
35                 if (i == 0)
36                     bp[i][j] = t[i] <= j ? v[i] : 0;
37                 else if (t[i] > j)
38                     bp[i][j] = bp[i - 1][j];
39                 else
40                     bp[i][j] = max(bp[i - 1][j], bp[i - 1][j - t[i]] + v[i]);
41
42         int ans = 0;
43         for (int i = 0; i < n; i++)
44             for (int j = 1; j <= tt; j++)
45                 ans = max(ans, bp[i][j]);
46
47         printf("%d\n", ans);
48     }
49
50     return 0;
51 }

时间: 2024-11-05 19:34:22

动态规划_01背包:小飞侠的游园方案的相关文章

P1025小飞侠的游园方案

描述 经过抽签选择,小智将军第一个进入考场. 菜虫:(身上散射出华贵(?)的光芒)欢迎你,第一位挑战者!! 小智:……(走到菜虫身后,关灯)女王陛下,虽然我们国家现在很富裕,但也请您不要浪费电来用这么大功率的灯泡. 菜虫(汗):啊啊~~爱卿所言甚是~~那么,你的题目是……我们的情报组织探听到敌人的重要将领——小飞侠星期天会邀他的灵儿妹妹到公园去玩.公园 里有很多娱乐项目,可并不是每一项他们都喜欢,所以他们对每一项都进行了“喜欢度”的评分.因为小飞侠也是一个了不起的角色,所以他一定会选择在有限时间

动态规划_01背包

0-1 背包问题:给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wi,其价值为 vi . 问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大? 分析一波,面对每个物品,我们只有选择拿取或者不拿两种选择,不能选择装入某物品的一部分,也不能装入同一物品多次. 解决办法:声明一个 大小为  m[n][c] 的二维数组,m[ i ][ j ] 表示 在面对第 i 件物品,且背包容量为  j 时所能获得的最大价值 ,那么我们可以很容易分析得出 m[i][j] 的计算方法, (

动态规划_01背包:采药

Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大.” 如果你是辰辰,你能完成这个任务吗? Input 第一行有两个整数T(1 <= T <= 1000

背包问题九讲笔记_01背包(转)

http://blog.csdn.net/insistgogo/article/details/8579597 背包问题九讲笔记_01背包 分类: 算法导论2013-02-13 09:17 1752人阅读 评论(4) 收藏 举报 摘自Tianyi Cui童鞋的<背包问题九讲>,稍作修改,方便理解. 01背包问题描述 已知:有一个容量为V的背包和N件物品,第i件物品的重量是weight[i],收益是cost[i]. 限制:每种物品只有一件,可以选择放或者不放 问题:在不超过背包容量的情况下,最多

动态规划(背包题目)

完全背包 hdu 1248 寒冰王座 hdu 1284 钱币兑换问题 hdu 3732 Ahui Writes Word:将01背包转化为多重背包,即完全背包. 0-1背包 hdu 2546 饭卡:因为要占最大的便宜,所以留5元买最贵的菜,因为每种菜只能买一次,用0-1背包 求出买菜用的最大支出 hdu 3466 Proud Merchants:当钱少于Qi时,不将物品卖出,计算过程中要注意方程无后效性,对 Pi-Qi进行排序,小的排在前面.然后用0-1背包解题,其中的约束条件为拥有的钱不少于Q

C#开发微信门户及应用(47) - 整合Web API、微信后台管理及前端微信小程序的应用方案

在微信开发中,我一直强调需要建立一个比较统一的Web API接口体系,以便实现数据的集中化,这样我们在常规的Web业务系统,Winform业务系统.微信应用.微信小程序.APP等方面,都可以直接调用基于JSON数据格式的Web API接口,在我之前的几篇随笔中,对这方面都有一定的介绍,本篇继续这个主题,细致深入的阐述如何在接口和源码的基础上整合Web API.微信后台管理及前端微信小程序的应用方案. 1.基于Web API的微信开发框架 首先我们各个业务模块,都应该围绕着Web API进行展开,

动态规划/0-1背包

每年毕业的季节都会有大量毕业生发起狂欢,好朋友们相约吃散伙饭,网络上称为"bg".参加不同团体的bg会有不同的感觉,我们可以用一个非负整数为每个bg定义一个"快乐度".现给定一个bg列表,上面列出每个bg的快乐度.持续长度.bg发起人的离校时间,请你安排一系列bg的时间使得自己可以获得最大的快乐度.    例如有4场bg:    第1场快乐度为5,持续1小时,发起人必须在1小时后离开:    第2场快乐度为10,持续2小时,发起人必须在3小时后离开:    第3场快

背包问题九讲笔记_01背包

摘自Tianyi Cui童鞋的<背包问题九讲>,稍作改动,方便理解. 01背包问题描写叙述 已知:有一个容量为V的背包和N件物品,第i件物品的重量是weight[i],收益是cost[i]. 限制:每种物品仅仅有一件,能够选择放或者不放 问题:在不超过背包容量的情况下,最多能获得多少价值或收益 相似问题:在恰好装满背包的情况下,最多能获得多少价值或收益 这里,我们先讨论在不超过背包容量的情况下,最多能获得多少价值或收益. 基本思路 01背包的特点:每种物品仅仅有一件,能够选择放或者不放 子问题

九背包上的发言稿_01背包

从Tianyi Cui童鞋<背包问题讲9>.细微的变化,很容易理解. 01背包问题描写叙述 已知:有一个容量为V的背包和N件物品,第i件物品的重量是weight[i],收益是cost[i]. 限制:每种物品仅仅有一件,能够选择放或者不放 问题:在不超过背包容量的情况下,最多能获得多少价值或收益 相似问题:在恰好装满背包的情况下,最多能获得多少价值或收益 这里,我们先讨论在不超过背包容量的情况下.最多能获得多少价值或收益. 基本思路 01背包的特点:每种物品仅仅有一件,能够选择放或者不放 子问题