拼多多笔试
赛后重写了第二题,换方法,考虑区间维护,也不知道思路对不对,求指点!
#面试复盘##拼多多##笔经#
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int t; cin >> t; while (t--) { int n, v; cin >> n >> v; int N = 3000 + 1; vector<int> k(n), a(n), b(n); int data = 0; for (int i = 0; i < n; i++) { cin >> k[i] >> a[i] >> b[i]; data = max(data, b[i]); } vector<int> d1(N, 0), d2(N, 0), d3(N, 0); for (int i = 0; i < n; i++) { d1[a[i]] += k[i]; d2[b[i] + 1] += k[i]; } for (int i = 1; i <= data; i++) { d1[i] += d1[i - 1]; d2[i] += d2[i - 1]; } for (int i = 1; i <= data; i++) { d3[i] = d3[i - 1] + min(v, d1[i] - max(d2[i], d3[i - 1])); } cout << d3[data] << endl; } return 0; }
#面试复盘##拼多多##笔经#