[luogu2317 HNOI2005] 星际贸易 (dp)
Solution
两个dp分开处理,
第一问什么都不考虑直接dp
第二问还有些疑惑,姑且先留坑
Code
//By Menteur_Hxy
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define Re register
#define Ms(a,b) memset(a,(b),sizeof(a))
#define Fo(i,a,b) for(Re int i=(a),_=(b);i<=_;i++)
#define Ro(i,a,b) for(Re int i=(b),_=(a);i>=_;i--)
using namespace std;
inline int read() {
int x=0,f=1;char c=getchar();
while(!isdigit(c)) {if(c=='-')f=-f;c=getchar();}
while(isdigit(c)) x=(x<<1)+(x<<3)+c-48,c=getchar();
return x*f;
}
const int N=2010;
int n,m,R,L,ans1,val,ans2,now;
bool vis[N];
int A[N],B[N],S[N],P[N],F[N],f[N][N<<1],Q[N<<1][N],h[N<<1],t[N<<1];
int main() {
n=read(),m=read(),R=read(),L=read(); R=min(R,2*n);
Fo(i,1,n) A[i]=read(),B[i]=read(),S[i]=read(),P[i]=read(),F[i]=read();
Fo(i,2,n) if(S[i]-S[i-1]>L) return puts("Poor Coke!"),0;
Ms(f,128);f[0][0]=0;
Fo(i,1,n) Fo(j,0,m) {
f[i][j]=f[i-1][j];
if(j>=A[i]) f[i][j]=max(f[i][j],f[i-1][j-A[i]]+B[i]);
}
Fo(i,1,m) if(f[n][ans1]<f[n][i]) ans1=i; val=f[n][ans1],now=ans1;
Ro(i,1,n) if(f[i][now]!=f[i-1][now]) now-=A[i],vis[i]=1;
Ms(f,127);f[0][R]=0;Q[R][t[R]++]=0;
Fo(i,1,n) Fo(j,0,R) {
if(P[i]&&j) f[i][j]=min(f[i][j],f[i][j-1]+P[i]);
if(h[j+2]<t[j+2]) f[i][j]=min(f[i][j],f[Q[j+2][h[j+2]]][j+2]+F[i]);
if(vis[i]) h[j]=t[j]=0;
while(h[j]<t[j]&&f[Q[j][t[j]-1]][j]>=f[i][j]) t[j]--;
Q[j][t[j]++]=i;
while(h[j]<t[j]&&S[i+1]-S[Q[j][h[j]]]>L) h[j]++;
}
Fo(i,1,R) if(f[n][i]<f[n][ans2]) ans2=i;
if(f[n][ans2]>1e9) return puts("Poor Coke!"),0;
return printf("%d %d",val,val-f[n][ans2]),0;
}
[luogu2317 HNOI2005] 星际贸易 (dp)的更多相关文章
- 洛谷 P2317 [HNOI2005]星际贸易 解题报告
P2317 [HNOI2005]星际贸易 题目描述 输入输出格式 输入格式: 输出格式: 如果可以找到这样的方案,那么输出文件output.txt中包含两个整数X和Y.X表示贸易额,Y表示净利润并且两 ...
- 【BZOJ1205】[HNOI2005]星际贸易(动态规划)
[BZOJ1205][HNOI2005]星际贸易(动态规划) 题面 BZOJ 洛谷 题解 第一问就是一个裸\(dp\),因为什么都不用考虑... 所以设\(f[i][j]\)表示当前停靠在第\(i\) ...
- bzoj1205: [HNOI2005]星际贸易
题目链接 bzoj1205: [HNOI2005]星际贸易 题解 辣鸡题面,毁我青春 辣鸡题面,毁我青 辣鸡题面,毁我 辣鸡题面,毁 第一问,背包dp 第二问 问题转化为在一个序列上经过好多点走到终点 ...
- [HNOI2005]星际贸易
https://www.zybuluo.com/ysner/note/1309789 题面 要素太多,还是自己看吧 解析 如果要求贸易额最大,就相当于: 有\(n\)个物品(星球),每个物品价值为\( ...
- 【简●解】[HNOI2005]星际贸易
[大意] 太多了,懒得打,贴\(LG\)的图了... [分析] 开始拿到这道题有点慌:怎么限制条件这么多,再读读题. 注意一个东西,就是贸易额与费用是独立分开的,并且题目保证只有一种方案获得最大贸易额 ...
- 小a与星际探索---DP
题目描述 小a正在玩一款星际探索游戏,小a需要驾驶着飞船从11号星球出发前往nn号星球.其中每个星球有一个能量指数pp.星球ii能到达星球jj当且仅当pi>pjpi>pj.同时小a的飞船还 ...
- LOJ 6435 「PKUSC2018」星际穿越——DP+倍增 / 思路+主席树
题目:https://loj.ac/problem/6435 题解:https://www.cnblogs.com/HocRiser/p/9166459.html 自己要怎样才能想到怎么做呢…… dp ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- cyyz: Day 4 网络流整理
Day 4 网络流的理论性知识(算了..我自己都看不下去,还是整理些例题以后复习用吧qaq): 一.PPT(主要内容) 二.搜自度娘 定义: 年,L.R. 福特和 D.R. 富尔克森等人给出了解决 ...
随机推荐
- 黑马程序猿——————java基础
一.软件开发 软件是什么? 软件是简单的来说,计算机数据和指令的集合,数据(比方年龄,性别).指令及时告诉计算机怎样对他进行处理.计算机但是没有人那么聪明啊! 二.图形化界面(GUI),主要特点就是. ...
- javascript 使用方式
第一种:内嵌在html节点中 <html> <body> <input type="button" onclick="document.bo ...
- hdoj--5104--Primes Problem(素数打表)
Primes Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- [NOIP 2016] 蚯蚓
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4721 [算法] 首先,我们可以维护一个堆,堆中存放蚯蚓的长度,由于除当前蚯蚓其他的蚯 ...
- tarjan用法——割点
今天洛谷疯狂给我推送tarjan的题(它好像发现了我最近学tarjan),我正好做一做试一试(顺便练一练快读和宏定义). 其实找割点的tarjan和算强连通分量的tarjan不一样,找割点的判定条件比 ...
- DCloud-MUI:AJAX
ylbtech-DCloud-MUI:AJAX 1.返回顶部 1. 2. 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 1. http://dev.dcloud.net.cn ...
- 部署webservice常见问题汇总
问题一 转自http://blog.csdn.net/xingxing513234072/article/details/38615997 处理程序“WebServiceHandlerFactory- ...
- selenium3 + python - css定位
一.css:属性定位 1.css可以通过元素的id.class.标签这三个常规属性直接定位到 2.如下是百度输入框的的html代码: <input id="kw" class ...
- IPv6系列-初学者的10个常见困扰
本文是<IPv6系列>文章的第二篇<常见困扰>,紧接<入门指南>,用于解答IPv6的10个常见困扰. 小慢哥的原创文章,欢迎转载 目录 ▪ 本文缘由 ▪ 困扰1. ...
- 3Ddungeon-------三维搜索-----偷个懒 把 亡命逃窜 的代码修改了一下 拿来用了
题 很简单 就是给一个 三维的迷宫然后 开你起始地点 S 问你能不能到达 出口 E 能的话 需要多长时间 ? #include<stdio.h> #include<string ...