OPI cuestión, el mayor beneficio

El costo del costo array []
ganancias matriz de ganancias []
hacer la mayor parte del proyecto K, y el proyecto no se puede hacer en paralelo, que es el momento de hacer un proyecto. No se puede repetir los mismos elementos
se les da capital inicial w, finalmente, buscando el máximo beneficio

Paso ------- -------

Inicializar todos los proyectos, proyectos que incluyen el gasto de beneficio del beneficio costo y
preparan una raíz montoncito, de acuerdo con el costo de construir y de bajo coste cabeza montón llegó raicillas
tienen capital inicial w, seguido por la cabeza de la pila pop de raíces pequeñas, pero a garantizar el costo emergente de menos de w
todos los elementos emergentes, lucro dinero siguiendo dispuestas secuencialmente en un gran montón de raíz ----- pequeña raíz pila es los proyectos actuales no
llegar con el primer proyecto en un gran interior de montón de raíz, este proyecto se encuentra actualmente para hacer el proyecto en los proyectos de más alto rendimiento para terminar este proyecto
debido al terminar un proyecto, la financiación se hace más w = W + p1
de nuevo en una pequeña raíz emergente dentro del proyecto del reactor, en un gran raíces de pelo, pop-up de nuevo, el proceso del ciclo ......

empaquetar codiciosos;

java.util.Comparator importación;
java.util.PriorityQueue importación;

public class {MostProfitIPO

public static int findMaximizedCapital(int k, int w, int[] profits, int[] costs) {
	Node[] nodes = new Node[profits.length];
	for(int i=0;i<nodes.length;i++) {
		nodes[i] = new Node(profits[i], costs[i]);
	}
	PriorityQueue<Node> minCostHeap = new PriorityQueue<Node>(new MinCostComparator());
	PriorityQueue<Node> maxProfitHeap = new PriorityQueue<Node>(new MaxProfitComparator());
	
	//节点全部加入 代价堆
	for(int i=0;i<nodes.length;i++) {
		minCostHeap.add(nodes[i]);
	}
	
	for(int i=0;i<k;i++) {
		while(!minCostHeap.isEmpty() && minCostHeap.peek().cost <= w) {
			maxProfitHeap.add(minCostHeap.poll());
		}
		if(maxProfitHeap.isEmpty()) {
			return w;
		}
		w = w + maxProfitHeap.poll().profit;
	}
	
	return w;
}

}

clase Node {
ganancias int;
costo int;

public Node(int profig, int cost) {
	this.profit = profig;
	this.cost = cost;
}

}

implementa la clase MinCostComparator Comparador {
public int comparar (Nodo o1, o2 nodo) {
retorno o1.cost - o2.cost;
}
}

clase MaxProfitComparator implementos Comparador {
public int comparar (Nodo o1, o2 nodo) {
retorno o2.profit - o1.profit;
}
}

Publicado 20 artículos originales · ganado elogios 1 · vistas 1463

Supongo que te gusta

Origin blog.csdn.net/weixin_44587666/article/details/89438124
Recomendado
Clasificación