当前位置: 首页 > 编程日记 > 正文

2018.3.15校内互测总结-点分治-线段树

这是曾来过咱们学校集训的一位大神出的~

T1

题目大意

给出一棵带边权的无根树,求树上前$k$大的路径的长度。

$1 \leq n \leq 200000$

题解

想了一上午点分治,却发现只会$O(nlog^3n)$的......

正解是二分第$k$大的权值,用点分治判断,统计路径时用两个指针扫一下权值序列就行了......

这里记录一种巧妙的,常数更小的方法。

考虑序列求前$k$大路径的经典操作:

维护一个大根堆,初始将每个左端点和它所能到达的最远右端点以及距离构成的三元组压入堆中,按照距离排序。

每次从堆顶弹出一个区间,就把当前左端点的所有右端点中,与当前弹出右端点最接近但是更劣的一个右端点作为该三元组的新右端点,重新计算距离并将三元组压回堆内,重复$k$次即可取得前$k$大路径。

现在考虑如何在树上运用这种操作:

还是考虑点分治,对于每次点分治,找出分治子树中的每个节点所属的子树,及这个点到分治重心的距离,打包成二元组存下来。

可以发现,只有子树不同的两个节点构成的路径才是有效的。因此,对于每个分治重心,将打包好的二元组按距离从大到小排序成一个序列,从后往前预处理出每个二元组向后第一个所属子树与当前二元组不同的位置。

将每个二元组与其向后第一个所属子树与当前二元组不同的位置处的二元组打包后压入一个全局堆里,作为一条路径。

这个堆的功能类似序列版本时的堆,每次弹出堆顶元素后,将这个元素左端点在对应分治重心的序列中,下一个与当前左端点所在子树不同的二元组作为新的右端点,压回堆中。

可以发现,对于每个分治重心的每个二元组,最多只有一个对应的二元组在全局堆中,空间复杂度$O(nlogn)$。同时,对于维护最外层的堆,和对二元组序列的排序两部的复杂度均为$O(nlog^2n)$,因此时间复杂度为$O(nlog^2n)$。

T2

题目大意

维护一个序列,要求支持区间最大值、区间并上一个数、区间或上一个数三种操作。

题解

出于各种原因十天前刚考过原题大家都$A$了这题~

考虑线段树。

考虑在暴力递归到底以修改每个线段树节点的基础上添加优化,那么显然有一个结论:

若一个区间某一位的值全部相同,那么对于这一位来说,接下来进行任何的修改操作,都只需要区间打$tag$,而不用暴力递归到底。

具体实现时,只需要维护一下区间或和和区间并和,并判断一下是否全为$0$或$1$即可。

然后,考虑位运算的结合律:

$(A&B|C)&D=(A&(B&D))|(C&D)$

$(A&B|C)|D=(A&B)|(C|D)$

于是维护区间或标记和区间并标记,下传时强制先做并再做或。

此时,只要在区间或时,判断一下修改的值有$1$的位置在当前区间上是否全为$0$或$1$,如果为真则打标记停止递归。区间并同理。

复杂度可通过势能分析证得是$O(nklogn)$。

T3

这是个暂时不会待填的坑~

转载于:https://www.cnblogs.com/zltttt/p/8577253.html

相关文章:

EntityFramework Core 学习笔记 —— 创建模型

原文地址:https://docs.efproject.net/en/latest/modeling/index.html 前言: EntityFramework 使用一系列的约定来从我们的实体类细节创建模型。我们可以钦定一些额外的映射配置来添加、重写实体类的哪些细节应该被这些约定所发现。 这篇文章讲述了一些无…

使用docker-compose进行多节点部署

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 创建数据目录及多节点目录 mkdir -p ~/workmeta/EduEthereumServerDeploy/deploy_2/{node1,node2} > cd ~/workmeta/EduEthereumServerDeploy/de…

石头剪刀布python代码_我的第一个python程序,石头剪刀布猜拳游戏

从决定学习python到今天,已经过去了好1个月,买的几本书还没一本看完的,惭愧。 忙不是借口,是时候来点计划,来点坚持。写点什么吧,算是学习的记录,也是对自己的鞭策。 今天写一个猜字游戏&#x…

CATransform3DRotate 实现左右,上下翻转效果

