【POJ1065】Wooden Sticks Dilworth定理(偏序集定理2)

来源:互联网 发布:淘宝开店需要什么条件 编辑:程序博客网 时间:2024/06/05 22:32

题意:

    可以视为跟POJ1548相同,就是n个点(二维),要求分堆,每堆中点要求单调递增(A的x和y值都比B小则A<B),问最少分几堆。

题解:参见我的另一篇博客

点击此处进入(当然,你去我的博客找上一篇也行)

然后贴代码:

#include <cstdio>#include <cstring>#include <algorithm>#define N 6000#define inf 0x3f3f3f3fusing namespace std;struct KSD{int x,y;bool operator < (const KSD &a)const{if(x==a.x)return y<a.y;return x<a.x;}}s[N];int n,f[N];int main(){//freopen("test.in","r",stdin);int i,j,g;s[0].y=inf;scanf("%d",&g);while(g--){scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d%d",&s[i].x,&s[i].y);sort(s+1,s+n+1);for(i=1;i<=n;i++){f[i]=0;for(j=i-1;j>=0;j--){if(s[j].y>s[i].y)f[i]=max(f[i],f[j]+1);}}int ans=0;for(i=1;i<=n;i++)ans=max(ans,f[i]);printf("%d\n",ans);}return 0;}


1 0