矩形嵌套(南阳理工OJ&&省赛H题)

来源:互联网 发布:农村淘宝app免费下载 编辑:程序博客网 时间:2024/06/05 11:18
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;typedef struct node{    int w,l;}node;bool cmp(node p,node q){    if(p.w==q.w) return p.l<q.l;    return p.w<q.w;}int main(){    //freopen("ju.txt","r",stdin);    int t,n,i,j;    scanf("%d",&t);    while(t--){        scanf("%d",&n);        node p[n];        int loop[n];        for(i=0;i<n;i++){            loop[i]=1;            scanf("%d%d",&p[i].w,&p[i].l);            if(p[i].w>p[i].l)                swap(p[i].w,p[i].l);        }        sort(p,p+n,cmp);        //for(i=0;i<n;i++)            //printf("%d %d\n",p[i].w,p[i].l);        for(i=0;i<n;i++){            for(j=i+1;j<n;j++){                if(p[j].l>p[i].l && p[j].w>p[i].w && loop[i]+1>loop[j]){                    loop[j]=loop[i]+1;                }            }            //for(j=0;j<n;j++)                //printf("%d ",loop[j]);            //printf("\n");        }        sort(loop,loop+n);        printf("%d\n",loop[n-1]);    }    return 0;}

总结:做的时候是按照比赛的时候的要求做的,所以WA了,后来一看题目,长宽都不能相等 =_=|| ,瞬间心中奔过一万只草泥马................


另附上比赛时的“矩形嵌套”:

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;typedef struct node{    int w,l;}node;bool cmp(node p,node q){    if(p.w==q.w) return p.l<q.l;    return p.w<q.w;}int main(){    freopen("ju.txt","r",stdin);    int t,n,i,j;    scanf("%d",&t);    while(t--){        scanf("%d",&n);        node p[n];        int loop[n];        for(i=0;i<n;i++){            loop[i]=1;            scanf("%d%d",&p[i].w,&p[i].l);            if(p[i].w>p[i].l)                swap(p[i].w,p[i].l);        }        sort(p,p+n,cmp);        for(i=0;i<n;i++)            printf("%d %d\n",p[i].w,p[i].l);        for(i=0;i<n;i++){            for(j=i+1;j<n;j++){                if(p[j].l>p[i].l && loop[i]+1>loop[j]){                    loop[j]=loop[i]+1;                }                if(p[j].l==p[i].l){                    if(p[j].w>p[i].w && loop[i]+1>loop[j])                        loop[j]=loop[i]+1;                }            }            for(j=0;j<n;j++)                printf("%d ",loop[j]);            printf("\n");        }        sort(loop,loop+n);        printf("%d\n",loop[n-1]);    }    return 0;}


0 0
原创粉丝点击