背景

广东汕头聿怀初中 Train#2 Problem4

描述

现有N种箱子,每种箱子高度H_i,数量C_i。现选取若干箱子堆成一列,且第i种箱子不能放在高度超过A_i的地方。试求最大叠放高度。

输入格式

第一行,一个整数,表示箱子种类N。
接下来N行,每行三个整数,表示H_i,A_i,C_i。

输出格式

一个整数,表示最大高度。

测试样例1

输入


7 40 3 
5 23 8 
2 52 6

输出

48

备注

N <= 400 , H_i <= 100 , C_i <= 10 , A_i <= 40000
Vivian Snow

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
struct cc{
int h,a,c;//h箱子高度 a最大高度 c数量
}node[];
bool cmp(cc a,cc b){
return a.a<b.a;
}
int N,ans,f[]; void print(){//测试用
puts("");
for(int i=;i<=;i++) printf("h=%-2d %-2d\n",i,f[i]);
puts("");
} int main(){//顶端不可以超过a
// freopen("01.txt","r",stdin);
memset(f,,sizeof(f));
f[]=;
scanf("%d",&N);
for(int i=;i<=N;i++)scanf("%d%d%d",&node[i].h,&node[i].a,&node[i].c);
sort(node+,node+N+,cmp);
for(int i=;i<=N;i++){
for(int j=node[i].a;j>=node[i].h;j--){//逆序,以保证无后效性
if(f[j-node[i].h]>){//如果这个高度可以放
for(int k=;k<=node[i].c;k++){//把能叠的都叠上去
if(j-node[i].h +k*node[i].h<=node[i].a) {//避免越界
f[j-node[i].h +k*node[i].h]++;
ans=max(ans,j-node[i].h+k*node[i].h);//更新高度
}
}
}
} // print(); }
printf("%d\n",ans);
return ;
}

详见注释啦,讲的很清楚了,注意逆序,条件略多,勿喷。

TYVJ P1086 Elevator Label:dp的更多相关文章

  1. TYVJ P1048 田忌赛马 Label:dp

    描述     中国古代的历史故事“田忌赛马”是为大家所熟知的.话说齐王和田忌又要赛马了,他们各派出N匹马,每场比赛,输的一方将要给赢的一方200两黄金,如果是平局的话,双方都不必拿出钱.现在每匹马的速 ...

  2. TYVJ P1015 公路乘车 &&洛谷 P1192 台阶问题 Label:dp

    题目描述 有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式. 输入输出格式 输入格式: 输入文件的仅包含两个正整数N,K. 输出格式: 输入文件s ...

  3. TYVJ P1045 &&洛谷 1388 最大的算式 Label:dp

    描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号.例 ...

  4. TYVJ P1051 选课 Label:多叉转二叉&&树形dp(虐心♥)

    描述 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的.学生选修了这M门课并考核通过就能获得 ...

  5. TYVJ P1088 treat Label:鞭笞人的DP

    时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 广东汕头聿怀初中 Train#2 Problem2 描述 给出长度为N的数列{A_i},每次可以从最左边或者最 ...

  6. TYVJ P1016 装箱问题 Label:01背包 DP

    做题记录:2016-08-15 23:07:04 背景 太原成成中学第2次模拟赛 第三道 描述 有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积 ( ...

  7. TYVJ P1091 等差数列 Label:dp

    背景 广东汕头聿怀初中 Train#3 Problem 3 描述 等差数列的定义是一个数列S,它满足了(S[i]-S[i-1]) = d (i>1).显然的一个单独的数字或者两个数字也可以形成一 ...

  8. TYVJ P1046 Blast Label:dp

    描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为“abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X的扩 ...

  9. 洛谷 P1736 创意吃鱼法 Label:dp || 前缀和

    题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...

随机推荐

  1. asp.net 网站 或者web Api 发布

    asp.net 发布iis时可能遇到的内部服务错误常见的有两种: 1.如下图,500.19 Internal Server Error(内部服务错误) 这种错误可能是由于本机的注册表中的asp.net ...

  2. HDOJ 1106

    #include<iostream> #include<algorithm> #include<string.h> #include<stdlib.h> ...

  3. MVC ViewBag和ViewData的区别

    在MVC3开始,视图数据可以通过ViewBag属性访问,在MVC2中则是使用ViewData.MVC3中保留了ViewData的使用.ViewBag 是动态类型(dynamic),ViewData 是 ...

  4. 【leetcode】Combination Sum

    Combination Sum Given a set of candidate numbers (C) and a target number (T), find all unique combin ...

  5. HTTP认证相关

    Java HTTPBasicAuth http://blog.csdn.net/kkdelta/article/details/28419625Python HTTPBasicAuth http:// ...

  6. python模拟浏览器保存Cookie进行会话

    #! /usr/bin/env python # -*-coding:utf- -*- import urllib import urllib2 import cookielib class NetR ...

  7. php+phpquery简易爬虫抓取京东商品分类

    这是一个简单的php加phpquery实现抓取京东商品分类页内容的简易爬虫.phpquery可以非常简单地帮助你抽取想要的html内容,phpquery和jquery非常类似,可以说是几乎一样:如果你 ...

  8. iOS7总显示状态栏的解决方法

    转载http://blog.csdn.net/langresser_king/article/details/18351021 2014年2月份开始,苹果需求开发者必须使用xcode5开发游戏和应用, ...

  9. Java中static静态关键字的使用

    我们可以基于一个类创建多个对象,每个对象都拥有自己的成员,所有成员变量的值是根据对象而存在的,有些时候我们希望一个类的所有对象共享一个成员,这就用到了static静态关键字 被静态关键字修饰的成员属于 ...

  10. Java for LeetCode 154 Find Minimum in Rotated Sorted Array II

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...