hdu 5188
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的更多相关文章
- hdu 5188 zhx and contest [ 排序 + 背包 ]
传送门 zhx and contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- hdu 5188 dfs+二分
get了很多新技能 当时想到了用dfs,但是排序用的是限制时间排序,一直没搞出来. 正解: 二分用时,dfs判断,为了顺利进行做题,需要按照做题开始时间排序 还可以用dp 题意: 作为史上最强的刷子之 ...
- hdu 5188(带限制的01背包)
zhx and contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- HDU 5188 背包
有N道题.要求得到最少W分 给出N道题的:每道题用时T.分数V,应在且必须在L时刻提交才干得分 问得到W分所用的最少的时间 以L-T排序,然后做01背包就可以 #include "stdio ...
- HDU 5188 zhx and contest(带限制条件的 01背包)
Problem Description As one of the most powerful brushes in the world, zhx usually takes part in all ...
- hdu 3401 单调队列优化+dp
http://acm.hdu.edu.cn/showproblem.php?pid=3401 Trade Time Limit: 2000/1000 MS (Java/Others) Memor ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- hdu 4859 海岸线 Bestcoder Round 1
http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...
随机推荐
- 【转】基于jquery的无刷新表格分页
效果图 css样式 <style> html,body{margin: 0;padding:0} a:focus {outline: none;} /* 通用表格显示 */ table, ...
- 百度SEO优化
下面是一些SEO优化的基本步骤: 一.内部优化 (1)TITLE,KEYWORDS,DESCRIPTION等的优化 (2)内部链接的优化,包括相关性链接,锚文本链接,各导航等链接页 (3)每天保持站内 ...
- 一些我后写出来的awk脚本
mail.awk function mailByShell(receiver, sender, subject, content, __ARGVEND__, xhead, xfrom, xmime, ...
- [转]用Objective-C实现简单的数学字符串公式的计算
好友第一次用写技术分享,这么多年都没见他正经的写点东西.那天突然抬头问我,Objective-C有没字符串计算的.我说,没有.后来他默默实现了,特为他转发,表示支持. ================ ...
- Android系统源代码下载
最近,我在研究android,所以想下载android源代码看看.按照http://source.android.com/source/downloading.html 这个页面所提示的步骤在下载源代 ...
- 迅雷程浩:企业外包服务,下一个大的风口?(2B业务一定要懂销售和营销的人,这点和2C 不一样)
我今年暑假去了趟硅谷,一天去一个朋友的公司拜访,发现这公司没有前台,前台桌子上放了一个显示器.我刚进去,显示器里的老印就跟我打招呼 "How may I help you?" 事后 ...
- BZOJ3399: [Usaco2009 Mar]Sand Castle城堡
3399: [Usaco2009 Mar]Sand Castle城堡 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 22 Solved: 17[Sub ...
- HDOJ 1303 Doubles(简单题)
Problem Description As part of an arithmetic competency program, your students will be given randoml ...
- cf509B Painting Pebbles
B. Painting Pebbles time limit per test 1 second memory limit per test 256 megabytes input standard ...
- HDU5140---Hun Gui Wei Company (主席树)
主席树太强大了,,如果仅仅用来求第k大就太屈才了..貌似和HDU4605差不多,那个是在图上根据点的顺序建立主席树,这个是根据年龄大小 或者等级高低建立主席树. 题意 大致就是一个二维区间的求和,但是 ...