题意

https://loj.ac/problem/2878

思路

真的神仙题,想到就很好写,想不到就写不出来。

肯定只能一个一个邮戳按顺序分析。首先,将取一枚邮戳的路径分为四种:

  • 上行 \(\rightarrow\) 邮戳台 \(\rightarrow\) 上行 简称路径 \((U,V)\)
  • 上行 \(\rightarrow\) 邮戳台 \(\rightarrow\) 下行 简称路径 \((U,E)\)
  • 下行 \(\rightarrow\) 邮戳台 \(\rightarrow\) 下行 简称路径 \((D,E)\)
  • 下行 \(\rightarrow\) 邮戳台 \(\rightarrow\) 上行 简称路径 \((D,V)\)

取一枚邮戳也就这四种路径。

但我们发现,路径 \((D,V)\) 的出现前提是有路径 \((U,E)\) 在前面出现过,也就是说到任意一个点路径 \((U,E)\) 的条数总是多余路径 \((D,V)\) 。也是说,我们可以将 \((U,E)\) 的条数减 \((D,V)\) 的条数当 \(\text{dp}\) 的第二维,也就是还未抵消的 \((U,E)\) 路径。另外 \((D,V)\) 路径出现的条件为至少有一个还未抵消的 \((U,E)\) 路径。

那么转移就是上述的四种,一个 \(O(n^3)\) 的暴力很快就能出来了

chk_min(dp[i][j],dp[i-1][j]+u+v);
if(j>0)chk_min(dp[i][j],dp[i-1][j]+d+e);
FOR(k,1,j)chk_min(dp[i][j],dp[i-1][j-k]+(d+v)*k);
FOR(k,1,n-j)chk_min(dp[i][j],dp[i-1][j+k]+(u+e)*k);
dp[i][j]+=(ll)T*(2*j+1);    //计算j个(D,V)路径的贡献 

不难发现后面两维可以直接前后缀优化,或者背包转移,复杂度就优化至 \(O(n^2)\) 了。

代码

