二分的经典问题 最大化最小值和最小化最大值

2023-10-30

有点长~可以选自己想看的部分看~不过建议把刚开始的介绍看完~

不多说,先来一个在升序无重复元素的数组中二分搜索的板子。(l+r)/2=mid可能会爆int这种细节问题我们就放一边。

int a[MAX];

int Binary_Search(int v)
{
	int l=0,r=n-1;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(a[mid]==v)
			return mid;
		else if(a[mid]>v)
			r=mid-1;
		else
			l=mid+1;
	}
	return l;
}

无重复元素的二分相信大家都会写,就不再赘述了。

下面给一个在非降序有重复元素的数组的二分搜索的板子。

int a[MAX];

int Binary_Search(int v)
{
	int l=0,r=n-1;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(a[mid]>=v)
			r=mid-1;
		else
			l=mid+1;
	}
	return l;
}

为什么这么写没有问题呢,我们来考虑一下:(1)如果a[mid]>v的时候,令r=mid-1,这时候这样降低上限肯定是没有问题的。(2)如果a[mid]==v的时候,令r=mid-1,这时候会不会有问题呢,我们来仔细分析一下。如果a[mid]==v且这是唯一一个或者说第一个等于v的元素,我们把上限划为mid-1,那么后续的所有操作舍弃掉的必定是左边的区间,二分的最后一步是l==r的情况,这时候a[l]=a[r]=a[mid-1]<v,那么l=mid+1,这时候得到的结果是正确的。如果a[mid]=v然而这不是第一个等于v的元素,我们依旧可以把上限划为mid-1,因为前面还有等于v的元素,所以我们不用担心会出问题。那么l又没有可能取到的并不是第一个等于v的元素呢,仔细思考就会发现其实是不可能的。因为只有a[mid]<v即当前中点的值不满足题意的时候,我们才会令l=mid+1,若此时a [mid+1]==v,那么后续操作必定舍弃右边的区间,并且最后一步a[l]=a[r]=v,此时会令r=mid-1,并不会修改l的值。综上所述,这种方法是没有问题的。只有当mid不合理时,我们才修改下限。这与最小化最大值问题有异曲同工之妙。当judge(mid)不合理时,我们才修改下限

最小化最大值问题:(在满足题意的情况下求最小值)

CSU 1976

http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=1976

Description

作为老人的小明非常忧伤,因为他马上要被流放到本部去了,住进全左家垅最有历史感的11舍真是一件非常荣幸的事情。
搬行李是个体力活,小明发现自己的行李太多啦,所以他决定去买很多个袋子来装走。到了超市的小明发现,不同大小的袋子居然价格一样???虽然买最大的自然最赚,但是小明是名远近闻名的环保人士,他觉得袋子只要能装下他的行李就够了,并且为了不麻烦收银的小姐姐(⊙o⊙)…,他也只会购买同一种大小的袋子。因此他希望在能装下所有行李的前提下,袋子越小越好。同时为了避免弄乱行李,小明希望同一个袋子装的是位置连续相邻的行李。
小明摸了摸口袋发现自己带的钱最多能买N个袋子,数学特别差的他不知道到底该买多大的才合适,所以想靠你来解决这个问题了。

Input

第一行为一个数字T(T<=10)表示数据组数
第二行为两个数字N(N <= 10^5)和 M(M <= 10^5)表示袋子个数和小明的行李个数
第三行为M个数字,第i个数字a[i]表示小明的第i个行李体积为a[i](0<a[i] <= 10^9)

Output

输出一行表示袋子的最小体积(整数)

Sample Input

1
3 3
1 1 1

Sample Output

1

Hint

袋子不能装下体积大于其容积的物品
多个物品满足体积之和小于等于一个袋子的容积,就能被装进

题意就不说了吧,直接开始分析:最小容积是在m==n的时候取到的,这时候袋子的最小体积=物品的最大体积,最大容积是在只有一个袋子的时候取到的,这时候袋子的最小体积=物品的体积之和。我们取mid值,看在这种情况下,用掉的袋子的数量是否大于n,因为大于n的时候,这个mid值是必定不满足题意的,因此我们可以放心的令l=mid+1,反之我们令r=mid-1。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<set>
#include<algorithm>
#include<iterator>
#define EPS 1e-12
#define INF 0x3f3f3f3f
typedef long long ll;
using namespace std;

