处理木头桩 贪心算法

该博客探讨了一个关于处理木桩的问题,其中每个木桩具有长度和重量。处理木桩的时间取决于它们的顺序,如果满足特定条件则不额外耗时。通过按长度排序并应用贪心策略来分组木桩,可以找到最小的总处理时间。博客提供了一个输入输出实例以解释问题和解决方案。
摘要由CSDN通过智能技术生成

问题描述:

有许多木桩需要处理,每个木桩有长度 li 和重量 wi 这两个属性。处理第一个木桩需要1分钟,之后每次处理木桩,若满足 li+1<=li且 wi+1<=wi ,则不消耗时间。否则,每次处理木桩耗时1分钟。

假设每组有n个木桩,分别给出长度和重量。求最小的总安装时间。

思路:按长度对木桩进行排序,然后用贪心的思想分组,每一组内的木桩都满足条件即可。

输入输出实例:

输入:

1

5

4 9 5 2 2 1 3 5 1 4

输出:

2

说明:输入中第一行代表测试数据数目,第二行为这一组测试数据的木桩数目,第三行为木桩的长度和重量(长 重 长 重......)

#include"stdio.h"
#include"malloc.h"
void sort(int *m,int *follow,int start,int end){ //快速排序 
	if(start>end) return;
	int i=start;
	int j=end;
	int t=m[start];
	int f=follow[start];
	while(i<j){
		while(m[j]<=t&&i<j)
			j--;
		m[i]=m[j];
		follow[i]=follow[j];
		while(m[i]>=t&&i<j)
			i++;
		m[j]=m[i];
		follow[j]=follow[i];
	}
	m[i]=t;
	follow[i]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值