题意

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;
}

JOISC 2014 邮戳拉力赛(基础DP)的更多相关文章

  1. 【bzoj4244】邮戳拉力赛 背包dp

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

  2. 【BZOJ4244】邮戳拉力赛 DP

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

  3. 基础dp

    队友的建议,让我去学一学kuangbin的基础dp,在这里小小的整理总结一下吧. 首先我感觉自己还远远不够称为一个dp选手,一是这些题目还远不够,二是定义状态的经验不足.不过这些题目让我在一定程度上加 ...

  4. 基础DP(初级版)

    本文主要内容为基础DP,内容来源为<算法导论>,总结不易,转载请注明出处. 后续会更新出kuanbin关于基础DP的题目...... 动态规划: 动态规划用于子问题重叠的情况,即不同的子问 ...

  5. [BZOJ4244]邮戳拉力赛

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

  6. hdu 5586 Sum 基础dp

    Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Desc ...

  7. hdu 4055 Number String (基础dp)

    Number String Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  8. 训练指南 UVA - 10917(最短路Dijkstra + 基础DP)

    layout: post title: 训练指南 UVA - 10917(最短路Dijkstra + 基础DP) author: "luowentaoaa" catalog: tr ...

  9. 训练指南 UVA - 11324(双连通分量 + 缩点+ 基础DP)

    layout: post title: 训练指南 UVA - 11324(双连通分量 + 缩点+ 基础DP) author: "luowentaoaa" catalog: true ...

随机推荐

  1. RabbitMQ生产者消费者

    package com.ra.car.rabbitMQ; import java.io.IOException; import java.util.HashMap; import java.util. ...

  2. win10 Xshell5连ubuntu服务器

    相当于ubuntu做服务器,win10远程访问,同一局域网下,完全参考度娘 教你怎么使用xshell远程连接linux服务器 ubuntu系统ifconfig -a查看ip地址,添加到主机那里,连接时 ...

  3. SLAM学习笔记

    ORB_SLAM2源码: 获得旋转矩阵,来自这里:http://www.cnblogs.com/shang-slam/p/6406584.html 关于Covisibility图来自:http://b ...

  4. K-Means算法的Java实现

    K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则.K-means算法以欧式距离作为相似 ...

  5. tensorflow学习5----GAN模型初探

    生成模型: 通过观测学习样本和标签的联合概率分布P(X,Y)进行训练,训练好的模型能够生成符合样本分布的新数据,在无监督学习方面,生成式模型能够捕获数据的高阶相关性,通过学习真实数据的本质特征,刻画样 ...

  6. javascript常用积累

    一.JS动画与动作不一致解决: if(!$( "#handle").is(":animated")){ //判断元素是否处于动画状态 } 二.停止事件冒泡 ev ...

  7. js相关(easyUI),触发器,ant,jbpm,hibernate二级缓存ehcache,Javamail,Lucene,jqplot,WebService,regex,struts2,oracle表空间

    *********************************************js相关********************************************* // 在指 ...

  8. 一篇关于蓝牙SDP和L2CAP协议的文章

    SDP地址:http://www.cnblogs.com/strive-forever/archive/2011/11/04/2236640.html L2CAP地址:http://www.cnblo ...

  9. Autel MaxiSYS PRO MS908P Diagnostic System with Wireless VCI J-2534

    You’re a professional mechanic, an enthusiast or and mechanic shop owner? Then you are here on the r ...

  10. The Little Prince-12/17

    The Little Prince-12/17 今年四六级吐槽,说到做到!!!文思泉涌了兄弟们! “这就是你自己的错了,我本来并不想给你带来任何痛苦的,可你却要我驯服你……可你要哭了,可你什么好处也没 ...