自闭集训 Day7

分治

主定理

由于我沉迷调题,这个地方没听课。

某些不等式

咕了

nth_element

使用快速排序的思想,选一个中间点,看左右有多少个。

期望复杂度\(O(n)\)。

首先把一个序列分成5份,每份大小\(n/5\),叠成一个矩阵,对每一列进行排序。

现在中间一行就是每一列的中位数,递归下去求它的中位数。

然后把中位数比他小的列放左边,比他大的放右边。

于是我们知道至少\(0.3n\)比他小/比他大,也就是至多\(0.7n\)比他小/比他大。

于是我们找到了一个比较好的轴点,用上面的方法分治下去。

然后就\(T(n)=T(0.2n)+T(0.7n)+O(n)=O(n)\)。

但这个算法常数巨大……

CF958E3

首先有结论:任意\(2n\)个点都存在合法方案。

为什么?考虑某个不合法方案的交叉,可以把边扭一下,于是总长度会变小。又因为总长度不可能无限减小,于是就有了。

然后怎么求答案呢?

咕了

CF429D

明眼人一眼就看出这是个距离的形式,然后就变成平面最近点对了……

我可能就是瞎……

CF938G

裸线段树分治+并查集+线性基。

某题

点数减边数裸题。

显然对于一个点集,满足条件的点\(u\)构成一个连通快(即一棵树),又因为树的点数减边数为1,所以直接统计即可。

CF1010F

怎么就讲过了啊/kk

令\(b_i=w_i-\sum_v w_v\),于是条件等价于\(b_i\ge 0​\)。

对于一个合法连通块,\(\sum b_i=X\)。

于是就可以开始对\(b_i\)计数了。

于是只要定下了连通块大小为\(m\),方案数就是\({X+m-1\choose m-1}\)。

于是就转化为原来的一道题了,就做完了。

某题

支持动态加有向边、查询相互可达的\((u,v)\)个数。

我们发现动态维护强连通分量似乎非常不可做,所以可以对于每一条边\((u,v)\),判断\(u,v\)什么时候会在同一个强连通分量里面。

显然这个东西满足单调性,但数据范围不允许我们挨个二分,所以我们使用整体二分。

定义函数\(solve(l,r,ql,qr)\)表示已知\([ql,qr]\)里面的边的时间都在\([l,r]\)里面,现在要求出每条边的时间。

二分一个\(mid=(l+r)/2\),然后把\([1,mid]\)里面的边都加进图里跑tarjan,这是最暴力的方法,显然过不了。但是我们注意到只要在递归\([l,mid]\)之后不把边清空,就可以只加\([l,mid]\)的边,然后用并查集缩一下点,复杂度就对了。

某题

做过,但咕了!

考虑把起点从上到下走,维护最短路树,那么可以感受到树上的父亲一定是从上变成左,再变成下,最多变两次。

然后如果一条边在\([l,r]\)没有变,那么可以缩起来。

于是就整体二分然后???

离线求逆元

求一个前缀积,然后大家都会。

树上并查集

树上分块+四毛子。

(四毛子似乎是一个叫做四个俄罗斯人的算法?)

然后就做到线性了??

咕了

Trajan LCA

离线lca,用树上并查集可以优化至\(O(n)\)?

