Gravatar
金牌教师王艳芳
积分:217
提交:83 / 459
**状态定义:**
设 \( 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
Gravatar
6b6b6b6
积分:78
提交:53 / 64
#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;

Gravatar
GS53
积分:48
提交:17 / 66
不要相信int,也不要相信0x3f

Gravatar
王和谐
积分:67
提交:44 / 175
三年oi一场空,不开long long 见祖宗

题目 3928 [CSP 2023J]公路
2023-10-30 21:20:18