// 使用二分查找寻找最小速度K int minSpeed = findMinSpeed(arr, H);
System.out.println(minSpeed); }
// 使用二分查找寻找最小速度K privatestaticintfindMinSpeed( int [] arr, int H) { int left = 1 ; int right = Arrays.stream(arr).max().getAsInt();
while (left < right) { int mid = left + (left - right) / 2 ; if (canEatAll(arr, H, mid)) { right = mid; } else { left = mid + 1 ; } } return left; }
// 判断在速度K下是否能在H小时内吃完所有桃子 privatestaticbooleancanEatAll( int [] arr, int H, int K) { int hours = 0 ; for ( int i = 0 ; i < arr.length; i++) { hours += arr[i] / K; if (arr[i] % K != 0 ) { hours++; } } return hours <= H; } }
// 使用二分查找寻找最小的速度 K int minSpeed = findMinSpeed(arr, H);
// 输出最小速度 K System.out.println(minSpeed); }
/** * 使用二分查找寻找吃完所有桃子的最小速度 K * * @param arr 每棵树上的蟠桃个数 * @param H 天兵天将离开的时间 * @return 最小速度 K */ privatestaticintfindMinSpeed( int [] arr, int H) { // 初始化二分查找的左边界和右边界 int left = 1 ; // 最小速度为 1 int right = Arrays.stream(arr).max().getAsInt(); // 最大速度为最大的一棵树上的桃子数
// 二分查找 while (left < right) { // 计算中间值 mid int mid = left + (right - left) / 2 ; // 检查是否可以在速度为 mid 的情况下,在 H 小时内吃完所有桃子 if (canEatAll(arr, H, mid)) { // 如果可以,则尝试更小的速度,将右边界移动到 mid right = mid; } else { // 如果不可以,则需要更快的速度,将左边界移动到 mid + 1 left = mid + 1 ; } } // 返回最小速度 return left; }
/** * 判断在给定速度 K 下,是否可以在 H 小时内吃完所有桃子 * * @param arr 每棵树上的蟠桃个数 * @param H 天兵天将离开的时间 * @param K 给定的速度 * @return 是否可以在 H 小时内吃完所有桃子 */ privatestaticbooleancanEatAll( int [] arr, int H, int K) { // 初始化所需的总时间 int hours = 0 ; // 遍历每棵树,计算吃完每棵树上的桃子所需的时间 for ( int i = 0 ; i < arr.length; i++) { // 计算当前树上的桃子需要的整小时数 hours += arr[i] / K; // 如果不能整除,则需要额外增加一小时 if (arr[i] % K != 0 ) { hours++; } } // 如果总时间不超过 H 小时,返回 true,否则返回 false return hours <= H; } }
プロンプト: 画像に示すテーブル構造を持ち、「ビジネス」でグループ化され、「スコア」で降順に並べ替えられた SQL ステートメントを MySQL で記述します。
SELECT c1.business, c1.dish, c1.efficiency, c1.sales_volume, c1.score FROM commodity c1 JOIN ( SELECT business, MAX (score) AS max_score FROM commodity GROUPBY business ) c2 ON c1.business = c2.business AND c1.score = c2.max_score ORDERBY c1.score DESC ;
publicstaticvoidmain(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(THREAD_COUNT); String[] fileUrls = { /* List of file URLs */ };
for (String fileUrl : fileUrls) { executorService.execute(() -> downloadFile(fileUrl)); }
executorService.shutdown(); }
privatestaticvoiddownloadFile(String fileUrl) { try (InputStream in = new URL(fileUrl).openStream()) { BufferedReader reader = new BufferedReader( new InputStreamReader(in)); String line; while ((line = reader.readLine()) != null ) { // Process each line and store in database DatabaseWriter.addData(line); } } catch (IOException e) { e.printStackTrace(); } } }