杭电ACM 1051 求思路
问题描述:
杭电ACM 1051 求思路
好像要用贪心法,能举例更好
答
把所有的木头按照长度大的在前面,长度小的在后面,长度一样的重的在前面,轻的在后面进行排序.
然后从第一个开始加工,setup time加1,如果一个被加工了,我们往后面看,把最近的下一个能直接加工的拿去加工,如此类推,直到最后.然后重新加工最前面那个未被加工的木头,setup time加1,如此类推直到所有木头都加工过为止
#include
#include
#include
typedef struct
{
int len;
int weight;
} wood;
int cmp(const void* a, const void* b)
{
wood* wa = (wood*)a;
wood* wb = (wood*)b;
if(wa->len!=wb->len)
return wb->len - wa->len;
return wb->weight - wa->weight;
}
int main()
{
int T,i,N,setup,m,j;
wood w[5000];
int used[5000];
scanf("%d",&T);
while(T--)
{
scanf("%d",&N);
for(i=0;i