题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5501

二维数组:

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<queue>
using namespace std;
#define N 3100
int dp[N][N];
struct node
{
int A, B, C;
}a[N]; int cmp(node p, node q)
{
return p.C*q.B < p.B*q.C;
}
int main()
{
int T, n, t;
scanf("%d", &T);
while(T--)
{
memset(a, , sizeof(a));
memset(dp, , sizeof(dp));
scanf("%d%d", &n, &t);
for(int i=; i<n; i++)
{
scanf("%d%d%d", &a[i].A, &a[i].B, &a[i].C);
}
sort(a, a+n, cmp);
int ans = ;
for(int i=; i<n; i++)
{
for(int j=; j<=t; j++)
{
if(j<a[i].C)
dp[i+][j] = dp[i][j];
else
dp[i+][j] = max(dp[i][j], dp[i][j-a[i].C]+a[i].A-j*a[i].B);
ans=max(dp[i+][j],ans);
}
}
printf("%d\n", ans);
}
return ;
}

一维数组:

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<queue>
using namespace std;
#define N 3100
int dp[N];
struct node
{
int A, B, C;
}a[N]; int cmp(node p, node q)
{
return p.C*q.B < p.B*q.C;
}
int main()
{
int T, n, t;
scanf("%d", &T);
while(T--)
{
memset(a, , sizeof(a));
memset(dp, , sizeof(dp));
scanf("%d%d", &n, &t);
for(int i=; i<n; i++)
{
scanf("%d%d%d", &a[i].A, &a[i].B, &a[i].C);
}
sort(a, a+n, cmp);
int ans = ;
for(int i=; i<n; i++)
{
for(int j=t; j>=a[i].C; j--)
{
dp[j] = max(dp[j], dp[j-a[i].C]+a[i].A-j*a[i].B);
ans = max(ans, dp[j]);
} }
printf("%d\n", ans);
}
return ;
}

The Highest Mark---hdu5501(问题转化 01背包)的更多相关文章

  1. hdu1203--D - I NEED A OFFER!(转化01背包)

    D - I NEED A OFFER! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  2. hdu 2955(概率转化,01背包)

    Hot~~招聘——巴卡斯(杭州),壹晨仟阳(杭州),英雄互娱(杭州) (包括2016级新生)除了校赛,还有什么途径可以申请加入ACM校队? Robberies Time Limit: 2000/100 ...

  3. dp之01背包hdu3466(带限制的,当你所拥有的钱数大于某个限定值时才可以购买该物品)

    题意:买东西,每个东西有三个特征值,p代表价格,q代表你手中钱必须不低于q才能买这个物品,v代表得到的价值. mark:又是变种01背包,每做一个变种的,就是一种提高.. 按照q - p以由大到小的顺 ...

  4. HDU 5501:The Highest Mark 01背包

    The Highest Mark  Accepts: 71  Submissions: 197  Time Limit: 2000/1000 MS (Java/Others)  Memory Limi ...

  5. The Highest Mark(01背包)

    The Highest Mark Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Other ...

  6. HDU 5501 The Highest Mark 背包dp

    The Highest Mark Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...

  7. HDU5501/BestCoder Round #59 (div.2)The Highest Mark dp+贪心

    The Highest Mark 问题描述 2045年的SD省队选拔,赛制和三十年前已是完全不同.一场比赛的比赛时间有 tt 分钟,有 nn 道题目. 第 ii 道题目的初始分值为 A_i(A_i \ ...

  8. hdu5501 The Highest Mark

    Problem Description The SDOI in 2045 is far from what it was been 30 years ago. Each competition has ...

  9. HDU 5501 The Highest Mark

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5501 The Highest Mark  Accepts: 32  Submissions: 193 ...

随机推荐

  1. CSS学习笔记(11)--Flex 布局教程:语法篇

    原文--阮一峰博客 作者: 阮一峰 日期: 2015年7月10日 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 ...

  2. 基于HTML5坦克大战游戏简化版

    之前我们有分享过不少经典的HTML5游戏,有些还是很有意思的,比如HTML5版切水果游戏和HTML5中国象棋游戏.今天要分享的是一款简化版的HTML5坦克大战游戏,方向键控制坦克的行进方向,空格键发射 ...

  3. 纯css3实现的win8加载动画

    今天给大家分享一款纯css3实现的win8加载动画.在这款实例中动画效果完全由css3实现.一起看下效果图: 在线预览   源码下载 实现的代码. html代码: <div class=&quo ...

  4. windbg的使用

      1. set 1.1. 设置Symbol file path file->symbol file path, 如: D:\***\TestProject\pdb   1.2 设置source ...

  5. 你不知道的JavaScript学习笔记1——作用域

    处理程序三要素: 引擎:编译与执行过程. 编译器:语法分析与代码生成等. 作用域:收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权 ...

  6. 29Mybatis_整合ehcache以及应用场景

    ehcache是一个分布式缓存框架. 分布缓存

  7. mysql -- 存储过程中 declare 和 set 定义变量的区别

    mysql存储过程中,定义变量有两种方式:1.使用set或select直接赋值,变量名以 @ 开头.例如:set @var=1;可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量. 2.以 ...

  8. C++关键字之explicit(显式)

     C++ Code  12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...

  9. ConfigParser 读写配置文件

    一.ini: 1..ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式 2.ini文件创建方法: (1)先建立一个记事本文件.(2 ...

  10. iOS TabBar添加阴影

    效果图如下所示: 直接上代码 //移除顶部线条 self.tabBar.backgroundImage = [UIImage new]; self.tabBar.shadowImage = [UIIm ...