2019暑期金华集训 Day7 分治的更多相关文章

  1. 2019暑期金华集训 Day7 动态规划

    自闭集训 Day7 动态规划 LOJ6395 首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可. 然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数 ...

  2. 2019暑期金华集训 Day6 杂题选讲

    自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\ ...

  3. 2019暑期金华集训 Day6 计算几何

    自闭集训 Day6 计算几何 内积 内积不等式: \[ (A,B)^2\le (A,A)(B,B) \] 其中\((A,B)\)表示\(A\cdot B\). (好像是废话?) 叉积 \[ A\tim ...

  4. 2019暑期金华集训 Day5 树上数据结构

    自闭集训 Day5 树上数据结构 前置知识 点分治 边分治 树链剖分 LCT Top Tree LCT时间复杂度 线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查 ...

  5. 2019暑期金华集训 Day5 生成函数

    自闭集训 Day5 生成函数 一般生成函数 无脑地把序列变成多项式: \[ \{a_i\}\rightarrow A(x)=\sum_{n} a_nx^n \] 形式幂级数 生成函数是一种形式幂级数. ...

  6. 2019暑期金华集训 Day3 字符串

    自闭集训 Day3 字符串 SAM 考虑后缀树. SAM的parent树是反串的后缀树,所以后面加一个字符的时候相当于往串前面加一个字符,恰好多出了一个后缀. 于是可以以此来理解SAM. 每一条路径对 ...

  7. 2019暑期金华集训 Day1 组合计数

    自闭集训 Day1 组合计数 T1 \(n\le 10\):直接暴力枚举. \(n\le 32\):meet in the middle,如果左边选了\(x\),右边选了\(y\)(且\(x+y\le ...

  8. 2019暑期金华集训 Day1 数据结构

    自闭集训 Day1 数据结构 CF643G 用类似于下面的方法,搬到线段树上. 如何合并两个集合?先全部放在一起,每次删掉最小的\(cnt_i\),然后把其他所有的\(cnt\)都减去\(cnt_i\ ...

  9. 2019暑期金华集训 Day3 图论

    自闭集训 Day3 图论 NOI2019 D2T1 没有真正建出图来的必要,可以直接打取\(\min\)的\(tag\). 也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集 ...

随机推荐

  1. Oracle scott解锁 以及连接数据库

    最近公司需要使用oracle数据库,本地安装oracle进行测试,需要连接到数据库,但是发现scott账号 is locked; 原因:默认Oracle10g的scott不能登陆. 解决:(1)con ...

  2. 前端开发 Vue Vue.js和Nodejs的关系

    首先vue.js 是库,不是框架,不是框架,不是框架. Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据. Vue.js 的核心是一个允许你 ...

  3. input中blur失去焦点事件与点击事件冲突时如何解决

    方法一 使用setTimeout $(function(){ $(".cy-name-input input").on({ focus:function() { $(". ...

  4. buffer和cache区别?

    写入数据到内存里,这个数据的内存空间称为缓冲区(buffer) 从内存读取数据,这个存储数据的内存空间称为缓存区(cache) 由于大部分网站以读取为主,写入为辅,所以并发写入一般不是问题.

  5. 在LINUX下ORACLE11.2.04的安装脚本及静默安装

    首先写好配置环境脚本 cd /opt vi oraclesetup #!/bin/bashecho "back file to filebackup"mkdir -p /opt/f ...

  6. Linux系统运维相关的面试题 (问答题)

    这里给大家整理了一些Linux系统运维相关的面试题,有些问题没有标准答案,希望要去参加Linux运维面试的朋友,可以先思考下这些问题.   一.Linux操作系统知识 1.常见的Linux发行版本都有 ...

  7. 右键tomcat找不到项目:There are no resources that can be added or removed from the server.

    右键Add and Remove找不到项目,会出现下面这个弹框: 之后在项目文件夹上右键(Java Build Path中引用的jdk的版本也需要和下面这个Project Facets中配置的java ...

  8. 云计算---记一次黑客攻击openstack创建的虚拟机

    一:问题定位 现象: 近期发现有几台openstack云主机被修改密码并被肉鸡. 黑客操作日志: -- :: ##### root tty1 : #### -- :: top -- :: ##### ...

  9. suse12安装详解

    1.部署步骤 1.1.启动安装程序 在启动页面上选择Installation,然后按Enter键,这将载入SUSE Linux服务器安装程序并以普通模式安装. 1.2.选择安装语言 Language和 ...

  10. 深度学习 吴恩达深度学习课程2第三周 tensorflow实践 参数初始化的影响

    博主 撸的  该节 代码 地址 :https://github.com/LemonTree1994/machine-learning/blob/master/%E5%90%B4%E6%81%A9%E8 ...