可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最小费用最大流预处理混合图上莫比乌斯反演莫队带花舞蹈链并查集树状数组套主席树预处理动态DP分治FFT求多项式逆元对数函数的指数函数用可持久化并查集合并最小费用循环流上插头DP
这种类型的 dp 的特点就是大部分转移形如 \(f(i,j)\rightarrow f(i+1,j+1)\) 之类的,并且当以上转移出现时原数组被清空,这就可以用一个 deque 来维护,然后对于全局赋值/全局加,需要对每个位置维护一个时间戳,并记录上一次赋值/加是什么时候,以便标记下传。
(貌似可以用其他方式迅速计算的式子都可以变成一个简单的 dp 形式,然后用以上的方法维护?)
题目阴间的条件 \(i-w_i<m\)(其中 \(w_i\) 为前 \(i\) 个数的 mex)应该要想到换元 \(c_i=i-w_i\),那么 \(c_i<m\) 的形式显然会更适合 dp 以及后期的 dp 优化。接下来就是思考对于一个固定的序列 \(c_i\) 如何计算有几种符合条件的 \(p_i\)。
发现 \(p_i\) 的计数仅与 \(c_{i+1}\neq c_i+1\) 是哪些 \(i\) 有关,所以将它们设元 \(Y_i\)。对于 \(Y_1\le Y_2\ge Y_3\le Y_4\ge Y_5\le\dots\) 这样的形式,将所有小于等于号容斥成大于号应该是一个重要的思想。
所有 \(f(i,j)\rightarrow f(i+1,j')\) 且满足 \(j'-j\) 很小的转移都是可以考虑转化成多项式或者矩阵然后分治乘解决的。
二维平面应该只有两种办法:一种是扫右端点维护左端点,一种是猫树。
后者直接写出来会发现是两只 \(\log\),但是因为某种原因我们发现答案的下界是 \(2(\max(W,H)+1)\),所以最优矩形一定会跨越 \(x\) 轴中点或者 \(y\) 轴中点。于是猫树只用一层。
(这样用答案下界来限制算法的题目很少见啊)
简要题意:\(Q\) 次操作,每次操作可以加入平面上一个带权 \(w\) 的点 \((x,y)\) 或者查询所有“\(x\) 坐标不为 \(x_0\) 且 \(y\) 坐标不为 \(y_0\) 的点”的点权最大值。\(Q\le 10^6\),值域 \(10^9\),空间 4MB,时限 1s。
想到 KDTree,过不了。想到把平面分成 4 部分递归下去,需要值域线段树,空间 \(\log\),过不了。感觉蠢完了。
尽管是一道很蠢的题,我们还是要记住只保留有用节点的思想。什么是有用节点呢?如果一个节点被别人偏序了,或者被几个人一起偏序了,那它就无用了。
在这道题里,什么是偏序呢?对于若干个点,它们能够覆盖平面上的一个点集。如果一个点自己能覆盖的区域是比它大的点所覆盖的区域的子集,那它就没用了。否则它一定会使得这个覆盖区域的子集缩小。
然后发现这个覆盖区域只有以下几种情况:空集,除去一个十字,除去一行,除去一列,除去两个点,除去一个点,全集。
于是改变次数是 \(O(1)\) 的,有用点的个数也是 \(O(1)\) 的,直接维护即可。空间是 \(O(1)\) 的,时间是线性的。
简要题意:给定正整数序列 \(a\),每次操作可以给 \(a\) 的某个元素 \(+1\),求最小操作次数使得 \(a\) 中所有数异或和为 \(0\)。\(n\le 100\),值域 \(10^9\)。
大体思路:对于序列中一个数,每次加一最后会导致末尾出现一堆 \(0\),而联想到若干个数的异或和 \(\le\) 这些数的和,所以可以结合问题中的“异或”导出有用性质。
简要题意:给定一棵树,每个点对其相邻的点有一个排序,初始每个点的指针指向其第一个元素。接下来从根节点出发,每次走一步,走出去之后将指针循环后移一格。多次询问 \(k\) 步之后到达那个节点。
题目特点:从一个初始状态开始不断操作,多次询问 \(K\) 步之后到达的点。
见到另外一道题,题目特点完全一样。那道题是用平衡树维护所有询问,每次访问到一个节点时把询问往下推。这道题不一样。究其原因大概是那题是 DAG,整体信息难以维护,而这题是树,有更多好的性质吧。
一开始想这道题的时候陷入了之前那道题的思路中,求每个子树内会消耗多少的字典序。但是经过思考发现第几次经过这个点会对其消耗的字典序量产生影响,这就很难做了。
以上的做法应该属于从局部思考,正解是从整体思考。事实上后者会很简单:如果每个点最后指向父亲,那就是走整棵树的欧拉序;现在就是先走前若干个节点的欧拉序,再走更多个节点的欧拉序。最后可以做到线性。
关键应该在于从整体思考问题。
简要题意:给定一棵有根树,每个节点有若干个棋子,双方平等博弈,每步可以选一个节点,将其任意个棋子挪向它的某一个儿子。问谁赢。
解锁技能:阶梯 Nim
阶梯 Nim 的原型就是在一个台阶上玩 Nim 游戏,每次可以将一个台阶上的任意个石子下移一个台阶,移到地上就不能移了。
阶梯 Nim 的结论是等价于拿出所有奇数台阶上的石子玩普通 Nim。证明很简单:偶数阶上的石子可以扔掉,因为对于一个胜者来说,如果对方移了偶数阶的石子,那他可以立即将这些石子再移回偶数阶(注意,这里就是奇数阶和偶数阶不对称的地方,因为 \(0\) 是偶数),从而保持胜局,所以只考虑奇数阶上的石子,就是普通的 Nim 了。
知道这个结论之后这题就是板子了。给每个奇深度的叶子节点多挂一个叶子之后就是树上的阶梯 Nim,直接取出奇深度的异或起来即可。
博弈论的主要三条思路变成了四条:SG 函数,决策覆盖,朴素决策,保持胜局(或决策抵消)。保持胜局的意思就是已经赢了的人可以消除掉不必要的影响因素。注意到在公平游戏里面不管谁赢了都会去消掉它,那这个影响因素就等于不存在了。
可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最小费用最大流预处理混合图上莫比乌斯反演莫队带花舞蹈链并查集树状数组套主席树预处理动态DP分治FFT求多项式逆元对数函数的指数函数用可持久化并查集合并最小费用循环流上插头DP的更多相关文章
- [COGS257]动态排名系统 树状数组套主席树
257. 动态排名系统 时间限制:5 s 内存限制:512 MB [问题描述]给定一个长度为N的已知序列A[i](1<=i<=N),要求维护这个序列,能够支持以下两种操作:1.查询A[ ...
- BZOJ 2141 排队(树状数组套主席树)
解法很多的题,可以块套树状数组,可以线段树套平衡树.我用的是树状数组套主席树. 题意:给出一段数列,m次操作,每次操作是交换两个位置的数,求每次操作后的逆序对数.(n,m<=2e4). 对于没有 ...
- Codeforces Round #404 (Div. 2) E. Anton and Permutation(树状数组套主席树 求出指定数的排名)
E. Anton and Permutation time limit per test 4 seconds memory limit per test 512 megabytes input sta ...
- [BZOJ3932] [CQOI2015]任务查询系统(主席树 || 树状数组 套 主席树 + 差分 + 离散化)
传送门 看到这个题有个很暴力的想法, 可以每一个时间点都建一颗主席树,主席树上叶子节点 i 表示优先级为 i 的任务有多少个. 当 x 到 y 有个优先级为 k 的任务时,循环 x 到 y 的每个点, ...
- LUOGU P2617 Dynamic Rankings(树状数组套主席树)
传送门 解题思路 动态区间第\(k\)大,树状数组套主席树模板.树状数组的每个位置的意思的是每棵主席树的根,维护的是一个前缀和.然后询问的时候\(log\)个点一起做前缀和,一起移动.时空复杂度\(O ...
- BZOJ 3196 Tyvj 1730 二逼平衡树 ——树状数组套主席树
[题目分析] 听说是树套树.(雾) 怒写树状数组套主席树,然后就Rank1了.23333 单点修改,区间查询+k大数查询=树状数组套主席树. [代码] #include <cstdio> ...
- BZOJ 1901 Zju2112 Dynamic Rankings ——树状数组套主席树
[题目分析] BZOJ这个题目抄的挺霸气. 主席树是第一时间想到的,但是修改又很麻烦. 看了别人的题解,原来还是可以用均摊的思想,用树状数组套主席树. 学到了新的姿势,2333o(* ̄▽ ̄*)ブ [代 ...
- BZOJ_3196_Tyvj 1730 二逼平衡树_树状数组套主席树
BZOJ_3196_Tyvj 1730 二逼平衡树_树状数组套主席树 Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排 ...
- ZOJ 2112 Dynamic Rankings(树状数组套主席树 可修改区间第k小)题解
题意:求区间第k小,节点可修改 思路:如果直接用静态第k小去做,显然我更改一个节点后,后面的树都要改,这个复杂度太高.那么我们想到树状数组思路,树状数组是求前缀和,那么我们可以用树状数组套主席树,求出 ...
- P2617 Dynamic Rankings(树状数组套主席树)
P2617 Dynamic Rankings 单点修改,区间查询第k大 当然是无脑树套树了~ 树状数组套主席树就好辣 #include<iostream> #include<cstd ...
随机推荐
- Serverless遇到 FinOps: Economical Serverless
摘要:本文基于FunctionGraph在Serverless 领域的FinOps探索和实践,提出业界首个Serverless函数总成本估计模型 历川:华为云Serverless研发专家 平山:华为云 ...
- 活动预告| 字节跳动基于DataLeap的DataOps最佳实践
DataOps概念从2014年首次被提出,不断演化和发展,在2018 年Gartner 的数据管理成熟度曲线中确定了 DataOps,标志着 DataOps 被业界接纳和认可.随着数字化转型的推进以及 ...
- GOS会计凭证上传附件
1.GOS介绍 GOS是一个连接文档和SAP内各种对象的工具,在SAP的一些凭证中,可以通过GOS进行附件的上传.查看和删除等功能,例如采购订单.会计凭证等. 如果没有这个按钮,可以将当前登录用户的类 ...
- stm32f103 rt-thread fal easyflash移植过程
需求:使用Stm32F103片内Flash进行数据存储 硬件平台:Stm32F103C8t6(由于Stm32F103C8t6的Flash标注为64k实际为128K,64KFlash在使用rt-thre ...
- 【CJsonObject】C++ JSON 解析器使用教程
能选封装的尽量不使用底层的 一.CJsonObject 简介 CJsonObject 是 Bwar 基于 cJSON 全新开发一个 C++ 版的 JSON 库. CJsonObject 的最大优势是轻 ...
- SpringBoot-mybatisplus-模糊查询
模糊查询如何实现如下案例中两种实现方法 第一种:利用QueryWrapper.like自己实现. 第二种:使用@TableField(condition = SqlCondition.LIKE)实现. ...
- SpringCloud学习 系列三、 创建一个没有使用springCloud的服务提供者和消费者
系列导航 SpringCloud学习 系列一. 前言-为什么要学习微服务 SpringCloud学习 系列二. 简介 SpringCloud学习 系列三. 创建一个没有使用springCloud的服务 ...
- vue监听滚动到底部加载更多
https://blog.csdn.net/qq_39762109/article/details/89354305 此方法有个bug
- freeswitch通过limit限制cps
概述 freeswitch在业务开发中有极大的便利性,因为fs内部实现了很多小功能,这些小功能组合在一起,通过拨号计划就可以实现很多常见的业务功能. 在voip云平台的开发中,我们经常会碰到资源的限制 ...
- TOEFL | 202307 改革 · 新版题型总结
目录 Listening(36min) Reading(35min) Speaking(16min) Writing(29min) Listening(36min) 2 conversation,3 ...