HDU ACM 1051 Wooden Sticks

题意:一个机器处理木板,机器重置需要1分钟,如果下一块木板的长度和质量均大于等于前一块的则机器无需重置,,否则重置,一开始机器也要花费一分钟,求处理完木板的最短时间。

分析:先按木板的长度排序,若长度相同则按质量排序(从小到大),然后从前往后扫描数组,找出符合的则标记,找完一轮在回头找,直到所有木板被标记则可得最小时间。

#include<iostream>#include<algorithm>using namespace std;#define N 5005struct A{int w,l;} a[N];bool cmp(A a,A b){if(a.l<b.l) return true;else if(a.l>b.l) return false;else if(a.w<=b.w) return true;else return false;}bool isuser[N];int main(){int T,n,i,count,j,k;cin>>T;while(T–){cin>>n;for(i=0;i<n;i++)cin>>a[i].l>>a[i].w;sort(a,a+n,cmp);//先按木板长排序,相等则按质量排序,从小到大memset(isuser,false,sizeof(isuser));count=0;for(i=0;i<n;i++){if(!isuser[i]){count++;k=i;for(j=k+1;j<n;j++)if(!isuser[j] && a[j].l>=a[k].l && a[j].w>=a[k].w){isuser[k]=true;isuser[j]=true;k=j;}if(!isuser[k]) isuser[k]=true;}}cout<<count<<endl;}return 0;}

造物之前,必先造人。

HDU ACM 1051 Wooden Sticks

相关文章:

你感兴趣的文章:

标签云: