洛谷P4009 汽车加油行驶问题】的更多相关文章

P4009 汽车加油行驶问题 题目描述 给定一个\(N×N\)的方形网格,设其左上角为起点◎,坐标(1,1) ,\(X\)轴向右为正,\(Y\)轴向下为正,每个方格边长为1 ,如图所示. 一辆汽车从起点◎出发驶向右下角终点▲,其坐标为\((N,N)\) . 在若干个网格交叉点处,设置了油库,可供汽车在行驶途中加油.汽车在行驶过程中应遵守如下规则: 汽车只能沿网格边行驶,装满油后能行驶\(K\)条网格边.出发时汽车已装满油,在起点与终点处不设油库. 汽车经过一条网格边时,若其\(X\)坐标或\(Y…
题目描述 给定一个 N \times NN×N 的方形网格,设其左上角为起点◎,坐标(1,1)(1,1),XX 轴向右为正, YY 轴向下为正,每个方格边长为 11 ,如图所示. 一辆汽车从起点◎出发驶向右下角终点▲,其坐标为 (N,N)(N,N). 在若干个网格交叉点处,设置了油库,可供汽车在行驶途中加油.汽车在行驶过程中应遵守如下规则: 汽车只能沿网格边行驶,装满油后能行驶 KK 条网格边.出发时汽车已装满油,在起点与终点处不设油库. 汽车经过一条网格边时,若其 XX 坐标或 YY 坐标减小…
题目:https://www.luogu.org/problemnew/show/P4009 网络流24题中不是网络流的最短路题: 把每个点拆成各个油量上的点,根据要求连边即可: 注意:点数最大为100*100*11,因为虽然k<=10,但还有k=0的状态!(竟然因为边界调了一晚上) 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<queue> using nam…
传送门 说好的网络流24题呢……上次是状压dp,这次怎么又最短路了…… 不过倒是用这题好好学了一下分层图最短路 把每一个位置$(x,y)$,油量剩余$k$表示为一个状态,然后转化成一个$n$进制数,这样每一个状态都可以唯一表示.能互相转移的状态之间连有向边,然后跑一个最短路就行了 具体细节看代码好了……细节太多说不清楚…… ps:据说还可以用这个思想跑费用流,我估摸着大概是建源$S$和汇$T$,$S$向起点连,终点向$T$连,容量$inf$,费用$0$,然后各个状态之间的容量都是$1$,费用就是…
分层图,建k层,设(i,j,0)为点(i,j)的满油状态,全图的流量都是1,因为重复走到一个点没有意义.如果当前点是加油站,那么它向它上左的点连费用为a的边,向下右连费用为a+b的边: 否则,这个点的所有层向零层连费用为a+c的边表示建加油站和加油,其他的当前点是加油站的情况连即可,但是不用加a.然后s向(1,1,0)连,(n,n)的所有层向t连,最后跑最小费用最大流. #include<iostream> #include<cstdio> #include<cmath>…
P4009 汽车加油行驶问题 最短路 清一色的spfa....送上一个堆优化Dijkstra吧(貌似代码还挺短) 顺便说一句,堆优化Dj跑分层图灰常好写 #include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; template <typename T> inline T min(T &a,T &b) {re…
题目链接 \(Click\) \(Here\) 分层图..好长时间没写差点要忘了\(hhhhh\),其实思路还是很明了的. 注意需要强制消费. #include <bits/stdc++.h> using namespace std; const int N = 110010; const int M = 550010; #define int long long int n, k, A, B, C, have, val[110][110]; int node (int x, int y, i…
[题解][网络流24题]汽车加油行驶问题 [P4009] [Loj6223] 传送门:汽车加油行驶问题 \([P4009]\) \([Loj6223]\) [题目描述] 给出一个 \(N \times N\) 的方形网格,设\((1,1)\)为起点,\((N,N)\) 为终点,\(X\) 轴向右为正, \(Y\) 轴向下为正. 某些地方设有油库,可供汽车加油.汽车行驶应遵守如下规则: \((1).\) 汽车装满油后能行驶 \(K\) 次,每次行驶距离为 \(1\).出发时汽车为满油状态,在起点与…
[题意] 问题描述:给定一个 N*N 的方形网格,设其左上角为起点◎, 坐标为( 1, 1), X 轴向右为正, Y轴向下为正, 每个方格边长为 1, 如图所示. 一辆汽车从起点◎出发驶向右下角终点▲,其坐标为( N, N). 在若干个网格交叉点处, 设置了油库, 可供汽车在行驶途中加油. 汽车在行驶过程中应遵守如下规则:(1)汽车只能沿网格边行驶,装满油后能行驶 K 条网格边.出发时汽车已装满油, 在起点与终点处不设油库.(2)汽车经过一条网格边时, 若其 X 坐标或 Y 坐标减小, 则应付费…
题目描述 给定一个 \(\text{N}\times \text{N}\) 的方形网格,设其左上角为起点◎,坐标为 \(\text{(1,1)}\) ,\(\text{X}\) 轴向右为正, \(\text{Y}\) 轴向下为正,每个方格边长为 1 ,如图所示. 一辆汽车从起点◎出发驶向右下角终点▲,其坐标为 \((\text{N},\text{N})\) . 在若干个网格交叉点处,设置了油库,可供汽车在行驶途中加油.汽车在行驶过程中应遵守如下规则: 汽车只能沿网格边行驶,装满油后能行驶 \(\…