这题的01背包的特点很容易看出来,但其实发现,这个题讲究加入时候的顺序。

于是,用贪心排序,如代码中所示,如果A在B前面造成的分数损失更小,则排在前面。。。其实这个我也是猜的。。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std; int dp[1005][3005]; struct Problem{
int a,b,c;
}pro[1005]; bool cmp(Problem a,Problem b){
if(a.c*b.b<b.c*a.b) return true;
else if(a.b*a.c+(a.c+b.c)*b.b==b.b*b.c+(a.c+b.c)*a.b){
if(a.b>b.b) return true;
}
return false;
} int main(){
int T,n,t;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&t);
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++){
scanf("%d%d%d",&pro[i].a,&pro[i].b,&pro[i].c);
}
sort(pro+1,pro+1+n,cmp);
for(int j=1;j<=n;j++){
for(int i=1;i<=t;i++){
dp[j][i]=max(dp[j][i],dp[j-1][i]);
if(i<pro[j].c) continue;
dp[j][i]=max(dp[j][i],dp[j-1][i-pro[j].c]+pro[j].a-pro[j].b*i);
}
}
int ans=dp[n][0];
for(int i=1;i<=t;i++){
ans=max(ans,dp[n][i]);
}
printf("%d\n",ans);
}
return 0;
}

  

HDU 5501的更多相关文章

  1. 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 ...

  2. HDU 5501 The Highest Mark

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

  3. HDU 5501 背包问题

    需要按照B/C的值从大到小排序. #include<cstdio> #include<cstring> #include<iostream> #include< ...

  4. hdu 5501 The Highest Mark(贪心+01背包)

    题意:类似cf的赛制,每道题目有A,B,C三个值,A表示初始分数,B表示每分钟题的分数会减少B,C表示做这道题需要C分钟,数据保证分数不会变为负数.现在给出比赛时长,问安排做题的顺序,求最大得分. 思 ...

  5. HDU 5501——The Highest Mark——————【贪心+dp】

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

  6. HDU 5501 The Highest Mark (贪心+DP,经典)

    题意: 有n道题目,每道题目的初始分数为Ai,分数每分钟减少Bi,完成此题需要Ci分钟,问在t分钟内最多能获得多少分? 思路: 好题~ 如果没有B的话,就是一道裸的01背包的题目了.每道题目的得分为: ...

  7. HDU 5501:The Highest Mark 01背包

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

  8. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

随机推荐

  1. 327 Count of Range Sum 区间和计数

    Given an integer array nums, return the number of range sums that lie in [lower, upper] inclusive.Ra ...

  2. 简单入门构建spark1.6.1源码环境

    能有源码的辅助,加上自身的修炼,能起到很好的作用! 对于初学者,不建议,一上来看源码. 下载 http://archive.apache.org/dist/spark/spark-1.6.1/

  3. SQL Server之纵表与横表互转

    1,纵表转横表 纵表结构 Table_A: 转换后的结构: 纵表转横表的SQL示例: SELECT  Name ,        SUM(CASE WHEN Course = N'语文' THEN G ...

  4. Android开发笔记(5)——方法调用(基础)

    转载请注明——博客园igoslly:http://www.cnblogs.com/igoslly/p/6833544.html   在实际方法调用中,程序按顺序逐句执行,直到“}”结束. 为避免程序大 ...

  5. MFC SkinMagic使用方法

    皮肤库下载地址 https://pan.baidu.com/s/1IuiYlFUJIi-TS9Cgz3M6RA 1.创建MFC工程 2.然后把corona.smf.SkinMagic.dll.Skin ...

  6. linux使用mount命令挂载、umount命令取消挂载

    一.mount挂载目录方式: mount 挂载目录 磁盘目录 二.umout取消挂载目录方式: 1.umout 磁盘目录 2.umout 挂载目录 3.umout 磁盘目录 挂载目录 如下图

  7. 网络中 ping 不通 路由表

    不管是在window还是在linux中,我们经常会遇到ping不通的问题. 这里的原因很多,比如不同的网段交换机做了一些限制等,这些问题是我们人工不能解决的. 但是,当你发现各自的网关是可以ping的 ...

  8. [Windows Server 2008] Serv-U安装方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:Serv- ...

  9. (转)Hibernate的优化方案

    http://blog.csdn.net/yerenyuan_pku/article/details/70768603 HQL优化 使用参数绑定  使用绑定参数的原因是让数据库一次解析SQL,对后续的 ...

  10. js的加法操作表

    Number + Number -> 加法 Boolean + Number -> 加法 Boolean + Boolean -> 加法 Number + String -> ...