macw资讯 苹果 macOS Big Sur 开发者预览版 Beta 4 已经发布

苹果发布了macOS Big Sur的第四个测试版,修复了App Store应用更新后无法打开的问题,并引入了苹果安全赏金计划,鼓励研究人员报告安全问题。升级至最新Beta4版本可能需更长时间,且存在数据丢失风险。

8 月 5 日消息, 苹果面向开发人员推送了 macOS Big Sur 的第四个测试版本。用户可通过 Developer Center 下载macOS Big Sur Beta 4,在安装了描述文件后,可以通过 “系统偏好设置”中的 “软件更新”获得后续测试版本。

已知重要问题:从以前的macOS版本升级到macOS Big Sur 11 beta可能要花费比预期更长的时间。如果更新中断,则可能会发生数据丢失。

macw了解到,最新的macOS Big Sur 11 beta 4修复了App Store中应用更新后无法打开的问题。而且,苹果公司添加了苹果安全赏金(Apple Security Bounty),研究人员发现并且向Apple产品安全部门报告问题,经过验证后将会获得苹果安全赏金的资格。

更多关于macOS Big Sur Beta 4版本更新,可以访问苹果开发者中心查看!

mac OS Big Sur 11 Beta 4发行说明

如果想升级最新的macOS Big Sur Beta 4版本,可以根据下面教程进行升级!

macOS 11.0怎么升级?macOS Big Sur 升级教程

