kk
This commit is contained in:
@@ -10,15 +10,10 @@ public class Main {
|
||||
public static void main(String[] args) {
|
||||
// 当文本光标位于高亮显示的文本处时按 Alt+Enter,
|
||||
// 可查看 IntelliJ IDEA 对于如何修正该问题的建议。
|
||||
System.out.print("Hello and welcome!");
|
||||
|
||||
// 按 Shift+F10 或点击装订区域中的绿色箭头按钮以运行脚本。
|
||||
for (int i = 1; i <= 5; i++) {
|
||||
|
||||
// 按 Shift+F9 开始调试代码。我们已为您设置了一个断点,
|
||||
// 但您始终可以通过按 Ctrl+F8 添加更多断点。
|
||||
System.out.println("i = " + i);
|
||||
}
|
||||
double sum = 0;
|
||||
int i = 225462;
|
||||
sum += (double)i*i;
|
||||
System.out.print(sum);
|
||||
}
|
||||
}
|
||||
|
||||
|
28
src/main/java/com/dota/binarySearch/_1870/Solution.java
Normal file
28
src/main/java/com/dota/binarySearch/_1870/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
25
src/main/java/com/dota/binarySearch/_3296/Solution.java
Normal file
25
src/main/java/com/dota/binarySearch/_3296/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
38
src/main/java/com/dota/binarySearch/_3453/Solution.java
Normal file
38
src/main/java/com/dota/binarySearch/_3453/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user