二分搜索 51Nod1090 3个数和为0

超详解“二分法查找”,一看就会! 二分法往简单明了就三个步骤:1. 对半折 2. 查找中间值(mid) 3.缩小区间(看与mid的关系再决定,往左+1或者往 右-1) 阅读详情

基准时间限制:1 秒 空间限制:131072 KB 分值: 5  难度:1级算法题
 收藏
 关注
给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序。
Input
第1行,1个数N,N为数组的长度(0 <= N <= 1000)
第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)
Output
如果没有符合条件的组合,输出No Solution。
如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则继续按照第二小的数排序。每行3个数,中间用空格分隔,并且这3个数按照从小到大的顺序排列。
Input示例
7
-3
-2
-1
0
1
2
3
Output示例
-3 0 3
-3 1 2
-2 -1 3
-2 0 2
-1 0 1

二分搜索的简单题

如果是暴力的话,需要三个循环,而n的最大值是1000

三个循环时间复杂度是O(n^3),肯定会超时的

//	AC 

#include<cstdio> 
#include<cstring>
#include<algorithm>
using namespace std;
int a[1009];
int n;
int binary_search(int l,int r,int x)
{
//	int l=0,r=n;//之前这里是这样写的,就是在所有的里边查找x 
	while(l<=r)//原来写的是  l<r    WA了好几发 
	{
		int i=(l+r)/2;
		if(a[i]<x)		l=i+1;
		else if(a[i]>x)	r=i-1;
		else			return i;
	}
	return -1;
}
int main()
{
	while(~scanf("%d",&n))
	{
		for(int i=0;i<n;i++)	scanf("%d",&a[i]);
		sort(a,a+n);
//		if(n<3)	printf("No Solution\n");//这里不加也行 
		int k=1;
		for(int i=0;i<n;i++)			
			for(int j=i+1;j<n;j++)
			{
				int x=-(a[i]+a[j]);
				int z=binary_search(j+1,n-1,x);
				if(z==-1)	continue;
				else if(a[i]<=a[j]&&a[j]<=a[z])//要注意这三个数的大小顺序 
				{
					printf("%d %d %d\n",a[i],a[j],a[z]);
					k=0;
				}
			}
		if(k)	printf("No Solution\n");
	}
	return 0;
}













学习LaTeX数学公式的一些常用函数 在优快云优快云优快云里写博客 数学公式是必不可少的内容 恰好MarkdownMarkdownMarkdown支持LaTeXLaTeXLaTeX的语法 所以就学习一些常用的公式 记录下来,以便以后查看 上下标 ^{上标} _{下标} \cdots和\dots是两种不同的点点点的表示方法 x^2_1,x^2_2,x^2_3,\cdots,x^2_n x…xx…xx\do... 阅读详情

相关推荐

AxMath行间公式转化为office公式求和符号以及编号显示问题

AxMath行间公式转化为office公式求和符号以及编号显示问题问题描述解决方法 问题描述 首先打出axmath公式,如下: 转换后的OfficeMath公式: 字体先不说,word公式字体默认cambria math且无法编辑。比较难受的一点是求和符号与后面的 ai+bi2a_i+b_i^2ai​+bi2​比例不匹配啊!正常的比例应该是: (虽然也不太正常,将就下) 解决方法 点击变换后的office公式右侧,选择更改为"显示" 可以看到,多了一些软回车符号(⬇),如果你想删除它,不要直接选中

weixin_43543177的博客 4655

51Nod-1090 3个数和为0【排序+二分查找】

1090 3个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序。 In

海岛Blog 1170

保姆级教程:用STM32单片机实现国标交流充电桩的CP信号检测(附完整代码)

本文详细介绍了基于STM32单片机实现国标交流充电桩CP信号检测的全流程,包括硬件设计、软件架构和充电控制实现。通过分压电路设计、ADC配置和状态机逻辑,确保充电过程的安全与可靠性,适用于新能源汽车充电桩开发。附完整代码和调试技巧,助力开发者快速掌握关键技术。

weixin_42641998的博客 252

51Nod1090 3个数和为0(二分查找)

这道题和基础题里面的1001 数组中和等于K的数对这道题差不多。 思路:先排升序,让数组里的两个数a[i]a[j]相加,然后在数组下标j之后找(0-a[i[-a[j])。 #include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; using namespace std; long long a[100...

WonderKing'blog 594

coze 怎么读取excel文件,使用循环,数据库完成LLM问答并存储

本文介绍了如何在Coze平台实现"Excel读取+循环处理+LLM问答+数据库存储"的工作流。主要分为三个步骤:1)使用代码节点解析Excel文件为问答对数组;2)通过循环节点遍历问答对,调用LLM节点生成回答;3)利用数据库节点将问答结果存储到Coze内置数据库中。文中提供了代码示例和节点配置说明,并强调了注意事项如Excel格式要求、LLM调用频率控制等。该工作流适用于批量构建知识库问答系统并持久化存储结果。

ZhangJiqun&191cm&85kg 1795

小白也能轻松部署 OpenClaw:OpenClaw可视化部署工具+OpenClaw可视化管理工具分享

分享一个OpenClaw可视化一键部署工具,帮你快速打造属于自己的AI助手 🚀

XiaoqiangClub的博客 6712

51nod 1090 3个数和为0 (二分_stl)

