#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
typedef pair<int, int> PII;
typedef long long ll;
int n;
void solve() {
cin >> n;
int A = 1e9 + 1;
int minl = (int)1e9 + 1, maxr = 0;
int maxlen = 0;
int cosl = A, cosr = A, cosrl = A;
for (int i= 0; i < n; i ++) {
int l, r, c;
cin >> l >> r >> c;
if (l < minl) {
minl = l;
cosl = A;
}
if (l == minl)
cosl = min(cosl, c);
if (r > maxr) {
maxr = r;
cosr = A;
}
if (r == maxr)
cosr = min(cosr, c);
if (maxlen < r - l+1) {
maxlen = r - l +1;
cosrl = A;
}
if (maxlen == r - l +1)
cosrl = min (cosrl, c);
int ans = cosr + cosl;
if (maxlen == maxr - minl + 1)
ans = min (ans, cosrl);
cout << ans << endl;
}
}
int main () {
int t;
cin >> t;
while (t --) solve();
return 0;
}
这题想复杂了、导致实现难度贼大。实际上我们只要贪心选择最左边的一个和最右边的一个端点。然后就能得到满足条件的区间