题意:求解最小启动时间
题解:常规的贪心思想即可
附上代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=5050;
bool used[maxn];
struct node{
int l,w;
};
node nodes[maxn];
bool cmp(node a,node b)
{
if(a.l!=b.l){
return a.l<b.l;
}else{
return a.w<b.w;
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d%d",&nodes[i].l,&nodes[i].w);
}
sort(nodes,nodes+n,cmp);
memset(used,false,sizeof(used));
int cur=0,ans=0;
used[cur]=true;
while(true){
for(int i=0;i<n;i++){
if(!used[i]&&(nodes[i].l>=nodes[cur].l&&nodes[i].w>=nodes[cur].w)){
cur=i;
used[cur]=true;
}
}
ans++;
int j;
for(j=0;j<n;j++){
if(!used[j]){
cur=j;
used[cur]=true;
break;
}
}
if(j==n){
break;
}
}
printf("%d\n",ans);
}
return 0;
}