标签:
题目:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=323
理解:将数据处理成多组 l ,w 递增的数组 设li两层for循环 vis【】 记录是否被访问过 if j .l &&j.l >> i.l &&i.w j 元素可以在i后 vis =1
每次 更新 flag
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int vis[10005];
struct Wood
{
int l,w;
} p[10005];
bool cmp(Wood a,Wood b)
{
if(a.l!=b.l)
return a.l<b.l;
else return a.w<b.w;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int ans=0;
memset(vis,0,sizeof(vis));
for(int i=0; i<n; i++)
{
cin>>p[i].l>>p[i].w;
}
sort(p,p+n,cmp);
for(int i=0;i<n;i++)
{
if(!vis[i])
{
vis[i]=1;
int flag=i;
ans++;
for(int j=i+1;j<n;j++)
{
if(!vis[j]&&p[j].l>=p[flag].l&&p[j].w>=p[flag].w)
{
vis[j]=1;
flag=j;
}
}
}
}
cout<<ans<<endl;
}
}
标签:
原文地址:http://www.cnblogs.com/sxy-798013203/p/5719026.html