This commit is contained in:
kkunkka
2025-06-07 11:34:12 +08:00
parent 1c44ed4da8
commit bb5e3d7ca2
2 changed files with 81 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
package com.dota.binarySearch._2861;
import java.util.List;
class Solution {
public static void main(String[] args) {
new Solution().maxNumberOfAlloys(1,2,24308609, List.of(List.of(40), List.of(88)),List.of(82685338),List.of(2));
}
public int maxNumberOfAlloys(int n, int k, int budget, List<List<Integer>> composition, List<Integer> stock, List<Integer> cost) {
int max = 0;
for (Integer i : stock) {
max = Math.max(max, i);
}
int i = 0, j = budget + 1 + max;
while (i + 1 < j) {
int mid = i + (j - i) / 2;
if (check(mid, budget, composition, stock, cost)) {
i = mid;
} else {
j = mid;
}
}
return i;
}
// 主要看钱够不够造k份合金
boolean check(int k, long budget, List<List<Integer>> composition, List<Integer> stock, List<Integer> cost) {
long t = budget;
for (List<Integer> integers : composition) {
budget = t;
for (int j = 0; j < integers.size(); j++) {
if ((long)stock.get(j) >= (long) k * integers.get(j)) {
continue;
}
long a = (long) k * integers.get(j) - stock.get(j);
long b = a * cost.get(j);
if (budget < b) {
budget = - 1;
break;
}
budget -= b;
}
if (budget >= 0) {
return true;
}
}
return false;
}
}

View File

@@ -0,0 +1,31 @@
package com.dota.stack._3170;
import java.util.Comparator;
import java.util.HashSet;
import java.util.PriorityQueue;
class Solution {
public String clearStars(String s) {
var stack = new PriorityQueue<Integer>((a,b)->{
if (s.charAt(a)==s.charAt(b)) {
return b - a;
}
return s.charAt(a) - s.charAt(b);
});
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '*') {
stack.poll();
} else {
stack.add(i);
}
}
var set = new HashSet<>(stack);
var sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (set.contains(i)) {
sb.append(s.charAt(i));
}
}
return sb.toString();
}
}