CGFloat m34 800; CGFloat value = -40;//(控制翻转角度) CGPoint point CGPointMake(0.5, 0.5);//设定翻转时的中心点,0.5为视图layer的正中 CATransform3D transfrom CATransform3DIdentity; transfro…

[UWP小白日记-10]程序启动屏(ios解锁既视感)

[UWP小白日记-10]程序启动屏(ios解锁既视感) 原文:[UWP小白日记-10]程序启动屏(ios解锁既视感)讲一下 微软爸爸的开发者大会2016又暴了个表达式动画和Windows.UI.Composition的API,好叼的样子。官方示例库GitHub 目前是…

比特币:区块链的最基础实现

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 我并不是说比特币本身注定要失败。我所指的是,我认为区块链纯粹作为货币的实施注定远没有世界认为的那么成功。这包括诸如Litecoin和Das…

python工具使用笔记

1、pip pip是Python官方推荐的包管理工具,在doc界面直接使用pip或者pip3命令即可,例如安装gensim: C:\Users\kayan.sjc>pip3 install --upgrade gensim 2、python2代码转换python3工具2to3.py python3不兼容python2,有时候需要…

stm32 cubemx hal 工程中 微秒延迟 delay_us

参考的正点原子的代码 测试平台 stm32f429i-disco 配了一个gpio 时钟 gpio /* USER CODE BEGIN 0 */ typedef uint8_t u8; typedef uint32_t u32;u8 fac_us;void delay_init(u8 SYSCLK) {#if SYSTEM_SUPPORT_OS //?????? OS.u32 reload;#endifHAL_SYSTICK_CLKSourceConfi…

ps制作20种特效文字_ps技巧:给照片制作特效(刀光剑影)

哈喽大家好,一段时间没有更新了非常抱歉。现在努力日更,给大家提供干货学习。今天我们的ps课程是制作特效。大家会觉得很难,但是并不是这样的。大家跟着小编的教程走,反复练习就很快学会啦。接下来我们就开始进入今天的学习吧&…

如何创建一个最小的区块链

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 这是我在一个外文网站上看到的一篇博文,作者通过50行代码写出了区块链的简化版本.麻雀虽小,但是五脏俱全.我觉得通过实践,这是了解区块链的一个好…

Linux 服务器上快速配置阿里巴巴 OPSX NTP服务

编辑文件 "/etc/ntp.conf",根据情况修改文件内容为: 互联网上的服务器:driftfile /var/lib/ntp/drift pidfile /var/run/ntpd.pid logfile /var/log/ntp.log restrict default kod nomodify notrap nopeer noquery restrict -6 default …

python爬取学校新闻_python-爬取校园新闻首页的新闻

1.作业代码 importrequestsfrom bs4 importBeautifulSoupfrom datetime importdatetime##1.用requests库和BeautifulSoup库,爬取校园新闻首页新闻的标题、链接、正文。# urlhttp://news.gzcc.cn/html/xiaoyuanxinwen/resrequests.get(url) res.encodingutf-8soupBea…

windows环境下,mysql的root密码丢失后重置方法

1、运行窗口输入 services.msc,检查mysql服务是否启动,如果启动手动停止或输入 net stop mysql 停止msyql服务。 2、打开cmd命令行,使用cd命令进入mysql 的bin目录 cd E:\TP\wamp\wamp\bin\mysql\mysql5.7.11\bin(此处是本地mysq…

区块链以及区块链技术总结

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 摘要:区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且…

UOJ#7. 【NOI2014】购票 | 线段树 凸包优化DP

题目链接 UOJ #7 题解 首先这一定是DP!可以写出:\[f[i] \min_{ancestor\ j} \{f[j] (d[j] - d[i]) * p[i] q[i]\}\] 其中\(d[i]\)表示树上\(i\)的深度。 整理一下式子:\[f[i] \min_{ancestor\ j} \{f[j] - d[j] * p[i]\} d[i] * p[i] q…

python中集合的元素可以是任意数据类型_Python之基本数据类型——集合数据类型...

集合set(可变的数据类型): 数据结构以大括号{}表示,各元素逗号隔开,例:{1,2,3,4}。 集合特征:无序,元素不重复 创建集合: s{1,2,3} pirnt(s) #---------------{1,2,3} sset(hello) print(s) #--…

uv_timer_t的释放问题

项目中的计时器模块是用libuv做的,今天发现了点问题,是释放uv_timer_t引起了,我是在uv_timer_start的回调里释放该结构的,这里是不能释放了,因为回调完后,库还会使用uv_timer_t里的数据,之前没出…

区块链分支循环

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 分支循环 程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。 一、条件语句 1.1 If语句 语法格式…

c和python区别_C语言和python的区别

Python可以说是目前最火的语言之一了,人工智能的兴起让Python一夜之间变得家喻户晓,Python号称目前最最简单易学的语言,现在有不少高校开始将Python作为大一新生的入门语言。本萌新也刚开始接触Python,发现Python与其他语言确实有…

(1)访问控制 (2)final关键字 (3)对象创建的过程 (4)多态

1.访问控制(笔试题)1.1 常用的访问控制符 public - 公有的 protected - 保护的 啥也不写 - 默认的 private - 私有的 1.2 访问控制符的比较 访问控制符 访问权限 本类 本包中的类 子类 其他包的类---------------------------------------------------------------------------…

MySQL安装ODBC驱动出现126错误

需求:MySQL导入ODBC文件,需要安装ODBC驱动。 问题:本机的MySQL是5.0版本,刚开始下载的是5.3ODBC,然后出现以下错误: 解决方法:ODBC版本应该与MySQL版本一致,重新安装5.0版本的ODBC即…

超级账本的由来

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 1.1.1 超级账本的由来 当你拿起这本书开始阅读的时候,说明你对区块链技术已经有了相关的了解,而且想通过自己的努力或团队合…

你为什么应该经常访问招聘网站?招聘网站至少有4个方面的价值!

一、缘起读大学的时候,有时候会感到很迷茫,不知道毕业之后可以做什么,自己能拿到多少的月薪。于是,就想到去参加一些公司的招聘。大二大三的时候,就去武大参加了武汉中地数码等3个公司的笔试。但是,没有交答…

python去重复行_python去除文件中重复的行实例

python去除文件中重复的行,我们可以设置一个一个空list,res_list,用来加入没有出现过的字符行! 如果出现在res_list,我们就认为该行句子已经重复了,可以再加入到记录重复句子的list中。 如下代码&#xff1…

限制TensorFlow只在CPU上运行的方法

笔记本是NVIDIA GeForce 940M的显卡,只有2G的显存,运行TensorFlow代码时候常出现OOM(Out of Memory)的错误,原因是batch_size设置得太大导致显存不足。如果想让代码仅仅运行在CPU下,可在原代码中加入如下代码: import …

比特币挖矿——区块链技术

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 说明 区块链具有数据运行公开、不可篡改、可溯源、跨国际、去中心化的特点。因此越来越多地被应用在各个领域。区块链主要技术包括:分布…

Python黑帽编程2.4 流程控制

Python黑帽编程2.4 流程控制 本节要介绍的是Python编程中和流程控制有关的关键字和相关内容。 2.4.1 if …..else 先上一段代码&#xff1a; #!/usr/bin/python # -*- coding: UTF-8 -*- xint(input(请输入一个整数:)) if x0: print %d 0 % x elif x<0: print %d <0 % x…

【Flask】视图高级

# 视图高级笔记&#xff1a;### add_url_rule(rule,endpointNone,view_funcNone)这个方法用来添加url与视图函数的映射。如果没有填写endpoint&#xff0c;那么默认会使用view_func的名字作为endpoint。以后在使用url_for的时候&#xff0c;就要看在映射的时候有没有传递endpoi…

振动力学基础与matlab应用_【日文好书推荐】振动与噪声控制技术for机械设计者...

声海译读活动日文小组为大家推荐好书&#xff0c;《振动与噪声控制技术for机械设计者》作者&#xff1a;小林英男&#xff0c;欢迎大家围观讨论提出宝贵意见&#xff01;目录译文(一)译者&#xff1a;穆瑞林-天津科技大学前言第一章 机械设计开发•设计者对振动•噪声技术入门所…

区块链是互联网未来十年中举足轻重的技术

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 区块链是互联网未来十年中举足轻重的技术 区块链&#xff08;Blockchain&#xff09;&#xff0c;或者说分布式账本&#xff08;DLT, Distributed …