[NOI2019]回家路线

题目大意:

有\(n\)个站点,\(m\)趟车,每趟车在\(p_i\)时从\(x_i\)出发,\(q_i\)时到达\(y_i\)。

若小猫共乘坐了\(k\)班列车,依次乘坐的列车编号可用序列\(s_{1\sim k}\)表示。该方案被称作一条可行的回家路线,当且仅当它满足下列两个条件:

  1. \(x_{s_1}=1,y_{s_k}=n\);
  2. 对于所有\(j(1\le j<k)\)满足\(y_{s_j}=x_{s_{j+1}}\)且\(q_{s_j}\le p_{s_{j+1}}\)。

对于该回家路线,小猫得到的烦躁值将为:

\[q_{s_k}+(A\cdot p_{s_1}^2+B\cdot p_{s_1}+C)+\sum_{j=1}^{k-1}(A(p_{s_{j+1}}-q_{s_j})^2+B(p_{s_{j+1}}+q_{s_j})+C)
\]

小猫想让自己的烦躁值尽量小,请你帮它求出所有可行的回家路线中,能得到的最小的烦躁值。题目保证至少存在一条可行的回家路线。

\(n\le 10^5,m\le2\times10^5,1\le p_i<q_i\le 1000\)

思路:

将所有车按照\(p_i\)排序,枚举每趟车,枚举到达\(p_i\)的时间。

\(f[i][j]+i\)表示时间\(j\)到达\(i\)车站最小烦躁值。

时间复杂度\(\mathcal O(m\cdot q)\)。

源代码:

#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=1e5+1,M=2e5+1,T=1e3+1;
int n,m,A,B,C,f[N][T];
struct Edge {
int u,v,p,q;
bool operator < (const Edge &rhs) const {
return p<rhs.p;
}
};
Edge e[M];
inline int calc(const int &x) {
return A*x*x+B*x+C;
}
inline void upd(int &a,const int &b) {
a=std::min(a,b);
}
int main() {
freopen("route.in","r",stdin);
freopen("route.out","w",stdout);
n=getint(),m=getint();
A=getint(),B=getint(),C=getint();
for(register int i=1;i<=m;i++) {
const int u=getint(),v=getint(),p=getint(),q=getint();
e[i]=(Edge){u,v,p,q};
}
for(register int i=1;i<=n;i++) {
std::fill(&f[i][0],&f[i][T],INT_MAX);
}
f[1][0]=0;
std::sort(&e[1],&e[m]+1);
for(register int i=1;i<=m;i++) {
for(register int j=0;j<=e[i].p;j++) {
if(f[e[i].u][j]==INT_MAX) continue;
upd(f[e[i].v][e[i].q],f[e[i].u][j]+calc(e[i].p-j));
}
}
int ans=INT_MAX;
for(register int i=0;i<T;i++) {
if(f[n][i]!=INT_MAX) upd(ans,f[n][i]+i);
}
printf("%d\n",ans);
return 0;
}

