it's a  dp  difficult problem

试想如果我们遇见这样一道题,:

有n道题目,每道题有一个得分v和用时t;

我们要得够w分;用时最少  怎么做??

这是一个裸奔的01背包

如果多一个规则,

每道题有一个开始时间,也就是开始做该题的时间不得少于一个时间st

现在怎么做?

我们应该把问题按照开始时间进行排序。

为什么?

用 st1 t1 与 st2 t2 来看

如果st1<st2

如果事情1先开始 那么所用时间ti1=st1+t1+(wait_time)t2

如果事情2先开始 那么所用时间是ti2=st2+t1+t2

从中可以看出ti1<ti2的

所以应该从开始时间少的开始做

#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
#define ll long long
#define cl(a,b) memset(a,b,sizeof(a)) ll dp[];
typedef struct data
{
int v,t,l;
}D;
D da[]; int cmp(D a,D b)
{
int ax=a.l-a.t,bx=b.l-b.t;
if(ax!=bx)return ax<bx;
return a.l<b.l;
} int main()
{
int n;
ll w;
while(scanf("%d %I64d",&n,&w)!=EOF)
{
cl(dp,);
int i,j,k,s=;
for(i=;i<n;i++)
{
scanf("%d %d %d",&da[i].t,&da[i].v,&da[i].l);
s+=max(da[i].t,da[i].l);
}
sort(da,da+n,cmp);
for(i=;i<n;i++)
{
int st=max(da[i].t,da[i].l);
for(j=s;j>=st;j--)
{
dp[j]=max(dp[j],dp[j-da[i].t]+da[i].v);
// cout<<i<<" * "<<j<<" * "<<dp[j]<<endl;
}
}
for(j=;j<=s;j++)
{
// cout<<j<<' '<<dp[j]<<endl;
if(dp[j]>=w)break;
}
if(j<=s)printf("%d\n",j);
else printf("zhx is naive!\n");
}
return ;
}

hdu 5188的更多相关文章

  1. hdu 5188 zhx and contest [ 排序 + 背包 ]

    传送门 zhx and contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  2. hdu 5188 dfs+二分

    get了很多新技能 当时想到了用dfs,但是排序用的是限制时间排序,一直没搞出来. 正解: 二分用时,dfs判断,为了顺利进行做题,需要按照做题开始时间排序 还可以用dp 题意: 作为史上最强的刷子之 ...

  3. hdu 5188(带限制的01背包)

    zhx and contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  4. HDU 5188 背包

    有N道题.要求得到最少W分 给出N道题的:每道题用时T.分数V,应在且必须在L时刻提交才干得分 问得到W分所用的最少的时间 以L-T排序,然后做01背包就可以 #include "stdio ...

  5. HDU 5188 zhx and contest(带限制条件的 01背包)

    Problem Description As one of the most powerful brushes in the world, zhx usually takes part in all ...

  6. hdu 3401 单调队列优化+dp

    http://acm.hdu.edu.cn/showproblem.php?pid=3401 Trade Time Limit: 2000/1000 MS (Java/Others)    Memor ...

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

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

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

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

  9. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

随机推荐

  1. wamp目录索引图片不显示

    在wampserver安装目录下  \bin\apache\Apache2.2.21\conf\extra\httpd-autoindex.conf Alias /icons/ "c:/Ap ...

  2. 文成小盆友python-num13 整个堡垒机

    本节主要内容: 1.pymsql的使用 2.SQLAchemy使用 3.Paramiko 4.通过ORM功能使用和Paramiko的使用实现一个简单的堡垒机模型. 一.pymsql的使用 pymsql ...

  3. NT头 IMAGE_NT_HEADER

    typedef struct_IMAGE_NT_HEADERS{ DWORD Signature; // 固定为 0x00004550 “PE00" IMAGE_FILE_HEADER Fi ...

  4. 解密随机数生成器(二)——从java源码看线性同余算法

    Random Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术 ...

  5. 【HDOJ】4541 Ten Googol

    打表的大水题. /* 4541 */ #include <cstdio> #include <cstdlib> #include <cstring> , , , } ...

  6. HDU3726---Graph and Queries 离线处理+Treap

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3726 题意:n个点m条边的一张无向图,每个点有一个权值, 有3中操作. D X 删除第X条边 Q X ...

  7. Scala-的元组和映射

    package com.mengyao.scala.function /** * Scala 映射 * Scala中的Key,Value集合被称为映射,映射中的每一个key,value称为对偶 *   ...

  8. hadoop-2.6.0为分布式安装

    hadoop-2.6.0为分布式安装 伪分布模式集群规划(单节点)------------------------------------------------------------------- ...

  9. .Net词汇表中常见缩略语汇总

    .Net中存在大量的专业词汇(详细列表,请参考:Visual Studio 和 .NET Framework 词汇表),其中很多词汇常常采用缩略语的形式被大量使用. 在阅读.Net书籍或网络资料时,便 ...

  10. ubuntu dash

    缘由:写一些脚本放在/etc/rc.loca自动执行开机启动报错 fiail to start /etc/rc.local 查找资料 缘起:ubuntu在6.0后默认bash改为了dash  导致很多 ...