This commit is contained in:
kkunkka
2025-05-27 12:18:45 +08:00
parent b667278d9a
commit 3926831f69
4 changed files with 95 additions and 9 deletions

View File

@@ -10,15 +10,10 @@ public class Main {
public static void main(String[] args) { public static void main(String[] args) {
// 当文本光标位于高亮显示的文本处时按 Alt+Enter // 当文本光标位于高亮显示的文本处时按 Alt+Enter
// 可查看 IntelliJ IDEA 对于如何修正该问题的建议。 // 可查看 IntelliJ IDEA 对于如何修正该问题的建议。
System.out.print("Hello and welcome!"); double sum = 0;
int i = 225462;
// 按 Shift+F10 或点击装订区域中的绿色箭头按钮以运行脚本。 sum += (double)i*i;
for (int i = 1; i <= 5; i++) { System.out.print(sum);
// 按 Shift+F9 开始调试代码。我们已为您设置了一个断点,
// 但您始终可以通过按 Ctrl+F8 添加更多断点。
System.out.println("i = " + i);
}
} }
} }

View File

@@ -0,0 +1,28 @@
package com.dota.binarySearch._1870;
class Solution {
public static void main(String[] args) {
new Solution().minSpeedOnTime(new int[]{1,1,100000}, 2.01);
}
public int minSpeedOnTime(int[] dist, double hour) {
long l = 1; long r = (1000 * 100000);
while (l < r) {
long mid = l + (r - l) / 2;
if (df(dist,mid) <= hour) {
r = mid;
} else {
l = mid + 1;
}
}
return df(dist, r) <= hour ? (int)r: -1 ;
}
double df(int[] dist, long speed) {
double sum = 0;
for (int i = 0; i < dist.length - 1; i++) {
sum += ((dist[i] + speed - 1) / speed);
}
sum += ((dist[dist.length - 1]) / (double) speed);
return sum;
}
}

View File

@@ -0,0 +1,25 @@
package com.dota.binarySearch._3296;
class Solution {
public long minNumberOfSeconds(int mountainHeight, int[] workerTimes) {
long l = 1, r = (long) mountainHeight *(mountainHeight+1) * workerTimes[0] / 2;
while (l < r) {
long mid = l + (r - l) / 2;
long t = df(mid, workerTimes);
if (t >= mountainHeight) {
r = mid;
} else {
l = mid + 1;
}
}
return r;
}
long df(long t, int[] workerTimes) {
long sum = 0;
for (int workerTime : workerTimes) {
sum += (long) (Math.sqrt(1 + (double) (8 * t) / workerTime) - 1) / 2;
}
return sum;
}
}

View File

@@ -0,0 +1,38 @@
package com.dota.binarySearch._3453;
class Solution {
public double separateSquares(int[][] squares) {
double l = squares[0][1], r = squares[0][1] + squares[0][2];
double area = 0;
for (int[] square : squares) {
l = Math.min(l, square[1]);
r = Math.max(r, square[1] + square[2]);
area += (double) square[2] * square[2];
}
area = area / 2.0;
for(int i=0;i<55;i++) {
double mid = l + (r - l) / 2;
var t = check(squares, mid, area);
if (t) {
r = mid;
} else {
l = mid + 0.000001;
}
}
return r;
}
boolean check(int[][] squares, double y, double area) {
// 1是上面积
double sum = 0;
for (int[] square : squares) {
if (square[1] > y) {
sum += (double) square[2] * square[2];
} else if (square[1] + square[2] > y) {
sum += (square[1] + square[2] - y) * square[2];
}
}
return sum <= area;
}
}