ll a[100005];

int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,m;
		scanf("%d%d",&n,&m);
		ll MAX=0;
		ll sum=0;
		for(int i=0;i<m;i++)
		{
			scanf("%lld",&a[i]);
			sum+=a[i];
			if(a[i]>MAX)
				MAX=a[i];
		}
		ll l=MAX,r=sum;
		while(l<=r)
		{
			ll mid=(l+r)/2;
			int cnt=1;
			sum=0;
			for(int i=0;i<m;i++)
			{
				sum+=a[i];
				if(sum>mid)
				{
					sum=a[i];
					cnt++;
				}
			}
			if(cnt<=n)
				r=mid-1;
			else
				l=mid+1;
		}
		printf("%lld\n",l);
	}
	return 0;
}

 

CSU 1023

http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=1023

Description

前段时间,某省发生干旱,B山区的居民缺乏生活用水,现在需要从A城市修一条通往B山区的路。假设有A城市通往B山区的路由m条连续的路段组成, 现在将这m条路段承包给n个工程队(n ≤ m ≤ 300)。为了修路的便利,每个工程队只能分配到连续的若干条路段(当然也可能只分配到一条路段或未分配到路段)。 假设每个工程队修路的效率一样,即每修长度为1的路段所需的时间为1。现在给出路段的数量m,工程队的数量n, 以及m条路段的长度(这m条路段的长度是按照从A城市往B山区的方向依次给出,每条路段的长度均小于1000), 需要你计算出修完整条路所需的最短的时间(即耗时最长的工程队所用的时间)。

Input

第一行是测试样例的个数T ,接下来是T个测试样例,每个测试样例占2行, 第一行是路段的数量m和工程队的数量n,第二行是m条路段的长度。

Output

对于每个测试样例,输出修完整条路所需的最短的时间。

Sample Input

2
4 3
100 200 300 400
9 4
250 100 150 400 550 200 50 700 300

Sample Output

400
900

思路:几乎和上一道题一模一样。在当前mid值的情况下,如果修完所有的路需要的施工队大于要求的,必定不满足题意,这时候我们可以令l=mid+1,反之令r=mid-1。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<set>
#include<algorithm>
#include<iterator>
#define EPS 1e-12
#define INF 0x3f3f3f3f
typedef long long ll;
using namespace std;

int a[305];

int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,m;
		scanf("%d%d",&n,&m);
		int MAX=0;
		int sum=0;
		for(int i=0;i<n;i++)
		{
			scanf("%d",&a[i]);
			sum+=a[i];
			if(a[i]>MAX)
				MAX=a[i];
		}
		int l=MAX,r=sum;
		while(l<=r)
		{
			int mid=(l+r)/2;
			int cnt=1;
			sum=0;
			for(int i=0;i<n;i++)
			{
				sum+=a[i];
				if(sum>mid)
				{
					sum=a[i];
					cnt++;
				}
			}
			if(cnt<=m)
				r=mid-1;
			else
				l=mid+1;
		}
		printf("%d\n",l);
	}
	return 0;
}

 

POJ 3104

http://poj.org/problem?id=3104

 

It is very hard to wash and especially to dry clothes in winter. But Jane is a very smart girl. She is not afraid of this boring process. Jane has decided to use a radiator to make drying faster. But the radiator is small, so it can hold only one thing at a time.

Jane wants to perform drying in the minimal possible time. She asked you to write a program that will calculate the minimal time for a given set of clothes.

There are n clothes Jane has just washed. Each of them took ai water during washing. Every minute the amount of water contained in each thing decreases by one (of course, only if the thing is not completely dry yet). When amount of water contained becomes zero the cloth becomes dry and is ready to be packed.

Every minute Jane can select one thing to dry on the radiator. The radiator is very hot, so the amount of water in this thing decreases by k this minute (but not less than zero — if the thing contains less than k water, the resulting amount of water will be zero).

The task is to minimize the total time of drying by means of using the radiator effectively. The drying process ends when all the clothes are dry.

Input

The first line contains a single integer n (1 ≤ n ≤ 100 000). The second line contains ai separated by spaces (1 ≤ ai ≤ 109). The third line contains k (1 ≤ k ≤ 109).

Output

Output a single integer — the minimal possible number of minutes required to dry all clothes.

Sample Input

