|
|
**状态定义:**
设 \( dp[i] \) 表示到达站点 \( i \) 时的最小总加油花费。 **转移方程:** \[ dp[i] = dp[i-1] + \max\left(0,\ \left\lceil \frac{v_{i-1} - r_{i-1}}{d} \right\rceil \right) \cdot \min_{1 \leq j < i} a_j \] 其中 \( r_{i-1} \) 为到达站点 \( i-1 \) 后剩余的可行驶公里数,且 \( r_i = r_{i-1} + \left\lceil \frac{v_{i-1} - r_{i-1}}{d} \right\rceil \cdot d - v_{i-1} \)。
题目 3928 [CSP 2023J]公路
2025-10-09 23:53:49
|
|
|
#include<cstdio>
#include<iostream> using namespace std; long long n,d,v[114514],a[114514],cheap=11451419,fuel=0,money=0; int main(){ freopen("road.in","r",stdin); freopen("road.out","w",stdout); cin>>n>>d; for(int q=1;q<n;++q){ cin>>v[q]; } for(int w=1;w<=n;++w){ cin>>a[w]; } for(int e=1;e<n;++e){ if(a[e]<cheap) cheap=a[e]; while(fuel<v[e]){ fuel+=d; money+=cheap; } fuel-=v[e]; } cout<<money; |
|
|
不要相信int,也不要相信0x3f
|
|
|
三年oi一场空,不开long long 见祖宗
题目 3928 [CSP 2023J]公路
2023-10-30 21:20:18
|