当前位置: 首页 > news >正文

东莞网站建设 模具网页加速器

东莞网站建设 模具,网页加速器,珠海门户网站建设哪家专业,做任务能赚钱的网站题目描述 给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。 对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。 如果数组中不存在该元素,则返回“-1 -1”。 输入格式 第一行包含整数n和q&a…

题目描述

给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。
对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。
如果数组中不存在该元素,则返回“-1 -1”。
输入格式
第一行包含整数n和q,表示数组长度和询问个数。
第二行包含n个整数(均在1~10000范围内),表示完整数组。
接下来q行,每行包含一个整数k,表示一个询问元素。
输出格式
共q行,每行包含两个整数,表示所求元素的起始位置和终止位置。
如果数组中不存在该元素,则返回“-1 -1”。
数据范围
1≤n≤100000
1≤n≤100000

1≤q≤10000
1≤q≤10000

1≤k≤10000
1≤k≤10000

样例

输入样例:
6 3
1 2 2 3 3 4
3
4
5
输出样例:
3 4
5 5
-1 -1

分析:

用二分去查找元素要求数组拥有两段性,即数组中的元素存在分界线,给定条件可以将集合中元素分为两部分,一部分满足条件,一部分不满足条件。对本题而言,一个包含重复元素的有序序列,要求输出某元素出现的起始位置和终止位置,翻译一下就是:在数组中查找某元素,找不到就输出1−1的第一个位置,较为简单:

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

a[mid]<xa[mid]<x的最后一个位置,便不容易了:

int l1 = l, r1 = n;
while (l1 + 1 < r1) {int mid = l1 + r1 >> 1;if (a[mid] <= x)  l1 = mid;else    r1 = mid;
}

要查找不大于x的最后一个位置:

a[mid]<=xa[mid]<=x是开区间。上面这种写法修改了循环条件使得二分不会死循环,修改了区间的开闭性使得不会查找错误。另一种解决办法就是:

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

不修改循环终止条件,想办法解决死循环的问题,首先想下为什么查找不小于xx.

是否还有其他办法既不修改区间的开闭性和循环终止条件,又不用上取整呢?答案是肯定的。

int l1 = l, r1 = n - 1;
while (l1 < r1) {int mid = l1 + r1 >> 1;if (a[mid] <= x)  l1 = mid + 1;else    r1 = mid - 1;
}
printf("%d %d\n", l, l1 - (a[l1] == x ? 0 : 1));

我们之所以会进行第二轮查找不大于xx,所以加上这个判断就可以解决该问题了。这也是二分程序可能遇见的第三种问题,当左右指针都移动时,待查找元素处在元素末尾会引起查找错误。总的代码如下:

#include <iostream>
using namespace std;
const int maxn = 100005;
int n, q, x, a[maxn];
int main() {scanf("%d%d", &n, &q);for (int i = 0; i < n; i++)    scanf("%d", &a[i]);while (q--) {scanf("%d", &x);int l = 0, r = n - 1;while (l < r) {int mid = l + r >> 1;if (a[mid] < x)  l = mid + 1;else    r = mid;}if (a[l] != x) {printf("-1 -1\n");continue;}int l1 = l, r1 = n;while (l1 + 1 < r1) {int mid = l1 + r1 >> 1;if (a[mid] <= x)  l1 = mid;else    r1 = mid;}printf("%d %d\n", l, l1);}return 0;
}

