[JOISC2014]スタンプラリー

题目大意:

有\(n(n\le3000)\)个车站,另有一个起点站和终点站,所有车站排成一条链,相邻两个车站之间的距离为\(t\)。每个车站都有一个上行站台、一个下行站台。除起点站和终点站外,每个站点都有一个超市,超市在上行站台和下行站台之间。对于站点\(i\),从上行站台到超市的时间为\(u_i\),从超市到上行站台的时间为\(v_i\),从下行站台到超市的距离为\(d_i\),从超市到下行站台的距离为\(e_i\)。问从起点站出发,经过所有超市到达终点站的最短路。

思路:

\(f[i][j]\)表示前\(i\)个车站,下行转上行次数-上行转下行的次数为\(j\)的最短路。

考虑在一个站台是何种情况,分类讨论并相应转移即可。

时间复杂度\(\mathcal O(n^2)\)。

源代码:

#include<cstdio>
#include<cctype>
#include<climits>
#include<algorithm>
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'0';
while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
return x;
}
const int N=3001;
int f[N][N];
inline void upd(int &a,const int &b) {
a=std::min(a,b);
}
int main() {
const int n=getint(),t=getint();
f[0][0]=INT_MIN;
for(register int i=1;i<=n;i++) {
const int u=getint(),v=getint(),d=getint(),e=getint();
for(register int j=1;j<=n;j++) f[i-1][j]+=t*j*2;
for(register int j=0;j<=n;j++) {
upd(f[i][j],f[i-1][j]+u+v);//上行->邮戳->上行
if(j!=0) upd(f[i][j],f[i-1][j]+d+e);//下行->邮戳->下行
if(j!=n) upd(f[i][j],f[i-1][j+1]+u+e);//上行->邮戳->下行
if(j!=0) upd(f[i][j],f[i-1][j-1]+d+v);//下行->邮戳->上行
}
for(register int j=n-1;j>=0;j--) {
upd(f[i][j],f[i][j+1]+u+e);//上行->邮戳->下行
}
for(register int j=1;j<=n;j++) {
upd(f[i][j],f[i][j-1]+d+v);//下行->邮戳->上行
}
}
printf("%d\n",f[n][0]+t*(n+1)-INT_MIN);
return 0;
}

[JOISC2014]スタンプラリー的更多相关文章

  1. [JOISC2014]友だちをつくろう

    [JOISC2014]友だちをつくろう 题目大意: 一个\(n(n\le10^5)\)个点,\(m(m\le2\times10^5)\)条边的有向图.对于两个点\(i,j\),如果存在一个点\(k\) ...

  2. [JOISC2014]ストラップ

    [JOISC2014]ストラップ 题目大意: 有\(n(n\le2000)\)个挂饰,每个挂饰有一个喜悦值\(b_i(|b_i|\le10^6)\),下面有\(b_i(b_i\le10^6)\)个挂钩 ...

  3. [JOISC2014]電圧

    [JOISC2014]電圧 题目大意: 一个\(n(n\le10^5)\)个点,\(m(m\le2\times10^5)\)条边的无向图.要在图中找到一条边,满足去掉这条边后,剩下的图是一个二分图,且 ...

  4. [JOISC2014]バス通学

    [JOISC2014]バス通学 题目大意: 有\(n(n\le10^5)\)个点和\(m(m\le3\times10^5)\)条交通线路.第\(i\)条交通线路可以让你在时间\(x_i\)从\(a_i ...

  5. [JOISC2014]たのしい家庭菜園

    [JOISC2014]たのしい家庭菜園 题目大意: 给定一个长度为\(n(n\le3\times10^5)\)的序列\(A(A_i\le10^9)\).只能交换相邻两个数,问最少需要几步可以将它变成一 ...

  6. [JOISC2014]歴史の研究/[BZOJ4241]历史研究

    [JOISC2014]歴史の研究/[BZOJ4241]历史研究 题目大意: 一个长度为\(n(n\le10^5)\)的数列\(A(A_i\le10^9)\),定义一个元素对一个区间\([l,r]\)的 ...

  7. [BZOJ4237]稻草人/[JOISC2014]かかし

    [BZOJ4237]稻草人/[JOISC2014]かかし 题目大意: 平面上\(n(n\le2\times10^5)\)个点,若一个矩形各边与坐标轴平行,左下角和右上角都在\(n\)个点之中,且内部不 ...

  8. P4138 [JOISC2014]挂饰

    P4138 [JOISC2014]挂饰 ◦          N个装在手机上的挂饰.挂饰附有可以挂其他挂件的挂钩.每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上.直接挂在手机上的挂件最多有1个. ...

  9. [JOISC2014]挂饰

    嘟嘟嘟 这题其实还是比较好想的,就是有一个小坑点. 首先钩子多的排在前面,然后就是dp了. dp方程就是\(dp[i][j]\)表示到了第\(i\)建物品,还剩\(j\)个挂钩的最大喜悦值.转移就很显 ...

随机推荐

  1. Java在线备份和还原MySQL数据库。

    2018年6月29日14:00:48 阅读数:1534 今天整了整整一整天,终于使用Java在线备份和还原MySQL数据库了,哎,备份倒是很快,就是在还原的时候遇到了一个问题,也不报错,结果将sql语 ...

  2. 如何上传项目到Git

    1.首先下载Git,然后安装 我用的版本是Git-2.15.0-64-bit 2.在你的Git上创建一个新的Progect 创建完成后,会出现这样的窗口,红框圈出来的就是你的Git项目路径 3.在本地 ...

  3. IDEA拷贝操作

    另外一种添加方式

  4. 在 Python 中使用 JSON

    在 Python 中使用 JSON 本教程将会教我们如何使用 Python 编程语言编码和解码 JSON.让我们先来准备环境以便针对 JSON 进行 Python 编程. 环境 在我们使用 Pytho ...

  5. SRS流媒体服务器搭建+ffmpeg推流VLC取流观看

    一.编译SRS https://github.com/winlinvip/simple-rtmp-server 目前有1.0-release.2.0.3.0等版本 2.0官方文档地址:https:// ...

  6. Hive启动失败

    启动hive报如下错误 [root@node01 conf]# hive19/03/31 09:57:31 WARN conf.HiveConf: HiveConf of name hive.meta ...

  7. k8s中的api server的ca证书,可以和front proxy ca证书一样么?

    答案是: 绝对不可以! 因为请求先验证的是 --requestheader-client-ca-file CA 然后才是--client-ca-file. . 那获取的用户名就会通不过了. 所以会影响 ...

  8. java.lang.NullPointerException at java.lang.ProcessBuilder.start(Unknown Source) at org.apache.hadoop.util.Shell.runCommand(Shell.java:482)

    1:问题出现的原因,部署好的hadoop-2.6.4进行window10操作hadoop api出现的错误,具体错误是我向hdfs上传文件,还好点,之前解决过,这里不叙述,这里说一下从hdfs下载文件 ...

  9. 【Oracle】Linux7安装11g 86%报错:Error in invoking target 'agent nmhs' of makefile

    http://blog.itpub.net/29475508/viewspace-2120836/

  10. jQuery分步步骤

    插件描述:jQuery上一步.下一步,分步步骤,兼容性如下: 使用方法 1.引入样式和脚本 <link rel="stylesheet" type="text/cs ...