简单题意:给定若干木棒,有长度和宽度,第一根木棒加工需要一分钟,如果第二根木棒的长度和宽度都大于或者等于第一根木棒,则不需要消耗另外的时间,以此类推;
解题思路:
首先对木棒进行排序,按照长度从小到大排序,如果长度相同,则按照重量排序,从第一根开始,以此与下一根木棒的重量比较,定义变量min=0;如果符合条件,min++;由于存在重复比较的问题,在数组里定义两个判断变量来判断该木棒是否已经进行比较过。最后比较完成,n-min=所需时间;
ac代码:
#include#include struct mm{ int l; int w; int x; int v;}a[5001];int cmp( mm a,mm b){ if(a.l==b.l) return a.w >N; while(N-->0) { cin>>n; for(i=0;i >a[i].l>>a[i].w; a[i].x=0; a[i].v=0; }int m=0; sort(a,a+n,cmp); for(i=0;i a[j].w||a[j].x==1) { j++; continue; } if(a[i].w<=a[j].w&&a[j].x!=1) { if(a[i].x==1) {j++; continue; } min++; i=j; a[j].v=1;j=i+1; continue; } } for( y=0;y
感想:当有多次重复比较是,可以设置相关变量来判断是否符合比较条件;