20260522

A - [CQOI2014] 排序机械臂

题意:有 nnn 个物品,每个物品有一个高度(可能相同)。排序过程:第 iii 次操作(iii 从 1 到 nnn)时,找到当前序列中第 iii 低的物品(相同高度按初始顺序保持稳定)所在的位置 PiP_iPi,然后将区间 [i,Pi][i, P_i][i,Pi] 翻转。你需要输出每次操作前的 PiP_iPi。n≤105n \le 10^5n≤105,高度 ≤107\le 10^7≤107。


可以直接使用平衡树,比如 FHQ-Treap。查询最值位置,以及类似文艺平衡树的操作。

B - [TJOI2007] 小朋友

题意:有 NNN 个小朋友(1≤N≤2001 \le N \le 2001≤N≤200),MMM 对矛盾关系(无向边)。矛盾图满足性质:图中不存在长度超过 333 的环(即所有环的长度均为 333 或更小,等价于无长度 ≥4\ge 4≥4 的环)。求最多能选出多少个两两之间没有矛盾的小朋友,即求该图的最大独立集的大小。


不会有超过 333 个点的环,那么它图形一定是类似于若干颗树,在它的旁边连边,形成 333 个点的很多个环,且这旁边的边不能相交(不然就会形成超过 333 个点的环)。

其实本质上相当于求一个最大独立集,想办法将环的矛盾关系变成一个二分图。

这显然是不可能的,对于一个 333 个点环,无论如何黑白染色,都不可能使任意两条边两边的颜色不等。

用网络流解可能不大行,但是对于一般图而言也有 "总点数 = 最大独立集 + 最小点覆盖"。

所以说,只要能在这个类似树的结构中求出最小点覆盖就可以了。

首先,树与树之间互不影响,答案累加即可。对于一颗树(是一个生成树,旁边的边类似虚边,不表示父子关系)而言,对于一个点的连边而言,祖先连过来的实边只有一条(父节点那条),虚边最多也只会有一条(只会出现在有环时)。


后来听说可以圆方树,发现貌似就是板啊。

建出圆方树后,用 dp 求解。

对于方点,则用 dpi,0/1dp_{i,0/1}dpi,0/1 表示这个方点是周围的原点否存在原点被选。

对于圆点,则用 dpi,0/1dp_{i,0/1}dpi,0/1 表示这个圆点是否被选。

转移较为容易,这样是 O(n+m)O(n+m)O(n+m),n≤200n\le200n≤200 ?!

C - [ZJOI2011] 道馆之战

题意:有一棵 nnn 个节点的树,每个节点有两个区域 A 和 B,每个区域是冰面(.)或障碍(#)。挑战者从节点 uuu 出发,只能沿着 uuu 到 vvv 的唯一路径向 vvv 移动,移动规则为:每次可以移动到路径上下一个节点的同一区域,或停留在当前节点切换到另一区域(前提是目标区域为冰面且未经过)。每个冰面只能经过一次。起点可选择 uuu 的任意冰面。求从 uuu 出发到 vvv 能经过的最多冰面数。若 uuu 的两个区域都是障碍,输出 000。需要支持两种操作:修改某个节点的两个区域,或回答查询 Q(u,v)Q(u,v)Q(u,v)。n≤50000,m≤100000n \le 50000, m \le 100000n≤50000,m≤100000。


先考虑没有修改操作,如果都是 ..,则走的形状是一个类似螺旋的,当走的次数为奇数,需要改变位置(也就是原本在左边的要变成右边,右边变左边),否则不变。由于有障碍物的限制,相当于在某个位置必须走左边或者右边。

对于一次查询,相当于查找在哪个位置第一次是得原本从左边或右边出发都不满足。由于又有修改操作,所以可以用树链剖分。对于线段树中的一个段,可以记录,假如一开始从左边出发,最后是在哪个位置(假如走不到,就记录一下终止位置),反之同理,正反都要记录一下,因为有一部分是往父节点方向走的。修改,直接在线段树它所在的位置修改就可以了。


后来对拍的时候才发现,理解错题意了,它是求最多能走多少个格子。但是基本上也是一样的,改成用 dis0/1,0/1dis_{0/1,0/1}dis0/1,0/1 表示由 左/右 走到 左/右 的最大数量,同样的反着的也要求。

相关推荐
一条大祥脚3 小时前
Codeforces Round 1099 (Div. 2) 构造|贪心|图论|还原数组
java·算法·图论
Sheldon Chao4 小时前
Lecture 7 基于策略梯度的算法
人工智能·算法·机器学习
始三角龙4 小时前
LeetCode hoot 100 -- 缺失的第一个正整数
算法·leetcode·职场和发展
飞Link4 小时前
深度解析孪生网络(Siamese Network):从原理、技巧到实战应用
算法·数据挖掘·回归
测试狗科研平台4 小时前
洞悉微观电荷流动,VASP计算电荷密度分布
算法·云计算·开源软件
Orz_Sponge_Bob4 小时前
温州市第三届青少年程序设计竞赛(小学组)题解
算法
Noushiki5 小时前
常见的排序算法
算法·排序算法
gumichef5 小时前
二叉树链式结构的实现
算法·链表·二叉树·队列
战南诚5 小时前
力扣 之 198.打家劫舍
python·算法·leetcode