为什么差分约束的题我总能不用差分约束做。
这道题我用的贪心。其实就是区间选点问题啦,对于这类问题,我们的贪心策略肯定是让多个区间覆盖在一个点上,那么我们可以想到的就是按照末尾排序,在一个区间的末尾去加点,这样才能使一个点覆盖更多的点,然后就随便统计统计,如果想要优化,可以加树状数组来搞,但是由于太懒了,没加~
代码:
#include <bits/stdc++.h>
using namespace std;
struct node{
int l , r , w;
};
node e[50010];
int n , ans;
int vis[50010];
bool cmp(node x , node y){
return x.r < y.r;
}
int main(){
int T;
cin >> T;
while(T--){
cin >> n;
memset(vis , 0 , sizeof(vis));
ans = 0;
for(int i = 1; i <= n; i++) cin >> e[i].l >> e[i].r >> e[i].w;
sort(e + 1 , e + n + 1, cmp);
for(int i = 1; i <= n; i++){
int sum = 0;
for(int j = e[i].l; j <= e[i].r; j++)
if(vis[j]) sum++;
if(sum >= e[i].w) continue;
for(int j = e[i].r; j >= e[i].l; j--){
if(!vis[j]) vis[j] = 1 , sum++ , ans++;
if(sum >= e[i].w) break;
}
}
cout << ans << endl;
}
return 0;
}