题意:机器削木棍,机器每次重置需要一分钟,如果当前木棍长度l重量w都大于之前的则不用一分钟来重置机器。求最少要重置多少时间。
题解:排序,,,,,,
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cstring>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define ll long long
using namespace std;
int mark[5010];
struct node{
int l,w;
}a[5010];
bool cmp(node a,node b){
if(a.l==b.l){
return a.w<b.w;
}
return a.l<b.l;
}
int main(){
int T,n;
cin>>T;
while(T--){
cin>>n;
memset(mark,0,sizeof mark);
for(int i = 0 ; i < n ; i++){
scanf("%d %d",&a[i].l,&a[i].w);
}
sort(a,a+n,cmp);
int ans = 0;
// for(int i = 0 ; i < n ; i++){
// cout<<a[i].l<<" "<<a[i].w<<endl;
// }
// cout<<endl;
for(int i = 0 ; i < n ; i++){
if(!mark[i]){
node c = a[i];
for(int j = i + 1 ; j < n ; j++){
if(c.l<=a[j].l&&c.w<=a[j].w&&!mark[j]){
mark[j] = 1;
c = a[j];
}
}
ans++;
// cout<<a[i].l<<" "<<a[i].w<<endl;
}
}
cout<<ans<<endl;
}
}