poj1065

来源:互联网 发布:qt creator windows 编辑:程序博客网 时间:2024/06/05 10:32

简单的动态规划,运用Dilworth定理,秒A,同时还有的是要进行严格的减序处理

AC CODE

#include<stdio.h>#include<climits>#include<algorithm>#include<stack>#include<iostream>#include<cmath>#include<set>#include<vector>#include<map>#include<queue>#include<string.h>using namespace std;typedef struct edge{  int a,b;}edge;edge s[5010];int f[5010];int cmp(edge a,edge b){ return a.a<b.a;}int  main(void){  int t;  scanf("%d",&t);  while(t--)  {       int n;       scanf("%d",&n);       for(int i=1;i<=n;i++)       {     scanf("%d %d",&s[i].a,&s[i].b);       }       s[0].b=INT_MAX;       sort(s+1,s+n+1,cmp);       memset(f,0,sizeof(f));       for(int i=1;i<=n;i++)       {      for(int j=0;j<i;j++)      {        if(s[i].b<s[j].b)        {   f[i]=max(f[i],f[j]+1);   }     }    // cout<<f[i]<<endl;       }       int Max=INT_MIN;       for(int i=1;i<=n;i++)       {      if(f[i]>Max)  {    Max=f[i];  }        }        cout<<Max<<endl;     }  return 0;}


0 0
原创粉丝点击