sample input #1
3
2 3 9
5

sample input #2
3
2 3 6
5

Sample Output

sample output #1
3

sample output #2
2

题目大意:有一堆衣服和一个散热片,给出每个衣服的潮湿程度,散热片一次只能给烘一件衣服,这衣服每分钟潮湿度减少k,其他的在空气中的衣服每分钟潮湿度减少1,问你使所有衣服全部晾干的最短时间是多少。

思路:最短时间是1,对潮湿程度进行排序,最长时间是a[n-1]。二分判断在当前mid值下,烘干所有衣服所花费的时间是否大于mid,若大于mid,必定不满足题意,我们可以令l=mid+1,否则令r=mid-1。我们用cnt表示烘干衣服所花费的时间,遍历数组,如果a[i]<=mid,那么就没必要用散热片烘干了,反之,我们假设这件衣服需要t次才能烘干,那么必定有t*k+mid-t>=a[i],化简可以得到:t>=(a[i]-mid)/(k-1);用函数ceil(x)可以得到大于等于x的最小整数。(x是double型)

#include<iostream>
#include<cstdio>
#include<cmath>
#include<set>
#include<algorithm>
#include<iterator>
#define INF 0x3f3f3f3f
typedef long long ll;
using namespace std;

int a[100005];

int main()
{
	int n,k;
	while(~scanf("%d",&n))
	{
		for(int i=0;i<n;++i)
			scanf("%d",&a[i]);
		scanf("%d",&k);
		sort(a,a+n);
		if(k==1)
		{
			printf("%d\n",a[n-1]);
			continue;
		}
		int l=1;
		int r=a[n-1];
		while(l<=r)
		{
			int mid=(l+r)/2;
			int cnt=0;
			for(int i=0;i<n;++i)
			{
				if(a[i]>mid)//不需要放到散热片上
					cnt+=ceil((a[i]-mid)*1.0/(k-1));
				if(cnt>mid)
					break;
			}
			if(cnt<=mid)
				r=mid-1;
			else
				l=mid+1;
		}
		printf("%d\n",l);
	}
	return 0;
}

 

最大化最小值问题:(在满足题意的情况下求最大值)

POJ 2456

http://poj.org/problem?id=2456

Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,...,xN (0 <= xi <= 1,000,000,000).

His C (2 <= C <= N) cows don't like this barn layout and become aggressive towards each other once put into a stall. To prevent the cows from hurting each other, FJ want to assign the cows to the stalls, such that the minimum distance between any two of them is as large as possible. What is the largest minimum distance?

Input

* Line 1: Two space-separated integers: N and C

* Lines 2..N+1: Line i+1 contains an integer stall location, xi

Output

* Line 1: One integer: the largest minimum distance

Sample Input

5 3
1
2
8
4
9

Sample Output

3

Hint

OUTPUT DETAILS:

FJ can put his 3 cows in the stalls at positions 1, 4 and 8, resulting in a minimum distance of 3.

Huge input data,scanf is recommended.

题目大意:大概就是把c头羊放到n个椅子上(英语不好ORZ),求羊与羊之间间隔的最大值。

思路:读入n个椅子的位置并进行排序,下限就是a[i]-a[i-1]的最小值,上限就是两头羊的时候,a[n-1]-a[0],然后二分,看在当前mid值的情况下,能放入多少个羊,如果可以放入的羊的个数小于n,此时的mid值必定不满足题意,我们修改r=mid-1(注意!这里是修改r而不是修改l,因为要找最大值,所以我们在不满足题意的情况下才修改上限);反之我们令l=mid+1。当然最后打印的值也要更改为r。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<set>
#include<algorithm>
#include<iterator>
#define INF 0x3f3f3f3f
using namespace std;

int a[100005];

int main()
{
	int n,c;
	scanf("%d %d",&n,&c);
	for(int i=0;i<n;++i)
		scanf("%d",&a[i]);
	sort(a,a+n);
	int MIN=INF;
	for(int i=1;i<n;++i)
		if(a[i]-a[i-1]<MIN)
			MIN=a[i]-a[i-1];
	int l=MIN,r=a[n-1]-a[0];
	while(l<=r)
	{
		int mid=(l+r)/2;
		int cnt=1;
		int t;
		int cur=a[0];
		while(1)
		{
			t=lower_bound(a,a+n,cur+mid)-a;
			if(t!=n)
			{
				++cnt;
				cur=a[t];
			}
			else
				break;
		}
		if(cnt<c)
			r=mid-1;
		else
			l=mid+1;
	}
	printf("%d\n",r);
	return 0;
}

 

