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

厦门网站建设 九来字节跳动广告代理商加盟

厦门网站建设 九来,字节跳动广告代理商加盟,昆明做网站那家好,旅游网站制作方案前置知识:权值线段树,动态开点。 引入 我们先来看一道题: 永无乡包含 nnn 座岛,给出每座岛的重要度的排名,名次用 111 到 nnn 来表示。一开始有 mmm 条边连接,接下来有 qqq 次操作。操作分两种&#xff…

前置知识:权值线段树,动态开点。

引入

我们先来看一道题:

永无乡包含 nnn 座岛,给出每座岛的重要度的排名,名次用 111nnn 来表示。一开始有 mmm 条边连接,接下来有 qqq 次操作。操作分两种:

  • B x y 表示在岛与岛之间修建一座新桥。
  • Q x k 表示询问当前与岛连通的所有岛中第重要的是哪座岛。

第一眼看上去会发现权值线段树好像可以做,但是他有加边条件,这就使得普通的权值线段树做不了,我们这时候就需要一个新的做法,也就是线段树合并。

思路

线段树合并的一个重要前提就是你们根节点的区间是相同的。

我们合并两棵线段树其实就相当于将一棵线段树的信息附在另一棵线段树上面。

我们假设我们要合并线段树 AAA 和线段树 BBB ,且把线段树 BBB 的信息附在线段树 AAA 上。

我们可以从根节点同时往下枚举,分以下几种情况。

  • 如果这个点线段树 AAA 和线段树 BBB 都有,那么我们继续往下枚举。
  • 如果这个点线段树 BBB 有而线段树 AAA 没有,我们就可以把线段树 AAA 中这个点的父亲的儿子设为这个点并且不在继续往下枚举。
  • 如果这个点线段树 AAA 有而线段树 BBB 没有,我们就可以不再往下枚举。
  • 如果这个点线段树 AAA 和线段树 BBB 都没有,我们也可以不用再往下枚举了。

到此,我们线段树就合并完了。

代码

void merge(int &x1, int x2, int l, int r) {//x1是线段树A现在枚举到的节点,x2是线段树B现在枚举到的节点,l、r实现再枚举到的区间。if (!x1 || !x2)//如果这个节点线段树A没有或者线段树B没有x1 = x1 + x2;//因为这两个点至少一个是0,所以他们的和就是另外一个点。else {int mid = (l + r) / 2;merge(tree[x1].lson, tree[x2].lson, l, mid);merge(tree[x1].rson, tree[x2].rson, mid + 1, r);updata(x1);//记得合并完后要更新这个节点}
}

例题

  • 永无乡:洛谷
  • [USACO17JAN]Promotion Counting P:洛谷
http://www.tj-hxxt.cn/news/80672.html

相关文章:

  • wordpress网站转app插件下载深圳百度竞价托管公司
  • b2b免费网站建设域名注册入口
  • 网上学编程的有哪些比较好的网站南宁seo外包服务
  • 上海城乡建设委员会的网站农技推广
  • 网站建设 重点抖音seo运营模式
  • 提供邢台专业做网站廊坊关键词排名首页
  • 软路由系统如何做网站宁波正规优化seo软件
  • 网站的后台在哪儿百度点击软件还有用吗
  • 企业网站建设须知百度关键词搜索热度查询
  • 个人网站要备案嘛开一个网站需要多少钱
  • 深圳房地产网站设计百度投放广告平台
  • 无网站如何做淘宝客做引流推广的平台
  • 怎么做阿里巴巴外贸网站百度公司官网招聘
  • 怎样建设企业网站免费浏览网站推广
  • 做cf网站精准营销名词解释
  • 爱用网站建设新闻株洲最新
  • 驻马店高端网站建设绍兴百度推广优化排名
  • 爱 做 网站吗推广软文平台
  • 江苏网站建设公司哪家好二十条优化措施
  • app网站制作要多少钱百度权重网站排名
  • 区块链软件开发全国seo搜索排名优化公司
  • 郑州做网站优化二级域名网址查询
  • 做区位分析的网站环球军事新闻最新消息
  • 北京网站建设seo合肥网络公司排名
  • 百度网盟推广怎么选择投放网站百度关键词点击器
  • 上海建设公司注册seo报价单
  • 西安做网站seo免费网站的平台
  • 新浪云服务器做网站关键词筛选
  • 邢台哪儿做网站便宜电子商务专业就业方向
  • 深圳做网站公司广告主平台