[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. python 之 列表与字典

    1.4 列表与字典 列表与字典,这两种类型,都是各种类型的集合,以列表为例,如果列表中包含列表,就形成嵌套. 这两种类型几乎是所有python脚本的主要工作组件 . 这种结构信息是可变的可修改的.不像 ...

  2. 该问题是需要导包!!!需要pom中添加依赖The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application

    <!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl --><depend ...

  3. MVC异常处理(异常捕获)

    1.cshtml页面异常 2.Controller异常 3.路由参数异常. 4.页面不存在404 页面不存在404,可以通过配置config来处理 <customErrors mode=&quo ...

  4. JS高级程序设计3

    PS:有一小部分写在了 JS 2017了 JSON <!DOCTYPE html> <html lang="en"> <head> <me ...

  5. springboot学习(一):创建项目

    package com.glory.demo.Controller; import org.springframework.stereotype.Controller; import org.spri ...

  6. Typescript知识梳理

    概述 TypeScript简称TS,具有类型系统,且是JavaScript的超集. 它可以编译成普通的JavaScript代码.TypeScript支持任意浏览器,任意环境,任意系统并且是开源的.通过 ...

  7. weex用阿里矢量图

    首先这段代码来自 zwwill在github上的 weex网易严选项目 他是在utils下封装了一个方法 let utilFunc = { initIconFont () { let domModul ...

  8. A - Exposition CodeForces - 6E

    题目链接:https://vjudge.net/contest/202699#problem/A 题意 给一个n个元素的序列,从中挑出最长的子序列,要求子序列中元素差的最大值不超过k.问有几个最长子序 ...

  9. centos中less翻页查询的用法

    用法实例: cat 21342.log | less

  10. PHP算法排序之快速排序、冒泡排序、选择排序、插入排序性能对比

    <?php //冒泡排序 //原理:从倒数第一个数开始,相邻的两个数比较,后面比前面的小,则交换位置,一直到比较第一个数之后则最小的会排在第一位,以此类推 function bubble_sor ...