【Java】零基础蓝桥杯算法学习——二分查找

算法模板一:

// 数组arr的区间[0,left-1]满足arr[i]<k,[left,n-1]满足arr[i]>=k;Scanner scan = new Scanner(System.in);int[] arr = {1,2,3,4,5};int left = 0,right = arr.length-1;int k = scan.nextInt();while(left<right) {//left==right时退出循环int mid = (left+right)/2;//当区间长度为偶数时,mid取区间靠左端点if(arr[mid]>=k) right = mid;else left = mid+1;}

算法模板二:

// 数组arr的区间[0,left]满足arr[i]<=k,[left+1,n-1]满足arr[i]>k;Scanner scan = new Scanner(System.in);int[] arr = {1,2,3,4,5,6};int left = 0,right = arr.length-1;int k = scan.nextInt();while(left<right) {//left==right时退出循环int mid = (left+right+1)/2;//当区间长度为偶数时,mid取区间靠右端点if(arr[mid]>k) right = mid-1;else left = mid;}

例题一:蓝桥杯2018真题:递增三元组

输入示例:

3

1 1 1

2 2 2

3 3 3 

输出示例:27

代码示例:

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();int[] a = new int[n];int[] b = new int[n];int[] c = new int[n];for(int i=0;i<n;i++) a[i] = scan.nextInt();for(int i=0;i<n;i++) b[i] = scan.nextInt();for(int i=0;i<n;i++) c[i] = scan.nextInt();Arrays.sort(a);Arrays.sort(b);Arrays.sort(c);int[] B = new int[n];for(int i=0;i<n;i++) {int l=0,r=n-1;while(l<r) {int mid = (l+r)/2;if(c[mid]>b[i]) r=mid;else l=mid+1;}if(c[l]>b[i]) B[i]=n-l;}long[] sum = new long[n+1];for(int i=1;i<=n;i++) sum[i]=sum[i-1]+B[i-1];long ans=0;for(int i=0;i<n;i++) {int l=0,r=n-1;while(l<r) {int mid = (l+r)/2;if(b[mid]>a[i]) r=mid;else l=mid+1;}if(b[l]>a[i]) ans+=(sum[n]-sum[l]);}System.out.println(ans);scan.close();}
}

例题二:蓝桥杯2017真题:分巧克力

 输出:2

代码示例:

import java.util.Scanner;
public class Main {public static void main(String[] args)  {Scanner scan = new Scanner(System.in);int n = scan.nextInt();int k = scan.nextInt();int[] h = new int[n];int[] w = new int[n];for(int i=0;i<n;i++) {h[i]=scan.nextInt();w[i]=scan.nextInt();}int l=0,r=(int)1e5;while(l<r) {int mid=(l+r+1)/2;if(check(mid,h,w,k))  l=mid;else r=mid-1;}System.out.println(l);scan.close();}public static boolean check(int mid,int[] h,int[] w,int k) {int ans=0;for(int i=0;i<h.length;i++) {int res = (h[i]/mid)*(w[i]/mid);ans+=res;}return ans>=k;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/470454.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

揭秘Angular世界的奥秘:全面提升你的前端开发技能!

介绍&#xff1a;Angular是一个由Google维护的开源JavaScript框架&#xff0c;专为构建Web应用程序而设计&#xff0c;特别适合开发大型单页应用&#xff08;SPA&#xff09;。以下是对Angular的详细介绍&#xff1a; 技术栈&#xff1a;Angular使用HTML作为模板语言&#xff0…

【Java多线程案例】定时器

1. 定时器简介 定时器&#xff1a;想必大家一定对定时器这个概念不陌生&#xff01;因为它经常出现在我们的日常生活和编程学习中&#xff0c;定时器就好比是一个"闹钟"&#xff0c;会在指定时间处理某件事&#xff08;例如响铃&#xff09;&#xff0c;而在编程世界…

单html页面使用Vue3和Element-Plus

一、快速入门 使用CDN方式引入Vue3使用CDN方式引入Element-Plus的样式文件和组件库 案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, ini…

随机过程及应用学习笔记(四) 马尔可夫过程

马尔可夫过程是理论上和实际应用中都十分重要的一类随机过程。 目录 前言 一、马尔可夫过程的概念 二、离散参数马氏链 1 定义 2 齐次马尔可夫链 3 齐次马尔可夫链的性质 三、齐次马尔可夫链状态的分类 四、有限马尔可夫链 五、状态的周期性 六、极限定理 七、生灭过…

如何将字体添加到 ONLYOFFICE 文档服务器 8.0

作者&#xff1a;VincentYoung 阅读本文&#xff0c;了解如何为自己的在线办公软件 ONLYOFFICE 文档服务器的字体库添加字体 ONLYOFFICE 文档是什么 ONLYOFFICE 文档是一个功能强大的文档编辑器&#xff0c;支持处理文本文档、电子表格、演示文稿、可填写表单、PDF 和电子书…

设计模式巡礼:多板适配案例解析与深度重构

theme: cyanosis 月黑风高&#xff0c;好兄弟发给我一个重构需求&#xff0c;咨询我的意见。 一、 场景分析 开发的产品是需要运行到不同的定制Android板子&#xff0c;不同板子有对应的不同SDK提供的API&#xff0c;目前的业务端&#xff0c;业务流程基本是确定的&#xff0…

统一数据返回格式 及 可能遇到的问题;统一异常处理

统一数据返回格式 统一数据返回格式就像我们寄快递一样&#xff0c;不管你需要寄的东西具体是什么都需要将它打包到统一的快递箱中。 此时我们需要一个“快递箱”用来将返回的数据“装”在里面。这个类是根据业务情况来自行定义的。 Data public class Resp<T> {//200…

arkTS开发鸿蒙OS个人商城案例【2024最新 新年限定开发案例QAQ】

龙年前述 源码获取>文章下方二维码&#xff0c;回复关键字“鸿蒙OS商场源码” 前言 arkTS是华为自己研发的一套前端语言&#xff0c;是在js和ts技术的基础上又进行了升级而成&#xff01; 本篇文章会带领大家通过arkTSnode.jsmongoDB来完成一个鸿蒙OS版本的商城案例&…

vue3 之 商城项目—支付

支付模版 pay/index.vue <script setup> const payInfo {} </script> <template><div class"xtx-pay-page"><div class"container"><!-- 付款信息 --><div class"pay-info"><span class"ic…

《Linux 简易速速上手小册》第4章: 包管理与软件安装(2024 最新版)

文章目录 4.1 包管理基础4.1.1 重点基础知识4.1.2 重点案例&#xff1a;在 Ubuntu 上安装和管理软件4.1.3 拓展案例 1&#xff1a;添加软件仓库4.1.4 拓展案例 2&#xff1a;回滚软件到旧版本 4.2 使用 APT 与 YUM4.2.1 重点基础知识4.2.2 重点案例&#xff1a;在 Ubuntu 上配置…

C# winfrom实例:四路激光测距雷达数据采集和波形图绘制

1.所述产品 产品型号&#xff1a;TFmini Plus 相关资料下载地址&#xff1a;http://www.benewake.com/download 产品名称&#xff1a;TFmini Plus激光雷达模组制造商公司&#xff1a;北醒&#xff08;北京&#xff09;光子科技有限公司 2.产品功能&#xff1a;TFmini Plus是基…

MySQL篇----第十四篇

系列文章目录 文章目录 系列文章目录前言一、MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?二、锁的优化策略三、索引的底层实现原理和优化四、什么情况下设置了索引但无法使用前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽…