题目链接

bzoj1205: [HNOI2005]星际贸易

题解

辣鸡题面,毁我青春

辣鸡题面,毁我青

辣鸡题面,毁我

辣鸡题面,毁

第一问,背包dp

第二问

问题转化为在一个序列上经过好多点走到终点,

符合各项条件的情况下费用最小,其中有某些点必须经过。

g[u][fu]表示将要离开点u而还没有离开的时候有fu个燃料。

得到g[u][fu]=min(g[u][fu-1]+p[u],g[v][fu+2]) 、

复杂度n^3

单调队列维护fu相同时g[fu][v]的最小值

n^2

代码

#include<bits/stdc++.h>
using namespace std;
inline int read() {
int x = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9'){if(c == '-')f = - 1; c = getchar();}
while(c <= '9' && c >= '0')x = x * 10 + c - '0',c= getchar();
return x * f;
}
const int maxn = 2007;
int n,m,r,l0; //m max afford // r : 最大燃料量,//l0 不做维护飞的最大距离
int a[maxn],l[maxn],p[maxn],c[maxn],f[maxn][maxn * 2];
int g[maxn][maxn * 2];
bool ch[maxn][maxn];
int q[maxn ][maxn] ,h[maxn],t[maxn];
const int INF = 1e9;
bool must[maxn]; int solve() {
memset(g,0x3f,sizeof g);
memset(t,-1,sizeof t);
q[r][t[r] = 0] = g[0][r] = 0 ;
for(int u = 1;u <= n;++ u)
for(int fu = 0;fu <= r;++ fu) {
if(fu > 0 && p[u]) g[u][fu] = min(g[u][fu],g[u][fu- 1] + p[u]);
int k = fu + 2;
if(k <= r) { while(h[k] <= t[k] && l[u] - l[q[k][h[k]]] > l0) h[k] ++;
if(h[k] <= t[k]) g[u][fu] = std::min(g[u][fu],g[q[k][h[k]]][k] + c[u]);
}
while(h[fu] <= t[fu] && g[u][fu] < g[q[fu][t[fu]]][fu]) t[fu] --;
if(must[u]) t[fu] = h[fu] - 1;
q[fu][++ t[fu]] = u;
}
int ret = INF;
for(int i = 0;i <= r;++ i) ret = std::min(ret,g[n][i]);
return ret;
}
void get(int i,int j) {
if(! i ) return ;
if(ch[i][j]) must[i] = true , get(i - 1,j - a[i]);
else get(i - 1,j) ;
}
int main() {
n = read(),m = read(),r = read(),l0 = read();
r = std::min(r,2 * n);
for(int b,i = 1;i <= n;++ i) {
a[i] = read(),b = read(),l[i] = read(),p[i] = read(),c[i] = read();
for(int j = m;j >= 0;-- j) {
f[i][j] = f[i - 1][j];
if(j >= a[i] && f[i - 1][j - a[i]] + b > f[i][j]) {
f[i][j] = f[i - 1][j - a[i]] + b;
ch[i][j] = 1;
}
}
}
get(n,m);
int ned = solve();
if(ned >= INF) puts("Poor Coke!");
else printf("%d %d\n",f[n][m],f[n][m] - ned);
return 0;
}