给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序。 Input 第1行,1个数N,N为数组的长度(0 <= N <= 1000) 第2 - N + 1行:A[i](-10^9

AK_HuangYC的博客 775

YOLO26 FP16/INT8混合量化实战:精度无损+速度拉满,边缘设备部署最优解

这是混合量化的灵魂,告诉量化器:哪些层不准动,保留FP16。"""判断是否为量化敏感层 → 是则豁免为FP16返回 True=敏感层(FP16),False=可量化(INT8)"""# 1. 检测头回归分支# 2. 小通道1×1卷积# 3. SiLU 激活# 4. 残差ShortcutYOLO26想要在Jetson、RK3588、昇腾、嵌入式NPU上真正落地,FP16/INT8混合量化是唯一最优解。它的核心逻辑不是玄学,而是工程上的精准取舍能量化的层,全部INT8榨性能;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 747

三个数和为零

给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序。 Input 第1行,1个数N,N为数组的长度(0 &lt;= N &lt;= 1000) 第2 - N + 1行:A[Math Processi...

开始的地方 636

RK3568平台(camera篇) MPP编码

同芯片的差异,为使用者提供统一的视频媒体处理接口(Media Process Interface,缩写 MPI)。瑞芯微提供的媒体处理软件平台(Media Process Platform,简称 MPP)是适用于瑞芯微芯片系列的。mpi_enc_test 的命令参数中,图像宽度(w)图像高度(h),码流类型(t)为强制要求参数,其他参。视频拷贝,缩放,色彩空间转换,场视频解交织(Deinterlace)数如输入文件(i),输出文件(o),编码帧数(n)等为可选参数。设置一些MPP的模式。

weixin_49303682的博客 7379

Cilium动手实验室: 精通之旅---5.Mutual Authentication with Cilium

在Cilium 入门实验室中,您将在受《星球大战》启发的场景中实施高级第 3-7 层网络策略。在实验结束时,您将实施强大的网络策略,并通过微分段保护 Empire 免受来自叛乱的攻击。在本实验中,您将重新部署《星球大战》演示应用程序,但除了网络策略之外,您还将了解如何在工作负载之间实施相互身份验证。

Q先生 1399

51Nod_1090 3个数和为0

                                            51Nod_1090 3个数和为0                                           http://www.51nod.com/Challenge/Problem.html#!#problemId=1090     题目 给出一个长度为N的无序数组,数组中的元素为整数...

逐梦者 283

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【51Nod】1090 - 3个数和为0(二分)

题目链接:点击打开链接 1090 3个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最

wyg1997 644

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

51NOD-1090 3个数和为0

1090 3个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则

pomake的博客 224

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

[51nod] 1090 3个数和为0 暴力+二分

给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序。 Input 第1行,1个数N,N为数组的长度(0<=N<=1000) 第2-N+1行:A[i...

weixin_30278311的博客 84

51nod1090三个数和为0(二分,vector)

给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序。 Input 第1行,1个数N,N为数组的长度(0 <= N <= 1000) 第2 - N + 1行:Aii(-10^9 <= Ai...

本该如此 294

51nod1090

#include #include using namespace std; int binsearch(int a[],int n,int x) {     int low,high,mid;     low=0;high=n-1;     while(low     {         mid=(low+high)/2;         if(a[mid]==x)

stay_accept的专栏 677

(有意思的水题)51nod-1090-

点击打开题目链接给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序。 Input 第1行,1个数N,N为数组的长度(0 &lt;= N &lt;= 1000) 第2 - ...

AC是绝对不可能的 249

二分查找详解

目录 1.简介 2. 例子 3. 第一种写法(左闭右闭) 3.1 正向写法(正确演示) 3.2 反向写法(错误演示) 4. 第二种写法(左闭右开) 4.1 正向写法(正确演示) 4.2 反向写法(错误演示) 5. 总结 写在前面: 主要解释了二分法的左闭右闭区间,左闭右开区间两种写法,并且每个写法都举了相应的反例,范围写错的话可能会出现的错误等… 1.简介 有一天小明到图书馆借了 N 本书,出图书馆的时候,警报响了,于是保安把小明拦下,要检查一下哪本书没有登记出借。小明正

m0_49264693的博客 8868

51nod 1267 4个数和为0(二分查找)好题!!!

给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No"。 Input 第1行,1个数N,N为数组的长度(4 <= N <= 1000) 第2 - N + 1行:A[i](-10^9  Output 如果可以选出4个数,使得他们的和为0,则输出"Yes",否则输出"No"。 Input示例 5 -1 1 -5 2 4

AK_HuangYC的博客 2216

51nod 1267 4个数和为0 二分查找

题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1267题意:给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出”Yes”,否则输出”No”。 Input 第1行,1个数N,N为数组的长度(4 <= N <= 1000) 第2 - N + 1行:A[i](-10^9 <= A[i] <= 10

弱智就要多努力 376

3个数和为0

给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序。Input第1行,1个数N,N为数组的长度(0 &lt;= N &lt;= 1000) 第2 - N + 1行:Aii(-10^9 &lt;= Aii &...

不二君 723

1090 3个数和为0

1090 3个数和为0 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序。 收起 输入 第1行,1个数N,N为数组的长度(0 <= N <= 1000) 第2 - N + 1行:A...

森宝的博客 549

Warshall算法求传递闭包

#include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; using namespace std; const int maxn=1e3+6; int a[maxn][maxn]; int n; int warshall(int a[][maxn]) { for(int i=0;i&lt;n;i++) {...

鸿杰 的博客 2640

数据结构作业——————二叉树的三种遍历方式

数据结构作业: 二叉树的建立 三种遍历方式 L:遍历左子树 D:访问根节点 R:遍历右子树 DLR:先序遍历 LDR:中序遍历 LRD:后序遍历 #include&amp;amp;lt;bits/stdc++.h&amp;amp;gt; using namespace std; typedef char ElemType; struct node{ ElemType data; nod...

鸿杰 的博客 1200
上一篇: CSU1022 菜鸟和大牛
下一篇: 二分搜索 51Nod 1267 4个数和为0
陶鸿杰
博客等级 码龄9年 93粉丝 298原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值