1 条题解
-
0
自动搬运
来自洛谷,原作者为

Lovely_Elaina
嘟嘟嘟搬运于
2025-08-24 22:45:28,当前版本为作者最后更新于2023-03-06 12:55:51,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
妥妥暴力模拟题。
思路
用两个数组表示每台车的重量和每个停车位的收费标准。
用一个数组表示各个车位停着哪辆车,如果没有为 。
用一个队列表示待进的车辆,写一个函数用来更新这个队列,每次输入的时候就更新一下。
入车和出车都写一个函数,暴力就行了。
代码
#include <bits/stdc++.h> using namespace std; const int N = 105; const int M = 2005; int b[N],m,n,a[M]; int tol; // 车的总数 int is_b[N]; long long sum; queue<int > q; // 待入车辆- Zou doesn't like Chen anymore.
/*void print(){ for(int i = 1; i <= n; i++){ cout << is_b[i] << " "; }cout << endl; }*/ void wait(); void enter(int x); void leave(int x); void wait(){ if(tol == n) return ; while(tol < n && !q.empty()){ enter(q.front()); q.pop(); } } void enter(int x){ if(tol == n){ if(x != q.front()) q.push(x); return; } int i = 1; while(is_b[i]) i++; is_b[i] = x; //print(); sum += (b[i]*a[x]); tol++; } void leave(int x){ int i = 1; while(is_b[i] != x) i++; is_b[i] = 0; tol--; } int main(){ ios::sync_with_stdio(0); cin.tie(NULL); cin >> n >> m; for(int i = 1; i <= n; i++){ cin >> b[i]; } for(int i = 1; i <= m; i++){ cin >> a[i]; } int x; m *= 2; while(m--){ wait(); cin >> x; if(x > 0) enter(x); else leave(-x); } cout << sum << endl; return 0; }
- 1
信息
- ID
- 8446
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者