hdu 3033 I love sneakers!
I love sneakers!
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2884 Accepted Submission(s): 1180
// dp 我将其按 鞋子牌子分类 ,然求 在至少有 i 种 牌子鞋子时,花 m 元钱最大可以达到的 价值
#include <iostream>
#include <algorithm>
#include <queue>
#include <math.h>
#include <stdio.h>
#include <string.h>
using namespace std;
int rb[][],rc[][];
int dp[],dp_num[],dpy[]; int main()
{
int N,M,K;
while(scanf("%d %d %d",&N,&M,&K)!=EOF){
int i,j,k;
int x,y,z;
for(i=;i<=;i++) rb[i][]=;
for(i=;i<=N;i++)
{ scanf("%d %d %d",&x,&y,&z);
rb[x][++rb[x][]]=y;
rc[x][rb[x][]]=z; }
memset(dp,,sizeof(dp));
memset(dp_num,,sizeof(dp_num));
memset(dpy,,sizeof(dpy));
for(i=;i<=K;i++){ int num=rb[i][];
for(j=;j<=num;j++){
for(k=M;k>=rb[i][j];k--){
if(dpy[k]<dp[k-rb[i][j]]+rc[i][j]&&dp_num[k-rb[i][j]]>=i-)
{
dpy[k]=dp[k-rb[i][j]]+rc[i][j];
dp_num[k]=i;
}
else if(dp_num[k]==i-&&dp_num[k-rb[i][j]]==i-){
dpy[k]=dp[k-rb[i][j]]+rc[i][j];
dp_num[k]=i;
} }
// printf("%d\n",dpy[M]);
for(k=;k<=M;k++)//这里需要同种鞋子确保更新被用到了
if(dpy[k]>dp[k])
dp[k]=dpy[k];
}
for(k=;k<=M;k++)//这里确保 在有用了i种牌子时记录了结果
dp[k]=dpy[k]; }
// printf("%d\n",dp[M]);
for(i=M;i>=;i--)
if(dp_num[i]==K)
break;
if(i>=)
printf("%d\n",dp[i]);
else
printf("Impossible\n");
} return;
}
hdu 3033 I love sneakers!的更多相关文章
- [HDU 3033] I love sneakers! (动态规划分组背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3033 题意:给你K种品牌,每种品牌有不同种鞋,现在每种品牌至少挑一款鞋,问获得的最大价值,如果不能每种 ...
- hdu 3033 I love sneakers! 分组背包
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 3033 I love sneakers!(分组背包+每组至少选一个)
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 3033 I love sneakers! 我爱运动鞋 (分组背包+01背包,变形)
题意: 有n<=100双鞋子,分别属于一个牌子,共k<=10个牌子.现有m<=10000钱,问每个牌子至少挑1双,能获得的最大价值是多少? 思路: 分组背包的变形,变成了相反的,每组 ...
- HDU 3033 组合背包变形 I love sneakers!
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- HDU 3033 分组背包变形(每种至少一个)
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 3033(好题,分组背包)
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 【HDOJ】3033 I love sneakers!
分组背包. #include <stdio.h> #include <string.h> #define mymax(a, b) (a>b) ? a:b typedef ...
- 【HDU】I love sneakers!(分组背包)
看了许多的题解,都有题目翻译,很不错,以后我也这样写.直接翻译样例: /*鞋子的数量N[1, 100]; 拥有的金钱M[1, 1w]; 品牌数目[1, 10]*/ /*以下四行是对于每双鞋的描述*/ ...
随机推荐
- Android 管理Activity中的fragments
为了管理Activity中的fragments,需要使用FragmentManager,为了得到它,需要调用Activity中的getFragmentManager()方法,接下来详细介绍,感兴趣的朋 ...
- MDI-多文档窗体
1.IsMdicontainer属性设置是否为多文档窗体 this.IsMdiContainer = true; 2.MdiParent属性设置为父窗体 Frm_Child frm = new Frm ...
- 一个Makefile
CC = g++ CCFLAGS = -O3 -DNDEBUG INC = -I ../../include SRC = $(wildcard *.cpp) OBJ = $(patsubst %.cp ...
- python解决汉诺塔问题
今天刚刚在博客园安家,不知道写点什么,前两天刚刚学习完python 所以就用python写了一下汉诺塔算法,感觉还行拿出来分享一下 首先看一下描述: from :http://baike.baidu. ...
- WCF入门教程一[什么是WCF]--转载只为学习收藏
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- @Autowired获取配置文件中被注入实例的两种方式
一.说明 二.那么在JavaBean中如何通过@Autowired获取该实例呢?有两种方式: 1.直接获取 @RunWith(SpringJUnit4ClassRunner.class) @Conte ...
- 基于局部敏感哈希的协同过滤算法之simHash算法
搜集了快一个月的资料,虽然不完全懂,但还是先慢慢写着吧,说不定就有思路了呢. 开源的最大好处是会让作者对脏乱臭的代码有羞耻感. 当一个做推荐系统的部门开始重视[数据清理,数据标柱,效果评测,数据统计, ...
- Window8 进不了PE如何设置BIOS
如题,如今进入Win8时代,很多新出的机器都自带了WIN8.但是童鞋们想进PE进行操作的时候,发现进不了. 更改BIOS以下2处设置,即可使用第三方引导安装系统:Boot->Launch CSM ...
- NGUI自适应分辨率,黑边自动填充, 无黑边,等比例缩放
原地址:http://game.ceeger.com/forum/read.php?tid=16571 1,给背景添加一个UIstretch, .将style选择最后一个FitInternalKeep ...
- Unity3D开发之NGUI结合粒子系统的遮挡问题
原地址:http://blog.csdn.net/lihandsome/article/details/22194025 我的是NGUI3.0.3版本,在加入粒子系统的时候发现一直都是在精灵的下面,所 ...