标签:
题目: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