bzoj1205: [HNOI2005]星际贸易的更多相关文章

  1. 【BZOJ1205】[HNOI2005]星际贸易(动态规划)

    [BZOJ1205][HNOI2005]星际贸易(动态规划) 题面 BZOJ 洛谷 题解 第一问就是一个裸\(dp\),因为什么都不用考虑... 所以设\(f[i][j]\)表示当前停靠在第\(i\) ...

  2. 洛谷 P2317 [HNOI2005]星际贸易 解题报告

    P2317 [HNOI2005]星际贸易 题目描述 输入输出格式 输入格式: 输出格式: 如果可以找到这样的方案,那么输出文件output.txt中包含两个整数X和Y.X表示贸易额,Y表示净利润并且两 ...

  3. [HNOI2005]星际贸易

    https://www.zybuluo.com/ysner/note/1309789 题面 要素太多,还是自己看吧 解析 如果要求贸易额最大,就相当于: 有\(n\)个物品(星球),每个物品价值为\( ...

  4. [luogu2317 HNOI2005] 星际贸易 (dp)

    传送门 Solution 两个dp分开处理, 第一问什么都不考虑直接dp 第二问还有些疑惑,姑且先留坑 Code //By Menteur_Hxy #include <cstdio> #i ...

  5. 【简●解】[HNOI2005]星际贸易

    [大意] 太多了,懒得打,贴\(LG\)的图了... [分析] 开始拿到这道题有点慌:怎么限制条件这么多,再读读题. 注意一个东西,就是贸易额与费用是独立分开的,并且题目保证只有一种方案获得最大贸易额 ...

  6. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  7. cyyz: Day 4 网络流整理

    Day 4 网络流的理论性知识(算了..我自己都看不下去,还是整理些例题以后复习用吧qaq): 一.PPT(主要内容)   二.搜自度娘 定义: 年,L.R. 福特和 D.R. 富尔克森等人给出了解决 ...

  8. 51nod1773 A国的贸易

    基准时间限制:2 秒 空间限制:524288 KB 分值: 40  A国是一个神奇的国家. 这个国家有 2n 个城市,每个城市都有一个独一无二的编号 ,编号范围为0~2n-1. A国的神奇体现在,他们 ...

  9. BZOJ 1927: [Sdoi2010]星际竞速

    1927: [Sdoi2010]星际竞速 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2051  Solved: 1263[Submit][Stat ...

随机推荐

  1. python中的无参装饰器和有参装饰器

    python中的无参装饰器和有参装饰器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 装饰器特点: 1>.开放封闭原则,即对扩展是开放的,对修改时封闭的: 2>.装饰器 ...

  2. 【DS】排序算法之归并排序(Merge Sort)

    一.算法思想 归并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法的一个非常典型的应用,指的是将两个已经排序的序列合并成一个序列的操作.其归并思想如下: 1)申请空间,使其大小为两个已经 ...

  3. bzoj千题计划260:bzoj2940: [Poi2000]条纹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2940 SG 博弈入门推荐张一飞的<由感性认识到理性认识 ——透析一类搏弈游戏的解答过程> ...

  4. Java迭代器用法

    public class Test01 { public static void main(String[] args) { List list = new ArrayList(); list.add ...

  5. [整理]x=x++和x=++x

    最近看java面试题,再次遇到x=x++,之前一直按照C语言中对自增运算符++的解释去理解.殊不知自己犯了严重的错误. (1)不同的语言的编译器,会导致相同的代码最终执行的结果不确定; (2)而且就算 ...

  6. iOS设置tableViewCell之间的间距(去掉UItableview headerview黏性)

    经常在项目中遇到自定义cell的情况,而且要求cell之间有间距,但是系统没有提供改变cell间距的方法,怎么办? 方法1:自定义cell的时候加一个背景View,使其距离contentView的上下 ...

  7. pytorch之LSTM

    from:http://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-nn/#recurrent-layers class ...

  8. apropos找命令助手

    apropos (意即"关于")能够搜索 Linux 帮助文档来帮你找到你想要的命令.比如说,你不记得你用的发行版用的什么防火墙工具了.你可以输入 apropos "fi ...

  9. IIS部署常见问题总结

    1.通过网站子目录访问后台管理 场景:前台和后台分为两个项目开发,域名只有一个(t.cn),作为前台的地址,后台的地址希望指定为 t.cn/admin 项目部署的时候,需要把后台项目转化为/admin ...

  10. 【windows】在控制面板卸载软件的时候,出现2502,2503的问题

    1. 打开“任务管理器”,找到“详细信息”的页签,将“explorer.exe”的进程结束任务 2.菜单栏的“文件”-->"建立新任务"--> 输入Explorer.e ...