分组背包而已。注意的是,每个时间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. 安卓离线SDK Windows版 资源包下载地址全集

    1.Tools    https://dl-ssl.google.com/android/repository/platform-tools_r19.0.1-windows.zip https://d ...

  2. oracle中关于删除表purge语句和闪回语句的基本使用

    语法: drop table ... purge; 例子:drop table test purge; purge是直接删除表,不保留到回收站,10G开始默认drop表式改名移动到回收站; 闪回(fl ...

  3. linux下nmap工具的使用

    NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工 具包,其基本功能有三个,一是探测一组主机是否在线:其次是扫描主机端口,嗅探所提供的网络服务:还可以推断主机所用的操作系统 ...

  4. js设计模式-工厂模式(XHR工厂)

    场景:如果代码中需要多次执行Ajax请求,那么明智的做法是把创建这种对象的代码提取到一个类中,并创建一个包装器来包装在实际请求时所要经历的一系列步骤.简单工厂非常适合这种场合. /*AjaxHandl ...

  5. anaconda 使用 及 tensorflow-gpu 安装

    Anaconda简易使用 创建新环境 conda create -n rcnn python=3.6 删除环境 conda remove -n rcnn --all 进入环境 conda activa ...

  6. Blender插件之Panel

    目标 [x] 总结Blender之Panel 总结 Blender之Panel需要从Blender界面组成开始理解. 直观上Blender的界面层次为 Editors ‣ Regions ‣ (Tab ...

  7. Qt5.9 WebEngine 概述

    Qt WebEngine模块提供了一个web浏览器, 在不使用本地浏览器的情况下, 它可以很容易地把Web内容嵌入到Qt应用程序中. Qt WebEngine为渲染HTML, XHTML和SVG文档, ...

  8. [hihocoder][Offer收割]编程练习赛45

    互补二元组 Xi + Xj = Yi + Yj等价于Xi - Yi + Xj - Yj = 0 ,对每个二元组计算其x与y的差,每次加上其相反数的个数. #pragma comment(linker, ...

  9. Educational Codeforces Round 35

    Nearest Minimums 相同的数里最小的数里的最小距离 Solution Two Cakes Solution Three Garlands 瞎比试 Solution Inversion C ...

  10. outlook导入配置文件

    公司入.离职人员越来越多,所以产生了一个自动化配置邮件的想法 查看了一下资料,outlook有导入配置文件的方法可用. 利用otc工具,打开office2010的安装文件夹,执行setup.exe / ...