A29191.失败的五子棋 普及/提高- 加入题单 题目纠错 通过率:0% 时间限制:1.00s 内存限制:128MB 题目描述 你由于昨天玩五子棋连跪四把,你的好朋友 Macw 认定你的推理能力还需要多多锻炼。因此,Macw 绞尽脑汁过后想出来一道看似简单其实不难的推理题目旨在于提高你的逻辑思维能力。题目如下: 有一个长度为 NN 的序列 SS,序列中的数字不是 11 就是 22。但你不知道这个序列的具体内容,但你知道存在在这个序列中的 MM 组关系。每组关系可以用一个三元组 (Ai,Bi,Ci)(Ai​,Bi​,Ci​) 来表示,表示序列 SAi+SBi+CiSAi​​+SBi​​+Ci​ 的和是一个偶数。 Macw 想考考你,你至少需要知道这个序列的几个数字才可通过这 MM 条关系推导出整个序列。 Problem Credits: Macw07。 输入格式 第一行输入两个整数 NN 与 MM。 接下来的 MM 行,每一行输入三个整数 Ai,Bi,CiAi​,Bi​,Ci​。 输出格式 输出一个整数,表示答案。 输入输出样例 输入#1 复制 6 5 1 2 1 2 3 2 1 3 3 4 5 4 5 6 5 输出#1 复制 2 输入#2 复制 100000 1 1 100000 100 输出#2 复制 99999 说明/提示 数据范围与约定: 对于 100%100% 的数据,满足 2≤N≤1052≤N≤105。 对于 100%100% 的数据,满足 1≤M≤1051≤M≤105。 对于 100%100% 的数据,满足 1≤Ai,Bi≤N1≤Ai​,Bi​≤N。 对于 100%100% 的数据,满足 1≤Ci≤1001≤Ci​≤100。 对于 100%100% 的数据,保证数据均合法。
最新发布
09-30
我们来分析这道题。 --- ### 题目大意 给定一个长度为 $ N $ 的序列 $ S $,每个元素是 1 或 2。 有 $ M $ 条信息,每条信息是一个三元组 $ (A_i, B_i, C_i) $,表示: $$ S[A_i] + S[B_i] + C_i \text{ 是偶数} $$ 注意:这里的下标是从 1 开始的。 由于 $ S[i] \in \{1,2\} $,我们可以考虑它们的**奇偶性**: - 1 是奇数 - 2 是偶数 所以我们可以将问题转化为 **01 变量问题**: 令 $ x_i = S[i] \mod 2 $,即: - 若 $ S[i] = 1 $,则 $ x_i = 1 $ - 若 $ S[i] = 2 $,则 $ x_i = 0 $ 那么条件: $$ S[A_i] + S[B_i] + C_i \text{ 是偶数} \Rightarrow x_{A_i} + x_{B_i} + (C_i \mod 2) \equiv 0 \pmod{2} $$ 即: $$ x_{A_i} + x_{B_i} \equiv (C_i \mod 2) \pmod{2} $$ 记 $ c_i = C_i \mod 2 $,那么: $$ x_{A_i} + x_{B_i} \equiv c_i \pmod{2} \quad \text{或} \quad x_{A_i} \oplus x_{B_i} = c_i $$ > 注意:在模 2 下,加法等价于异或(XOR),但仅当没有进位时成立。这里因为只关心奇偶性,且两个比特相加模 2 等于异或。 所以每条约束可以看作是两个变量之间的异或关系。 --- ### 转化为图论问题(带权并查集 / DFS 连通块) 这类“异或约束”问题可以用 **带权并查集** 或 **DFS/BFS 建图处理连通块** 来解决。 我们要做的是: - 构造一个无向图,节点是位置 $ 1 $ 到 $ N $ - 对于每条约束 $ (A_i, B_i, C_i) $,添加一条边 $ A_i - B_i $,边权为 $ c_i = C_i \mod 2 $ - 在这个图中,如果两个点连通,则它们的值之间存在确定的关系(相对异或值) - 每个连通块内,只要知道一个点的值,就可以推出所有其他点的值 - 因此,最少需要知道的初始数字个数 = 连通块的个数 但是!有一个关键点:**并不是所有连通块都合法?** 我们需要检查是否有矛盾! 例如:通过多条路径推导出某个点既是 0 又是 1 → 矛盾 → 数据不一致(但题目保证数据合法) > 题目说明:“对于 100% 的数据,保证数据均合法。” 所以无需判断矛盾。 因此,只要统计这样的连通块数量即可。 但注意:有可能某些点根本不在任何约束中出现! 这些孤立点没有任何限制,也无法从别的点推导出来 → 必须单独指定其值。 所以我们总结如下: --- ### 解法步骤 1. 将每个约束 $ (A_i, B_i, C_i) $ 视为一条连接 $ A_i $ 和 $ B_i $ 的无向边,边权为 $ c_i = C_i \% 2 $ 2. 使用 **带权并查集** 或 **DFS/BFS** 维护每个节点与其根节点的异或关系(即相对值) 3. 合并所有边后,统计有多少个连通块(基于并查集的父节点) 4. 答案就是连通块的数量 为什么? 因为每个连通块中,只要知道一个点的值,其余点都能通过异或关系推出。 而不同连通块之间没有约束,互不影响。 所以最少要知道每个连通块中的一个值 → 共需知道“连通块个数”个值。 --- ### 特殊情况验证 #### 示例 1: ``` 输入: 6 5 1 2 1 2 3 2 1 3 3 4 5 4 5 6 5 ``` 转换成 $ c_i = C_i \% 2 $: - (1,2,1): c=1 → x1 + x2 ≡ 1 → x1 ⊕ x2 = 1 - (2,3,2): c=0 → x2 ⊕ x3 = 0 - (1,3,3): c=1 → x1 ⊕ x3 = 1 - (4,5,4): c=0 → x4 ⊕ x5 = 0 - (5,6,5): c=1 → x5 ⊕ x6 = 1 建图: - 分量1: {1,2,3} 形成连通块 - 分量2: {4,5,6} 形成另一个连通块 共 2 个连通块 → 输出 2 ✅ #### 示例 2: ``` 100000 1 1 100000 100 ``` c = 100 % 2 = 0 → x1 ⊕ x100000 = 0 这条边只连接了 1 和 100000 其余 99998 个点都是孤立点 加上这个连通块(含 1 和 100000),总共有: - 1 个包含两个点的连通块 - 99998 个孤立点 总共连通块数 = 1 + 99998 = 99999 → 输出 99999 ✅ --- ### 实现方式:并查集(维护异或关系) 使用带权并查集(权表示到根的异或值) ```python class UnionFind: def __init__(self, n): self.parent = list(range(n+1)) self.rank = [0] * (n+1) # xor_to_root[i] 表示 x[i] ^ x[root] self.xor = [0] * (n+1) def find(self, x): if self.parent[x] != x: root = self.find(self.parent[x]) self.xor[x] ^= self.xor[self.parent[x]] self.parent[x] = root return self.parent[x] def union(self, u, v, w): # w = x[u] ^ x[v] pu = self.find(u) pv = self.find(v) if pu == pv: return # 将 pu 挂到 pv 上 if self.rank[pu] < self.rank[pv]: self.parent[pu] = pv # x[u]^x[pu] = xor[u], x[v]^x[pv]=xor[v] # 我们要算 x[pu] ^ x[pv] = ? # x[u] ^ x[v] = w # => (x[u]^x[pu]) ^ (x[v]^x[pv]) ^ (x[pu]^x[pv]) = w # => xor[u] ^ xor[v] ^ (x[pu]^x[pv]) = w # => x[pu]^x[pv] = w ^ xor[u] ^ xor[v] self.xor[pu] = w ^ self.xor[u] ^ self.xor[v] elif self.rank[pu] > self.rank[pv]: self.parent[pv] = pu self.xor[pv] = w ^ self.xor[u] ^ self.xor[v] else: self.parent[pv] = pu self.xor[pv] = w ^ self.xor[u] ^ self.xor[v] self.rank[pu] += 1 ``` 但实际上,因为我们只需要统计连通块个数,并不需要真正用到 `xor` 数组的最终值(只要合并正确),并且题目保证无矛盾,所以其实我们甚至可以不用维护 `xor` 来计算答案 —— 只要能合并就行? 不,不行。必须根据异或关系进行合并,否则无法正确合并。 但我们仍然需要 `find` 和 `union` 正确处理路径压缩和异或传递。 不过最终我们只关心连通块数量。 所以可以在所有操作完成后,对每个点调用 `find(i)` 得到其根节点,然后统计不同的根的数量。 --- ### 最终代码逻辑(Python) ```python def main(): import sys input = sys.stdin.read data = input().split() n = int(data[0]) m = int(data[1]) uf = UnionFind(n) index = 2 for _ in range(m): a = int(data[index]) b = int(data[index+1]) c = int(data[index+2]) index += 3 w = c % 2 # 异或值 uf.union(a, b, w) # 统计连通块数量:每个节点找根 roots = set() for i in range(1, n+1): roots.add(uf.find(i)) print(len(roots)) class UnionFind: def __init__(self, n): self.parent = list(range(n+1)) self.rank = [0] * (n+1) self.xor = [0] * (n+1) # x[i] ^ x[root] def find(self, x): if self.parent[x] != x: root = self.find(self.parent[x]) self.xor[x] ^= self.xor[self.parent[x]] self.parent[x] = root return self.parent[x] def union(self, u, v, w): pu = self.find(u) pv = self.find(v) if pu == pv: return if self.rank[pu] < self.rank[pv]: self.parent[pu] = pv self.xor[pu] = self.xor[u] ^ self.xor[v] ^ w elif self.rank[pu] > self.rank[pv]: self.parent[pv] = pu self.xor[pv] = self.xor[u] ^ self.xor[v] ^ w else: self.parent[pv] = pu self.xor[pv] = self.xor[u] ^ self.xor[v] ^ w self.rank[pu] += 1 if __name__ == '__main__': main() ``` 但这题的关键不是写代码,而是理解答案就是**由异或约束构成的连通块个数**。 --- ### 答案解释 你至少需要知道每个连通块中的一个值,才能推出整个序列。 所以答案 = 连通块个数。 --- ### 结论 输出:连通块个数(通过带权并查集合并异或关系后统计) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值