HDU1051(Wooden Sticks)
2012-03-18 12:24
405 查看
题意:有n个木棍,运第一个的时候需要一分钟,如果下一个木棍的l、w值>=前一个的则不需要调整时间,否则的话需要一分钟的调整时间,找出花费的最小时间。其实就是一个嵌套的问题,如果能嵌套进去则不花时间,最后看留在外面的有多少个,就是其花费的时间;
点击打开链接
点击打开链接
#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 5001 int mark ; struct wood { int w; int l; }a ,place; //降排 int cmp( const void *a,const void *b) { struct wood *c,*d; c=(struct wood *)a; d=(struct wood *)b; if(c->w!=d->w) return d->w-c->w; else return d->l-c->l; } int main() { int i,j,k,final,n,T; scanf("%d",&T); for(i=1;i<=T;i++) { scanf("%d",&n); final=n;//嵌套后最终留下的数量; //outnum=0; memset(mark,0,sizeof(mark));//标记已经用过的木头的数组 for(j=0;j<n;j++) { scanf("%d%d",&a[j].w,&a[j].l); } qsort(a,n,sizeof(a[0]),cmp); for(j=0;j<n;j++) { if(mark[j]==0) { place.w=a[j].w;//把将要比较啊a[j]存入临时变量place,并标记已经用过 place.l=a[j].l; mark[j]=1; } for(k=j+1;k<n;k++) { if(place.w>=a[k].w&&place.l>=a[k].l&&mark[k]==0)//如果没有被标记过并且满足嵌套条件 { place.w=a[k].w;//存入临时变量,并标记 place.l=a[k].l; mark[k]=1; final--;//数量减一; } } }printf("%d\n",final); } return 0; }
相关文章推荐
- HDU 1051 Wooden Sticks (贪心)
- hdu 1051 Wooden Sticks
- HDU 1051 Wooden Sticks 贪心
- Hdu1051_Wooden_Sticks
- HDU 题目1051 Wooden Sticks
- HDU 1051 Wooden Sticks(贪心)
- HDU-1051-Wooden Sticks(C++ && 不水的贪心!)
- HDU 1051 Wooden Sticks
- hdu1051 woodensticks 简单
- HDU -- 1051 Wooden Sticks(贪心)
- hdu 1051 Wooden Sticks - 贪心
- HDU 1051 Wooden Sticks 贪心题解
- HDU 1051 Wooden Sticks(How to use 快排)
- HDU 1051: Wooden Sticks(贪心)
- hdu 1051 Wooden Sticks(贪心)
- POJ 1065 && HDU 1051 Wooden Sticks(贪心)
- HDU 1051 Wooden Sticks 贪心
- HDU 1051 Wooden Sticks(加工木块,LIS,dp)
- hdu 1051:Wooden Sticks(水题,贪心)
- HDU 1051 Wooden Sticks(贪心)