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

网站开发毕业设计中期检查表电脑网站开发者模式

网站开发毕业设计中期检查表,电脑网站开发者模式,不用php做网站,查域名服务器地址为什么把二分和离散化放一起:因为离散化其实是一种二分整数的过程。 二分 相信大家都接触过二分查找(折半查找),这就是二分的思想。 二分通过每次舍弃一半并不存在答案的区间,进而快速锁定要求的答案(二…

为什么把二分和离散化放一起:因为离散化其实是一种二分整数的过程。

二分

相信大家都接触过二分查找(折半查找),这就是二分的思想。

二分通过每次舍弃一半并不存在答案的区间,进而快速锁定要求的答案(二分一定有解,但解不一定就是答案,后面会说)

二分模板:

bool check(int x) {/* ... */} // 检查x是否满足某种性质// 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用:
int bsearch_1(int l, int r)
{while (l < r){int mid = l + r >> 1;if (check(mid)) r = mid;    // check()判断mid是否满足性质else l = mid + 1;}return l;
}
// 区间[l, r]被划分成[l, mid - 1]和[mid, r]时使用:
int bsearch_2(int l, int r)
{while (l < r){int mid = l + r + 1 >> 1;if (check(mid)) l = mid;else r = mid - 1;}return l;
}

说一下版子二为什么要+1:因为涉及到mid - 1,+1是为了防止数组越界的,l < r ,所以r > 0,所以(  + r + 1 >> 1) > = 1,因而r更新的时候一定大于等于0,这也就防止了越界。

当然这只是针对于整数二分的边界问题,浮点数二分就不用考虑这个多了,直接除2就可以。

例题:

1、AcWing 789. 数的范围 - AcWing

2、AcWing 790. 数的三次方根 - AcWing

题一:直接套用两个模板,二分出左右区间。判断-1的方法:首次二分出来的区间的下标对应的数组元素并不等于给定要查找的那个数。

题二:不要的左右边界设置成-n 和 n,这样无法处理小数的情况,因为他们的三次方根都会落在-n到n范围的外面,但它也会有解。这也解释了为什么二分一定有解,但是解不一定是答案(解不对)

离散化

先来看一下百科的离散化的定义:

离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。

通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:

原数据:1,999,100000,15;处理后:1,3,4,2;

原数据:{100,200},{20,50000},{1,400};

处理后:{3,4},{2,6},{1,5};

离散化,就是把一些分布很稀疏的数重新按着他的序号排序,比如我们现在有数据10^9、 1、 5000、 100000 这组数离散化之后的结果就是4、 1、 2、 3 可以看到结果其实就是他们的次序大小。

一般的我们先把这组数据排序然后在离散化,这样得到的结果就是1、2、3、4、5、6.... n.一组连续的整数,这样就可以存到数组里面然后随机访问。

当题目中给的数据范围很大,比如是-10^9到10^9,但是数据规模很小,如n = 10^5。这时候首当其中的就要考虑离散化。因为,我们无法创建一个合适大小的数组,所以基于数组随机访问的bucket等算法思想就无法使用,但当我们离散化之后就可以用一个10^5的数组去存放这些数,因为只有这些个数据有效。

在离散化的时候我们一般要考虑去重问题,可以理解成在同一个位置上存放两次数据,所以不需要给它重新分配下标。

然后说一下怎么去重:

unique函数:

他会把一段连续的数据内的相同元素删掉,并返回指向最后一个不重复元素的下一个地址的迭代器。

unique参数:两个维护范围的迭代器

这样我们就得到的了一个缩减版的数组和一个指向数组有效数据的下一个位置的指针,如果我们用vector的话调用erase函数把剩余的无效数据的部分释放掉就得到了一个无重复数据的容器。

现在我们得到了一个无重复数据的递增的vector,可以正式开始离散化了(离散化也是二分求下标的过程)。

离散化模板:

int find(int x)
{int l = 0, r = alls.size() - 1;while(l < r){int mid = l + r >> 1;if(alls[mid] >= x) r = mid;else l = mid + 1;}return r + 1;
}

解释一下参数:x为想要离散化数组的其中一个数据,返回值为离散化后的相对大小,或者叫新下标(这里是从1开始)。

例题:

这一题用得到知识点:离散化、前缀和、二分。

区间和

http://www.yayakq.cn/news/477589/

相关文章:

  • 怎么发布自己做的网站淘宝网站设计模板下载
  • 网站关键词搜索优化是怎么做的懒人凳子网站建设策划书
  • 建站平台 阿里巴巴太原集团网站建设
  • 网站建设租房网模块wordpress小机巧
  • 营销网站建设内容免费做个人网站
  • 做网站的可行性分析广州公司团建去哪里好
  • 广东省住房建设厅网站首页网站访问权限
  • tomcat 怎么做网站群辉做网站服务器配置
  • 优度网站建设黄浦区网站建设公司
  • 网站建设数据库微信开放平台注册
  • 网站对应的ip地址吗深圳便宜做网站
  • 大淘客网站如何建设wordpress分类做首页
  • 怎么自己做网站凑钱网站建设费用 开办费
  • 网站好的案例教育网站建设计划书
  • 佛山做网站公司哪家好c2c模式的典型代表
  • 百度移动端网站邯郸wap网站建设价格
  • 做百度微信小程序都有哪些网站房管局
  • 网站设计制作花多少钱触屏端网站开发
  • wordpress 照片墙 插件南阳网站seo推广公司哪家好
  • 投资20万做网站好吗wordpress即时聊天
  • 沈阳网站营销html5软件下载电脑版
  • 外贸网站做几种产品不会写程序如何建网站
  • 陕西服装网站建设无锡专业网站建设公司
  • 成都网站建设交易长沙营销型网页制作公司
  • wordpress建站模板丰镇网络推广
  • wordpress产品网站自己在本地建的网站 别人怎么访问教程
  • 棋牌类网站开发优化电池充电什么意思
  • 雍鑫建设集团网站环保类网站模板免费下载
  • 黑龙江住房和城乡建设部网站太仓市住房和城乡建设局官方网站
  • 品划网络做网站如何制作一个个人网站