可持久化非确定状态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 ...
随机推荐
- 华为云构建云原生DevSecOps平台,保障软件供应链全流程安全可信
摘要:面临网络安全挑战的大环境下,华为云构筑的云原生DevSecOps平台,打造了创新可控的安全服务,助力企业软件供应链全生命周期安全. 2022年8月13日,"2022中国DevOps社区 ...
- 带你了解数仓安全测试的TLS协议
摘要:SSL/TLS协议是业界常用的加密通信协议,通过该协议可以完成通信双方身份认证,会话密钥协商,通信内容加密和完整性保护. 本文分享自华为云社区<GaussDB(DWS)安全测试之TLS协议 ...
- 面试官问:mysql中时间日期类型和字符串类型的选择
摘要:MySQL中有多种表示时间日期的数据类型,主要有YEAR.TIME.DATE.DATETIME.TIMESTAMP等 本文分享自华为云社区<一针见血,mysql中时间日期类型和字符串类型的 ...
- 火山引擎 DataLeap 下 Notebook 系列文章三:架构升级详解
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 当使用 Notebook 的项目日渐增加时,火山引擎 DataLeap 研发团队发现运行中的 PaaS 服务实在太 ...
- A/B 测试成为企业“新窗口”:增长盈利告别经验主义,数据科学才是未来
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 如何能够预知一个产品的未来?最好的办法当然是穿越到未来看一看. 这种"模拟未来.窥探底牌"的设 ...
- OLAP引擎也能实现高性能向量检索,据说QPS高于milvus!
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着LLM技术应用及落地,数据库需要提高向量分析以及AI支持能力,向量数据库及向量检索等能力"异军突起& ...
- 【每日一题】15.Xorto (前缀和枚举)
补题链接:Here 题意:选取任意不重叠的两个区间,使异或结果为 \(0\) 样例:\(1,2,3,4,5,5\) 在样例中我们可以选取 \(1,2,3\) 和 \(5,5\) 就是满足题意 思路:相 ...
- Codeforces 1092C Prefixes and Suffixes【字符串+思维】
题目链接:点这里 题意:理解错了题意导致WA好几发,QAQ暴击 题意是判断给你的2*n-2个字符串是前缀还是后缀,不是判断这个字符串的内容...我真的欲哭无泪,理解能力太菜了 思路:将两个n-1长的字 ...
- 【收藏】Stable Diffusion 制作光影文字效果
大家对于最近 Stable Diffusion 不断出新的视觉"整活"印象都很深刻,很多人对最近比较流行的制作光影文字很感兴趣,制作光影文字可以作为进阶 Stable Diffus ...
- C#开源跨平台的多功能Steam工具箱
前言 作为一名程序员你是否会经常会遇到GitHub无法访问(如下无法访问图片),或者是访问和下载源码时十分缓慢就像乌龟爬行一般.今天分享一款C#开源的.跨平台的多功能Steam工具箱和GitHub加速 ...