ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

26杭电多校7

26杭电多校7

H

给定一个位运算方程 x1op1x2op2x3op3⋯xn−1opn−1xn=w,其中:

  • x1,x2,x3,⋯,xn 是 n 个独立的未知数;
  • op1,op2,op3,⋯,opn−1 是 n−1 个给定的运算符,每个运算符都是 and,xor,or 中的一个,三个运算符的优先级是 and 先于 xor 先于 or
  • w 是给定的参数。

你需要为该方程找到一组非负整数解,满足 0≤x1,x2,⋯xn<231,若无法找到任何一组解则报告无解。

位运算。发现第一个数填 w,之后遇到 & 就填全集,其他填



B

选取 01 字符串 s 的一个子序列并将其拼成字符串 ssub使其表达的信息与 s 一致。计算子序列长度的最小可能值。

易知答案不超过6,枚举即可。



L

给定一棵以顶点 1 为根、包含 n 个顶点的有根树。输入中的顶点称为原始顶点。根的深度为 0,其他顶点的深度为其到根的边数;树的高度为所有顶点深度的最大值。

你可以执行任意次操作,使最终树中的每个顶点至多有两个儿子:在顶点 u 与两个不同儿子 v,w之间插入一个点r,其余点关系保持不变

分别求出 最终树的高度 以及 所有 n 个原始顶点在最终树中的深度之和(新建顶点的深度不计入这个和)的最小值

两个最小值互相独立,可以由两种不同的操作方案取得。

定义路径长度为边数,则深度为某顶点到根的路径长度,而高度为深度最大的顶点深度

对于最小高度:

对每个原顶点 u,它的若干棵儿子子树需要通过新增节点组成一棵二叉树。最后一次“合并”可以理解为直接挂到 u 的两个儿子上。设儿子 v 的子树最小高度为 hv

如果把高度为 a,b 的两个簇合并,新簇的高度为:max⁡(a,b)+1。为了最小化最终高度,每次取当前高度最小的两个簇合并,类似哈夫曼树:a,b→max⁡(a,b)+1

对于最小原顶点深度和:

设子树 v 中包含 szv个原始顶点。

如果给整个子树 v 增加一层深度,深度和会增加 szv。因此每棵儿子子树的权值就是 szv
合并权值为 a,b 的两个簇:

  • 新簇权值为 a+b
  • 深度和增加 a+b

即可倒序 DP。



F

有若干个区间,需要放置两个断点,满足每个区间内有恰好一个断点。

 

设输入的每一对 CP 为 ai , bi,那就是 [ ai , bi ) 内须有一个断点。枚举右断点,则要求该断点右边不能有完整区间。维护所有包含当前断点 i 的区间并,设为 [ li , ri ],那么另一个断点则必须在 [1, li ) 当中。再维护所有 r< i 的区间的区间交,记为 [ xi , yi ],就只需要判断 [ xi , yi ] 内部是否有  [ li , ri ] 之外的点。显然,只需要观察 xi 是否在 li 左边即可



K

白井黑子有 n 个电脑配件,质量分别为 x1,x2 ...... xn(可能是负实数)。

题目会进行 m 次在线询问,每次给定三个参数经过加密的变量 a, b, d,解密后会得到一个方程 xi + x= 2c

你需要判断当前方程是否与之前所有被认为是正确的方程冲突:

  • 如果不冲突,则认为该测量结果正确,输出 Yes,并将正确询问计数器 k 加 1(用于后续解密)。

  • 如果冲突,则认为该测量结果错误,输出 No,此结果作废,计数器 k 不变。

由于方程形式为 xi + x= 2c,我们可以将其转化为某个节点与其根节点的关系。 设 p[u] u 的父节点,我们可以维护两个数组 s (符号) 和 v (权值),使得每个节点与其根节点的关系始终满足:

xu = s[u] * xroot + v[u]

其中 s[u]∈{1, -1}

当节点 x 的父节点 p[x] 指向更高层的根节点时,推导得,路径压缩时更新公式为: v[x]=s[x]*v[p[x]]+v[x]  s[x]=s[x]*s[p[x]]

我们找到xi + x= 2c的根root和rootj,分类讨论两者是否为同一点的情况,化简方程即可求解



 

返回列表