分组背包而已。注意的是,每个时间T,要把一组的全加进去比较一次。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#define N 205
#define T 41000 using namespace std; int dp[T];
struct node{
int x,y;
int t,v;
}Node[N];
struct zu{
int t,v;
zu(int tt,int vv){
t=tt; v=vv;
}
};
vector<zu>pts[N]; bool cmp(node a,node b){
if(a.x*b.y-a.y*b.x>0)
return true;
else if(a.x*b.y-a.y*b.x==0){
if(a.x*a.x+a.y*a.y<b.x*b.x+b.y*b.y)
return true;
}
return false;
} int main(){
int n,t,kase=0;
while(scanf("%d%d",&n,&t)!=EOF){
for(int i=0;i<n;i++){
scanf("%d%d%d%d",&Node[i].x,&Node[i].y,&Node[i].t,&Node[i].v);
pts[i].clear();
}
pts[n].clear();
sort(Node,Node+n,cmp);
int al=1;
pts[al].push_back(zu(Node[0].t,Node[0].v));
for(int i=1;i<n;i++){
if(Node[i].x*Node[i-1].y-Node[i].y*Node[i-1].x!=0)
al++;
pts[al].push_back(zu(Node[i].t,Node[i].v));
}
for(int i=1;i<=al;i++){
int size=pts[i].size();
for(int k=1;k<size;k++){
pts[i][k].t+=pts[i][k-1].t;
pts[i][k].v+=pts[i][k-1].v;
}
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=al;i++){
int size=pts[i].size();
for(int p=t;p>=0;p--)
for(int k=0;k<size;k++){
if(p-pts[i][k].t<0) break;
dp[p]=max(dp[p],dp[p-pts[i][k].t]+pts[i][k].v);
}
}
printf("Case %d: %d\n",++kase,dp[t]);
}
return 0;
}

  

HDU 4341的更多相关文章

  1. HDU 4341 分组背包

    B - Gold miner Time Limit:2000MS      Memory Limit:32768KB     Description Homelesser likes playing ...

  2. 【HDU - 4341】Gold miner(分组背包)

    BUPT2017 wintertraining(15) #8B 题意 给出每个黄金的坐标.价值及耗时,同一方向的黄金只能依次取,求T时间内收获的最大值. 题解 同一方向,物品前缀和构成的组合,相当于是 ...

  3. HDU 4341 Gold miner (分组背包)

    先把线按照距离原点的距离排序,然后用叉积把在同一条直线上的点放在一起, 把在同一条线上的点中的前i个点当成一个点就转化成了分组背包. 写if(kas++) putchar('\n') 居然PE了,PE ...

  4. HDU 4341 Gold miner(分组背包)

    题目链接 Gold miner 目标是要在规定时间内获得的价值总和要尽可能大. 我们先用并查集把斜率相同的物品分在同一个组. 这些组里的物品按照y坐标的大小升序排序. 如果组内的一个物品被选取了,那该 ...

  5. 2012 #5 Gold miner

    Gold miner Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

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

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

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

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

  8. hdu 4859 海岸线 Bestcoder Round 1

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

  9. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

随机推荐

  1. luogu3799 妖梦拼木棒

    题目大意 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法?木棒长度都<=5000. 题解 根据容斥原理,三角形两条边分别由长度相等的单根木棒组成,另一条边由两条小于该边长的木棒构 ...

  2. 0x57 倍增优化DP

    真的是下定了巨大的决心来搞这一讲,果不其然耗了一晚上 开车旅行(真的是NOIP的题吗怎么这么恐怖) 首先,先用set把小A和小B从城市i出发,到达的下一个城市预处理出来. f[i][j][k]表示走了 ...

  3. Windows下Vim主题变更

    默认的好丑! 主题位置. 修改配置文件. 添加主题设置. 新的主题,很高端大气. set fileencodings=utf8,ucs-bom,cp936,big set fileencoding=u ...

  4. P1025小飞侠的游园方案

    描述 经过抽签选择,小智将军第一个进入考场. 菜虫:(身上散射出华贵(?)的光芒)欢迎你,第一位挑战者!! 小智:……(走到菜虫身后,关灯)女王陛下,虽然我们国家现在很富裕,但也请您不要浪费电来用这么 ...

  5. poj--1664--放苹果(递归好体)

    放苹果 Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Submit Status De ...

  6. 【BZOJ 2982】 combination

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2982 [算法] lucas定理 [代码] #include<bits/stdc ...

  7. angular4 select 绑定(ngModel)对象

    欢迎加入前端交流群交流知识&&获取视频资料:749539640 <h1>My Application</h1> <select [(ngModel)]=& ...

  8. Could not open ServletContext resource [/WEB-INF/Dispatcher-servlet.xml]

    转自:https://blog.csdn.net/mafan121/article/details/44833201 配置spring时出现了如下错误: 默认的DispatcherServlet在初始 ...

  9. 在ubuntu中安装Markdown神器Typora

    title: 在ubuntu中安装Markdown神器Typora toc: false date: 2018-09-01 17:48:15 categories: methods tags: ubu ...

  10. 详解sqlserver查询表索引

    SELECT   索引名称=a.name ,表名=c.name ,索引字段名=d.name ,索引字段位置=d.colid ? 1 2 3 4 5 6 7 8 FROM  sysindexes  a ...