拼多多笔试
赛后重写了第二题,换方法,考虑区间维护,也不知道思路对不对,求指点!
#面试复盘##拼多多##笔经#
#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;
} #面试复盘##拼多多##笔经#



影石Insta360公司氛围 452人发布