[NOI2019]回家路线的更多相关文章

  1. NOI2019 回家路线 DP

    「NOI2019」回家路线 链接 loj 思路 f[i][j]第i个点,时间为j,暴力转移 复杂度O(m*t),好像正解是斜率优化,出题人太不小心了233 代码 #include <bits/s ...

  2. P5468 [NOI2019]回家路线 斜率优化 dp

    LINK:回家路线 (文化课 oi 双爆炸 对 没学上的就是我.(我错了不该这么丧的. 不过还能苟住一段时间.当然是去打NOI了 这道题去年同步赛的时候做过.不过这里再次提醒自己要认真仔细的看题目 不 ...

  3. 【题解】Luogu P5468 [NOI2019]回家路线

    原题传送门 前置芝士:斜率优化 不会的可以去杜神博客学 这道题我考场上只会拆点跑最短路的70pts做法 后来回家后发现错误的爆搜都能拿满分(刀片) 还有很多人\(O(mt)\)过的,还是要坚持写正解好 ...

  4. [NOI2019]回家路线(最短路,斜率优化)

    终于把这鬼玩意弄完了-- 为什么写的这么丑-- (顺便吐槽 routesea) 最短路的状态很显然:\(f[i]\) 表示从第 \(i\) 条线下来的最小代价. 首先明显要把那个式子拆开.直觉告诉我们 ...

  5. 【斜率优化】【P5468】 [NOI2019]回家路线

    Description 给定 \(n\) 点,这 \(n\) 个点由 \(m\) 班列车穿插连结.对于第 \(i\) 班列车,会在 \(p_i\) 时刻从 \(x_i\) 站点出发开向 \(y_i\) ...

  6. Luogu P5468 [NOI2019]回家路线 (斜率优化、DP)

    题目链接: (luogu) https://www.luogu.org/problemnew/show/P5468 题解: 爆long long毁一生 我太菜了,这题这么简单考场上居然没想到正解-- ...

  7. luogu 5468 [NOI2019]回家路线 最短路/暴力

    想写一个 70 pts 算法,结果数据水,直接就切了 最短路: // luogu-judger-enable-o2 #include<bits/stdc++.h> using namesp ...

  8. P5468 [NOI2019]回家路线

    传送门 看题目一眼斜率优化,然后写半天调不出来 结果错误的 $dfs$ 有 $95$ 分?暴力 $SPFA$ 就 $AC$ 了? 讲讲正解: 显然是斜率优化的式子: 先不考虑 $q_{s_k}$ 的贡 ...

  9. LOJ 3156: 「NOI2019」回家路线

    题目传送门:LOJ #3156. 题意简述: 有一张 \(n\) 个点 \(m\) 条边的有向图,边有两个权值 \(p_i\) 和 \(q_i\)(\(p_i<q_i\))表示若 \(p_i\) ...

随机推荐

  1. Java爬虫https网页内容报错SSLHandshakeException信任(忽略)所有SSL证书

    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building f ...

  2. windows平台上编译mongdb-cxx-driver

    编译方法见以下链接,写的非常详细 http://www.pianshen.com/article/9722211716/ 我的编译环境和编译工具如下: 环境:win7或者win10,都试过,没有任何区 ...

  3. MongoDB和Java(5):Spring Data整合MongoDB(注解配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  4. tf.tile()函数的用法

    y = tf.tile(tf.range(2, dtype=tf.int32)[:, tf.newaxis], [2,3]) # tf.tile(input,[a,b]) 输入数据,按照对应维度将矩阵 ...

  5. Matlab迭代器模式

    迭代器(Iterator)模式,又叫做游标(Cursor)模式.提供一种方法访问一个容器(container)或者聚集(Aggregator)对象中各个元素,而又不需暴露该对象的内部细节.在采用不同的 ...

  6. maven设定项目编码

    今天在DOS下执行mvn compile命令时报错说缺少必要符号,事实上根本就没有缺少,但何以如此呢,为啥eclipse在编译时就没有这问题呢? 原因是编码的问题造成的! eclipse在编译的使用使 ...

  7. 【DATAGUARD】物理dg在主库丢失归档文件的情况下的恢复(七)

    [DATAGUARD]物理dg在主库丢失归档文件的情况下的恢复(七) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到 ...

  8. springmvc跨域问题的解决

    如果只想对某个方法开启跨域设置: controller上添加注解: @CrossOrigin(maxAge = 3600) 在特定的方法上添加注解: @CrossOrigin("*" ...

  9. day 19 作业

    今日作业 1.什么是对象?什么是类? 对象是特征与技能的结合体,类是一系列对象相同的特征与技能的结合体 2.绑定方法的有什么特点 由对象来调用称之为对象的绑定方法,不同的对象调用该绑定方法,则会将不同 ...

  10. MySQL-CentOS7上安装Mysql5.7

    #安装 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm .noarch.rpm yum instal ...