#include<bits/stdc++.h>
#define FOR(i,x,y) for(int i=(x),i##END=(y);i<=i##END;++i)
#define DOR(i,x,y) for(int i=(x),i##END=(y);i>=i##END;--i)
using namespace std;
template<typename T,typename _T>inline bool chk_min(T &x,const _T y){return y<x?x=y,1:0;}
template<typename T,typename _T>inline bool chk_max(T &x,const _T y){return x<y?x=y,1:0;}
typedef long long ll;
const int N=3005;
ll dp[N][N],f[N],g[N];
int n,T;int main()
{scanf("%d%d",&n,&T);memset(dp,0x3f,sizeof(dp));dp[0][0]=0;FOR(i,1,n){int u,v,d,e;scanf("%d%d%d%d",&u,&v,&d,&e);FOR(j,0,n)f[j]=g[j]=dp[i-1][j];FOR(j,1,n)chk_min(f[j],f[j-1]+(d+v));DOR(j,n-1,0)chk_min(g[j],g[j+1]+(u+e));FOR(j,0,n){chk_min(dp[i][j],dp[i-1][j]+u+v);if(j>0)chk_min(dp[i][j],dp[i-1][j]+d+e);
//          FOR(k,1,j)chk_min(dp[i][j],dp[i-1][j-k]+(d+v)*k);
//          FOR(k,1,n-j)chk_min(dp[i][j],dp[i-1][j+k]+(u+e)*k);if(j>0)chk_min(dp[i][j],f[j-1]+(d+v));if(j<n)chk_min(dp[i][j],g[j+1]+(u+e));dp[i][j]+=(ll)T*(2*j);}}printf("%lld\n",dp[n][0]+(n+1)*T);return 0;
}

转载于:https://www.cnblogs.com/Paulliant/p/10256813.html

JOISC 2014 邮戳拉力赛(基础DP)相关推荐

  1. bzoj4244: 邮戳拉力赛 dp

    Description IOI铁路是由N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+1. 这条路线上行驶的电车分为上行电车和下行电车两种,上行电车沿编号增大方向行驶 ...

  2. 【BZOJ4244】邮戳拉力赛 DP

    [BZOJ4244]邮戳拉力赛 Description IOI铁路是由N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+1. 这条路线上行驶的电车分为上行电车和下行电车 ...

  3. [BZOJ 4244] 邮戳拉力赛

    BZOJ传送门 Description IOI铁路是由N+2N+2N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+10...N+10...N+1. 这条路线上行驶的电 ...

  4. [BZOJ4244]邮戳拉力赛

    Description IOI铁路是由N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+1. 这条路线上行驶的电车分为上行电车和下行电车两种,上行电车沿编号增大方向行驶 ...

  5. 2014计算机基础知识,2014年计算机基础知识练习题240_甘肃中公教育

    2014年计算机基础知识练习题240_甘肃中公教育 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 3. 运算精度高电子计算机具有以往计 ...

  6. kuangbin专题十二 基础DP

    kuangbin专题十二 基础DP A - HDU1024 Max Sum Plus Plus B - HDU1029 Ignatius and the Princess IV C - HDU1069 ...

  7. 软件设计师2014上午题基础知识(易错整理)

    软件设计师2014上午题基础知识(易错整理) 2014 上半年 木马程序的客户端运行在攻击者的机器上 海明码检验位计算:有效信息位 + 校验位个数 <= 2^校验位个数 - 1 防火墙工作层次越 ...

  8. poj3666(基础dp+离散化)

    题目链接:http://poj.org/problem?id=3666 Making the Grade Time Limit: 1000MS   Memory Limit: 65536K Total ...

  9. 2014计算机基础知识试题,2014年计算机基础知识试题及答案大全—版.pdf

    2014 年计算机基础知识试题及答案 第一部分 一.单项选择题 1.世界上第一台电子数字计算机取名为 ( ). A.UNIV AC B.EDSAC C.ENIAC D.EDVAC 2.操作系统的作用是 ...

最新文章

  1. spring mvc + mybatis 框架搭建 ( idea + gradle)
  2. exchange online share mailbox senditem
  3. 验证Linux主机是否支持RDMA
  4. linux查看nginx运行状态,如何查看nginx运行状态及相关属性说明
  5. 编写自适应高度的 textarea
  6. python可以开发exe软件吗_python能开发exe软件吗
  7. 苹果WWDC前瞻之iOS 13更新最受关注;微软发布基于区块链的去中心化身份识别系统;小米成立了新集团质量办公室……...
  8. 图论模型迪杰斯特拉算法
  9. maven中ssm框架快速搭建
  10. linux vcenter6.5下载,vCenter 6.0更新至6.5
  11. SSH远程连接:简单的连接
  12. 为什么PHP能够受到大家追捧和喜爱,又为什么饱受嘲讽?
  13. 卷积神经网络(CNN)相关的基础知识
  14. [原创]如何从数据库层面检测两表内容的一致性
  15. 视频号的商业想象空间,在前天更新后,会在以下3个方面
  16. IP数据报格式,IP分片,IP编址,子网掩码
  17. 标准3层神经网络搭建Demo
  18. Java进阶:SpringMVC中使用fileupload报错Error creating bean with name ‘multipartResolver‘
  19. BOBSLEDDING(一道有趣的贪心题 nyoj309)
  20. 项目文档说明前端部分怎么写?写进readme.md文件里面。

热门文章

  1. JSP连接数据库教程(IDEA)
  2. linux moxa 多串口卡_MOXA - PCI Express多串口卡解决方案
  3. 基于用户行为的交易反欺诈探索
  4. 两台笔记本低延时屏幕扩展(双联屏)
  5. 点击展开按钮设计_使您的按钮设计可点击
  6. 全国离线地图矢量数据
  7. flutter中Future.delayed延迟任务
  8. 哈希表之bkdrhash算法解析及扩展
  9. 论文研读 —— 4. You Only Look Once Unified, Real-Time Object Detection (2/3)
  10. Solidity 智能合约入门