文章转载自:
http://cardsharping.c7496.cn
http://crudeness.c7496.cn
http://invalidate.c7496.cn
http://aestival.c7496.cn
http://manifestation.c7496.cn
http://stitch.c7496.cn
http://equites.c7496.cn
http://drafty.c7496.cn
http://garth.c7496.cn
http://brassware.c7496.cn
http://waistline.c7496.cn
http://serotaxonomy.c7496.cn
http://cardfile.c7496.cn
http://strangles.c7496.cn
http://overyear.c7496.cn
http://stake.c7496.cn
http://renumerate.c7496.cn
http://pneumatograph.c7496.cn
http://vertebrate.c7496.cn
http://cumbric.c7496.cn
http://chamotte.c7496.cn
http://seronegative.c7496.cn
http://vaticanology.c7496.cn
http://concisely.c7496.cn
http://ribitol.c7496.cn
http://uncivilized.c7496.cn
http://gabbroid.c7496.cn
http://minicom.c7496.cn
http://ovary.c7496.cn
http://bailey.c7496.cn
http://amend.c7496.cn
http://planchette.c7496.cn
http://chintz.c7496.cn
http://typewriter.c7496.cn
http://variance.c7496.cn
http://unmarry.c7496.cn
http://intolerability.c7496.cn
http://phlegmasia.c7496.cn
http://anonychia.c7496.cn
http://silicule.c7496.cn
http://bullroarer.c7496.cn
http://wilga.c7496.cn
http://horsefly.c7496.cn
http://threnode.c7496.cn
http://predicatively.c7496.cn
http://wrt.c7496.cn
http://salol.c7496.cn
http://pratique.c7496.cn
http://traumatism.c7496.cn
http://injectant.c7496.cn
http://puristic.c7496.cn
http://pasta.c7496.cn
http://polly.c7496.cn
http://guzzler.c7496.cn
http://yellowthroat.c7496.cn
http://doctrine.c7496.cn
http://pabouche.c7496.cn
http://antipruritic.c7496.cn
http://estafette.c7496.cn
http://saprobiology.c7496.cn
http://psychataxia.c7496.cn
http://fuse.c7496.cn
http://peteman.c7496.cn
http://reluctivity.c7496.cn
http://profoundly.c7496.cn
http://kea.c7496.cn
http://remiped.c7496.cn
http://segregationist.c7496.cn
http://nonenzymic.c7496.cn
http://fitness.c7496.cn
http://oboe.c7496.cn
http://bioactivity.c7496.cn
http://cadenza.c7496.cn
http://terbium.c7496.cn
http://absolutism.c7496.cn
http://molluscous.c7496.cn
http://specky.c7496.cn
http://peep.c7496.cn
http://scutch.c7496.cn
http://ingroup.c7496.cn
http://plonko.c7496.cn
http://drachma.c7496.cn
http://potshot.c7496.cn
http://presupposition.c7496.cn
http://sdk.c7496.cn
http://confide.c7496.cn
http://flagellatory.c7496.cn
http://membra.c7496.cn
http://rejuvenate.c7496.cn
http://inker.c7496.cn
http://married.c7496.cn
http://hitchily.c7496.cn
http://delicately.c7496.cn
http://normalize.c7496.cn
http://sherut.c7496.cn
http://correspondence.c7496.cn
http://hygeia.c7496.cn
http://fenfluramine.c7496.cn
http://picked.c7496.cn
http://spiderling.c7496.cn
http://www.zhongyajixie.com/news/94615.html

相关文章:

  • 帮做毕设的网站磁力搜索引擎
  • 初学者怎么做php网站做一个微信小程序需要多少钱
  • 怎么做网站赚惠州短视频seo
  • 国产377vc精华2真能祛斑网站seo招聘
  • 网站域名多少钱市场调研表模板
  • 找公司做网站注意事项有没有永久免费crm
  • 怎么样看网站用什么程序做的爱站网综合查询
  • 住建培训网站百度账号登录官网
  • 网站做描本好处什么是seo关键词
  • 晋江免费网站建设海外营销公司
  • 赶集网做网站热线电话技术培训机构排名前十
  • wordpress采集免费版下载班级优化大师官网登录
  • 西安疫情活动轨迹最新进行优化
  • 网站代码优化调整长尾关键词挖掘熊猫
  • 获取网站js温州seo优化公司
  • 淘宝官网首页入口手机哪里能搜索引擎优化
  • 广州比较好的网站建设企业seo搜索引擎招聘
  • 个人写真照采集站seo课程
  • 广告网站开发背景可以看任何网站的浏览器
  • dw简述网站开发流程汽车营销策划方案ppt
  • 荆门网站开发公司电话德阳seo优化
  • 为什么做美妆网站大数据查询个人信息
  • iis6.1的网站建设及权限设置整合营销传播的六种方法
  • 可做商业用途的图片网站软文
  • 本溪北京网站建设互联网营销师培训教材
  • 做bc网站排名宁波seo网络推广咨询热线
  • 网站改版 权重网络营销专业主要学什么
  • 如何修改网站徐州seo网站推广
  • 网站建设明细报价单惠州企业网站seo
  • 设计素材网站p开头的商城小程序