[loj3156]回家路线


- 1 #include<bits/stdc++.h>
- 2 using namespace std;
- 3 #define N 200005
- 4 #define k(i) -2*A*e[i].q
- 5 #define b(i) (dp[i]+A*e[i].q*e[i].q-B*e[i].q)
- 6 struct ji{
- 7 int x,y,p,q;
- 8 }e[N];
- 9 vector<int>v[N];
- 10 set<pair<int,int> >s;
- 11 int n,m,A,B,C,ans,sz[N],dp[N];
- 12 bool cmp(ji x,ji y){
- 13 return x.p<y.p;
- 14 }
- 15 double point(int x,int y){
- 16 if (k(x)==k(y)){
- 17 if (b(x)==b(y))return 0;
- 18 if (b(x)<b(y))return 0x3f3f3f3f;
- 19 return -0x3f3f3f3f;
- 20 }
- 21 return 1.0*(b(y)-b(x))/(k(x)-k(y));
- 22 }
- 23 void add(int x){
- 24 int k=e[x].y;
- 25 while ((sz[k]>1)&&(point(v[k][sz[k]-2],v[k][sz[k]-1])>point(v[k][sz[k]-1],x))){
- 26 v[k].erase(--v[k].end());
- 27 sz[k]--;
- 28 }
- 29 v[k].push_back(x);
- 30 sz[k]++;
- 31 }
- 32 int query(int x){
- 33 int k=e[x].x;
- 34 if (!sz[k])return 0x3f3f3f3f;
- 35 while ((sz[k]>1)&&(point(v[k][0],v[k][1])<e[x].p)){
- 36 v[k].erase(v[k].begin());
- 37 sz[k]--;
- 38 }
- 39 return k(v[k][0])*e[x].p+b(v[k][0]);
- 40 }
- 41 int main(){
- 42 freopen("route.in","r",stdin);
- 43 freopen("route.out","w",stdout);
- 44 scanf("%d%d%d%d%d",&n,&m,&A,&B,&C);
- 45 for(int i=1;i<=m;i++)scanf("%d%d%d%d",&e[i].x,&e[i].y,&e[i].p,&e[i].q);
- 46 sort(e+1,e+m+1,cmp);
- 47 e[0].y=1;
- 48 s.insert(make_pair(0,0));
- 49 for(int i=1;i<=m;i++){
- 50 while ((s.size())&&((*s.begin()).first<=e[i].p)){
- 51 add((*s.begin()).second);
- 52 s.erase(s.begin());
- 53 }
- 54 dp[i]=query(i)+A*e[i].p*e[i].p+B*e[i].p+C;
- 55 s.insert(make_pair(e[i].q,i));
- 56 }
- 57 ans=0x3f3f3f3f;
- 58 for(int i=1;i<=m;i++)
- 59 if (e[i].y==n)ans=min(ans,dp[i]+e[i].q);
- 60 printf("%d",ans);
- 61 return 0;
- 62 }
[loj3156]回家路线的更多相关文章
- NOI2019 回家路线 DP
「NOI2019」回家路线 链接 loj 思路 f[i][j]第i个点,时间为j,暴力转移 复杂度O(m*t),好像正解是斜率优化,出题人太不小心了233 代码 #include <bits/s ...
- [NOI2019]回家路线
[NOI2019]回家路线 题目大意: 有\(n\)个站点,\(m\)趟车,每趟车在\(p_i\)时从\(x_i\)出发,\(q_i\)时到达\(y_i\). 若小猫共乘坐了\(k\)班列车,依次乘坐 ...
- P5468 [NOI2019]回家路线 斜率优化 dp
LINK:回家路线 (文化课 oi 双爆炸 对 没学上的就是我.(我错了不该这么丧的. 不过还能苟住一段时间.当然是去打NOI了 这道题去年同步赛的时候做过.不过这里再次提醒自己要认真仔细的看题目 不 ...
- 【LOJ3156】「NOI2019」回家路线
[题目链接] [点击打开链接] [题目概括] 现在有\(n\)个站点,\(m\)条火车路线,每一条货车路线都有一个起点站点.终点站点.开始时间和到站时间. 对于一直在起点\(1\)的人,终点是\(n\ ...
- LOJ 3156: 「NOI2019」回家路线
题目传送门:LOJ #3156. 题意简述: 有一张 \(n\) 个点 \(m\) 条边的有向图,边有两个权值 \(p_i\) 和 \(q_i\)(\(p_i<q_i\))表示若 \(p_i\) ...
- 【题解】Luogu P5468 [NOI2019]回家路线
原题传送门 前置芝士:斜率优化 不会的可以去杜神博客学 这道题我考场上只会拆点跑最短路的70pts做法 后来回家后发现错误的爆搜都能拿满分(刀片) 还有很多人\(O(mt)\)过的,还是要坚持写正解好 ...
- [NOI2019]回家路线(最短路,斜率优化)
终于把这鬼玩意弄完了-- 为什么写的这么丑-- (顺便吐槽 routesea) 最短路的状态很显然:\(f[i]\) 表示从第 \(i\) 条线下来的最小代价. 首先明显要把那个式子拆开.直觉告诉我们 ...
- 【斜率优化】【P5468】 [NOI2019]回家路线
Description 给定 \(n\) 点,这 \(n\) 个点由 \(m\) 班列车穿插连结.对于第 \(i\) 班列车,会在 \(p_i\) 时刻从 \(x_i\) 站点出发开向 \(y_i\) ...
- Luogu P5468 [NOI2019]回家路线 (斜率优化、DP)
题目链接: (luogu) https://www.luogu.org/problemnew/show/P5468 题解: 爆long long毁一生 我太菜了,这题这么简单考场上居然没想到正解-- ...
随机推荐
- 解决VSCODE"因为在此系统上禁止运行脚本"报错
在VSCODE中使用yarn,结果报错: 找了下原因,是因为PowerShell执行策略的问题. 解决方法: 以管理员身份运行vscode; 执行:get-ExecutionPolicy,显示R ...
- NOIP&CSP 考前 Dev-cpp 的选项问题和考试心态
(进入考场后您将获得一个崭新的 \(Dev-cpp\),没有中文,没有编译选项,没有缺省源:我还将获得一个崭新的脑子,没有心态,没有智商,没有调试能力--) 中文 \[Step1 \] \[Step2 ...
- (googlechrome)未知错误导致安装失败,如果googlechrome....
https://jingyan.baidu.com/article/ea24bc39ffb699da63b33147.html#5827690-tsina-1-63512-fe183374908e7 ...
- AT3950 [AGC022E] Median Replace
题目传送门 Description 有一个长度为 \(n\) 的 \(01\) 串,里面有一些还没有确定,我们标记为 ? .可以进行若干次操作,每次操作可以把三个相邻的数替换成它们的中位数.问有多少种 ...
- 洛谷3648 [APIO2014]序列分割(斜率优化+dp)
首先对于这个题目. qwq 存在一个性质就是,最终的答案只跟你的分割的位置有关,而和顺序无关. 举一个小栗子 \(a\ b\ c\) 将这个东西分成两块. 如果我们先分割\(ab\)之间的话,\(an ...
- bzoj1067——SCOI2007降雨量(线段树,细节题)
题目描述 我们常常会说这样的话:"X年是自Y年以来降雨量最多的".它的含义是X年的降雨量不超过Y年,且对于任意\(Y<Z<X\),Z年的降雨量严格小于X年.例如2002 ...
- 串的模式匹配 BF算法和KMP算法
设有主串s和子串t,子串t的定位就是要在主串中找到一个与子串t相等的子串.通常把主串s称为目标串,把子串t称为模式串,因此定位也称为模式匹配. 模式匹配成功是指在目标串s中找到一个模式串t: 不成功则 ...
- 微信小程序的实现原理
一.背景 网页开发,渲染线程和脚本是互斥的,这也是为什么长时间的脚本运行可能会导致页面失去响应的原因,本质就是我们常说的 JS 是单线程的 而在小程序中,选择了 Hybrid 的渲染方式,将视图层和逻 ...
- 字符串与模式匹配算法(一):BF算法
一.BF算法的基本思想 BF(Brute Force)算法是模式匹配中最简单.最直观的算法.该算法最基本的思想是从主串的第 start 个字符起和模式P(要检索的子串)的第1个字符比较,如果相等,则逐 ...
- 嵌入式开发板nfs挂载
板子要开始调试了,第一个头大的问题就是调试过程中更新的文件怎么更新到板子上,以前用sd卡拷贝来来回回太浪费时间了,adb也需要接线各种连接操作. 现在板子有wifi可用,是时候把nfs共享搭起来了. ...