目前刷的题还是太少了,不知道这种二分写法有没有局限性,欢迎指出不足! 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二分的经典问题 最大化最小值和最小化最大值 的相关文章

  • P1102 A-B 数对

    include
  • 二分

    林大oj981 vd的电话簿 table width 100 border 0 tbody tr style height 1 td h1 style color rgb 0 51 255 description h1 td tr tr s
  • 洛谷借教室

    之前写过 再过一遍其实不会 题目描述 在大学期间 经常需要租借教室 大到院系举办活动 小到学习小组自习讨论 都需要向学校申请借教室 教室的大小功能不同 借教室人的身份不同 借教室的手续也不一样 面对海量租借教室的信息 我们自然希望编程解决这
  • 包裹快递

    包裹快递 背景 小K成功地破解了密文 但是乘车到X国的时候 发现钱包被偷了 于是无奈之下只好作快递员来攒足路费去Orz教主 描述 一个快递公司要将n个包裹分别送到n个地方 并分配给邮递员小K一个事先设定好的路线 小K需要开车按照路线给的地点
  • 【LeetCode】二分法总结

    二分法总结 二分模板 找第一个大于等于target的 找第一个大于target的 33 搜索旋转排序数组 34 在排序数组中查找元素的第一个和最后一个位置 木头切割 二分模板 满足条件就写l mid 或 r mid 找第一个大于等于targ
  • A--玉米大炮--2022河南萌新联赛第(三)场:河南大学

    输入 3 3 1 1 2 2 3 3 输出 0 说明 开始时 小蓝控制所有大炮立即发射炮弹 僵王博士受到 666 点伤害 直接被击溃 示例2 输入 2 20 5 1 5 3 输出 2 说明 开始时 小蓝控制所有大炮立即发射炮弹 僵王博士受到
  • 二分的经典问题 最大化最小值和最小化最大值

    有点长 可以选自己想看的部分看 不过建议把刚开始的介绍看完 不多说 先来一个在升序无重复元素的数组中二分搜索的板子 l r 2 mid可能会爆int这种细节问题我们就放一边 int a MAX int Binary Search int v
  • Pie POJ - 3122【贪心、二分】

    该题连接 这是一道英文题 所以这里就不放原题了 我写一下它的题意 主人要开一个party 而主人有N个派 他要宴请F个人 也就是要有F 1个人要吃派 但这些人又很挑剔 他们每个人吃派只吃一种派 并且还不能容忍其他人吃的派比自己多 所以这就是
  • p1m2(二分)

    题目 2018百度之星 http acm hdu edu cn showproblem php pid 6383 二分 操作次数满足有序性 用二分 代码 include
  • 洛谷 P2249 【深基13.例1】查找

    题目链接 https www luogu com cn problem P2249 include
  • NYOJ 586 疯牛 & POJ 2456(二分搜索 + 贪心)

    疯牛 时间限制 1000 ms 内存限制 65535 KB 难度 4 描述 农夫 John 建造了一座很长的畜栏 它包括N 2 lt N lt 100 000 个隔间 这些小隔间依次编号为x1 xN 0 lt xi lt 1 000 000
  • (今日头条面试题)剪绳子(二分带详细思路)

    有N根绳子 第i根绳子长度为Li 现在需要M根等长的绳子 你可以对N根绳子进行任意裁剪 不能拼接 请你帮忙计算出这M根绳子最长的长度是多少 输入格式 第一行包含2个正整数N M 表示原始绳子的数量和需求绳子的数量 第二行包含N个整数 其中第
  • 剑指 Offer 53 - I. 在排序数组中查找数字 I

    题目链接 53 I 在排序数组中查找数字 I 思路分析 利用二分查找即可 class Solution public int search vector
  • 学算法,先从二分查找开始吧

    总纲 思路很简单 细节是魔鬼 分为三个常用场景 寻找一个数 寻找左侧边界 寻找右侧边界 最后给出力扣上的题目例子 还可以在GitHub上观看哦 AlgorithmNotes 基础框架 int binarySearch int nums in
  • Can you solve this equation?(二分)

    Problem Description Now given the equation 8 x 4 7 x 3 2 x 2 3 x 6 Y can you find its solution between 0 and 100 Now ple
  • 【模板】二分

    文章目录 1 整数二分 1 1 寻找 x 或 x 的后继 1 2 寻找 x 或 x 的前驱 1 3 模板 1 4 解题步骤 2 实数二分 本文的二分模板来自 算法竞赛进阶指南 1 整数二分 对于整数域上的二分 需要注意终止边界 左右区间取舍
  • 洛谷P1182-数列分段(详解)

    题目 给定一个长度为n的数列A 要求将它分为m段 要求每段连续 且每段和的最大值最小 N lt 10e5 m lt n Ai之和不超过10e9 这题一看就知道我不会 所以很老实的去看了看题解 题解也真是避重就轻 重要的地方就说 这个要自己思
  • 信息学奥赛一本通 1240:查找最接近的元素

    题目链接 http ybt ssoier cn 8088 problem show php pid 1240 include
  • 贪心+二分解决最大值最小、最小值最大问题

    在刷题时 总会遇到求最大值最小 最小值最大问题 也许它会暗喻是这样的一个问题 对于这样的一个问题 你会发现用dp和枚举都会超时超内存 或者说很麻烦 所以这是一个比较简单的解题方式 二分逼近思想 对于难以直接确定解的问题 采取二分枚举 检验的
  • Min Difference 二分优化

    题目链接 暴力的时间复杂度是O n 2 n 2 n2 只能在查询的时候优化一下 可以手写一个左闭右开的二分 也可以使用库函数 l

随机推荐

  • JavaScript基础

    W3C 结构化语言标准 HTML XHTML XML 表现语言标准 CSS 行为语言标准 ECMAScript JS 有的时候代码没错 就是不显示 原因你得变量 定义在了function 函数的外面 document 向页面输出内容 ale
  • 剑指offer—40.最小的K个数—分析及代码(Java)

    剑指offer 40 最小的K个数 分析及代码 Java 一 题目 二 分析及代码 1 排序 1 思路 2 代码 3 结果 2 Partition 1 思路 2 代码 3 结果 3 堆 1 思路 2 代码 3 结果 三 其他 一 题目 输入
  • vue3中的ref,toRef,toRefs三个是干嘛的,有什么作用呢。

    1 ref的使用 ref 接受一个原始值 返回一个具有响应式的对象 对象有一个value属性 其值就是所传递的原始值 ref是做的一个拷贝关系 修改对象msg的值 不会影响对象obj 视图会发生变化 import ref from vue
  • 蓝桥杯单片机组经验分享之(三)各模块用法(3)继电器、蜂鸣器

    继电器和 有源 蜂鸣器用法类似LED 挂载在锁存器U9上 因为继电器和蜂鸣器需要提供较大的驱动电流 锁存器驱动能力不够 因此锁存器后加入了ULN2003提高带负载能力 驱动电流型设备 连接如下图 继电器 蜂鸣器分别接于QUT5 OUT7 锁
  • wps图表横纵坐标怎么设置_wps怎么切换横纵坐标/excel图表怎么切换横纵坐标

    怎样将excel中图表的横纵坐标互换 数据那边有个切换行列 怎么在excel把横纵坐标互换 你是指用excel制作的图标吗 你把数据先进行转置就好了 EXCEL图表中 如何将横坐标和纵坐标更换一下 右键点选图表数据区域 选择数据 看到切换行
  • 解决电信劫持的快速办法!

    DNS被劫持后的表现 打开一个正常的网站 电脑的右下角回莫名其妙的弹出一些小广告 打开一个下载链接 并不是自己所需要的东西 浏览器输入一个网址后回车网页跳转到其他网址的页面 iis7网站监控 测DNS污染检测 网站打开速度检测 网站是否被黑
  • windows下多个python版本共存

    不想使用virtualenv来管理多个python版本的 可以通过修改python exe的名字 然后加入环境变量 运行时通过名字区分即可 参考链接 https www cnblogs com pxuan p 6408823 html
  • 什么是Spring IOC 容器?

    Spring IOC 负责创建对象 管理对象 通过依赖注入 DI 装配对象 配置对象 并且管理这些对象的整个生命周期
  • 根据权重随机选取指定条数记录的简单算法实现(C#)【含源代码】

    原文地址 http www cnblogs com foolin archive 2012 03 22 2412632 html 一 应用场景 有时我们需要从一些列数据中根据权重随机选取指定条数记录出来 这里需要权重 随机 我们根据权重越大
  • 用ACM LaTeX最新模板(acmart)时遇到的作者单位和地址无法合并的问题

    这个问题只是简单记录一下 目前并没有太好的解决方案 这几天在准备一篇论文的Camera Ready版本 发现这个问题很让人苦恼 以前我们用ACM的LaTeX模板 如果多个作者属于一个单位 可以用 sharedaffiliation这种方式
  • 日常健康管理

    0分贝0dB是人们刚刚能听到的最微弱的声音听觉下限 30dB40dB是较为理想的安静睡眠环境 超过50dB会影响睡眠和休息70dB会干扰谈话 影响工作效率长期生活在90分贝以上的噪声环境 会严重影响听力和引起神经衰弱 头疼 血压升高等疾如果
  • 怎么看空调定时成功_空调定时怎么设置

    空调是我们常用的电器 尤其是在炎热的夏季空调是我们必须使用的家电 夜晚的时候一直开着空调很容易着凉 这个时候我们可以开启空调的定时键 今天想跟大家说一说空调定时怎么设置 希望可以给大家带来帮助 一 空调定时怎么设置 1 首先我们先打开空调
  • CSV文件中的逗号、双引号的转义。读写带特殊字符的csv文件。

    如果字段中有逗号 该字段使用双引号 括起来 如果该字段中有双引号 该双引号前要再加一个双引号 然后把该字段使用双引号括起来 字段处理前 字段处理后 abc d2 abc d2 ab c d2 ab c d2 abc abc 参考文章 htt
  • STM32F103ZET6【HAL函开发】STM32CUBEMX------2.GPIO输入、按键外部中断

    一 硬件介绍 正点原子战舰开发板 主控芯片STM32F103ZET6 两个LED接到PB5 PE5 三个按键PE2 PE3 PE4接GND 一个按键PA0接VCC3 3 二 STM32CUBEMX基础配置 2 1 晶振配置 如果你的板子上外
  • DC-DC模块输入端电容对12V电源纹波的影响

    1 目标 说明DC DC模块输入端极性电容对供电源纹波的影响 强调DC DC输入端极性滤波电容的重要性 2 DC DC模块介绍 DC DC模块的输入电源大小为12V 核心芯片为MP24943 输出电源大小为5V 电路原理图如下 输入端不添加
  • Java千百问_04异常处理(007)_常见的java异常有哪些(非运行时)

    1 常见的java运行时异常有哪些 了解非运行时异常看这里 什么是java中的异常 常见的运行时异常看这里 常见的运行时异常有哪些 我们所说的常见异常是jdk或者其他常用第三方jar中的异常 出现频次很高的异常 常见的非运行时异常 即检查异
  • 2019 校招多益网络软件开发java 笔试题

    刚做完 真的又凉了 编程题没写出来 心累了 而且问答题好多其实都是之前看过的 可是只有模糊的印象 则真的好气呀 也算给自己敲了警钟吧 要用心记 用心总结 多益的笔试题型挺多的 难度算还好的 毕竟只有一道编程题 奈何我没写出来 题型 选择题
  • 15b万用表怎么测电容_万用表怎么用?福禄克15B+一机详解万用表的使用方法

    随着大众消费等级和安全意识的不断提升 在不断加购电器的同时 人们愈发重视电路安全 万用表渐渐从电工行业专用仪器成为了家庭标配工具之一 然而 很多人把万用表买回家之后 却对着表盘上密密麻麻的符号一筹莫展 最后只能放在角落里落满灰尘 那么 万用
  • Mysql索引

    创建索引 索引能提高查询速率 1 最常见的是主键 默认加了索引 2 普通创建索引方法 create index 名字 on 表名 列名 3 联合索引 create index 索引名 on 表名 列名 列名 列名 4 复合索引查询的时候遵守
  • 二分的经典问题 最大化最小值和最小化最大值

    有点长 可以选自己想看的部分看 不过建议把刚开始的介绍看完 不多说 先来一个在升序无重复元素的数组中二分搜索的板子 l r 2 mid可能会爆int这种细节问题我们就放一边 int a MAX int Binary Search int v