2025/12/08 分享

news/2025/12/9 0:04:00/文章来源:https://www.cnblogs.com/03Goose/p/19319426

续接昨天的讨论,昨天的引理 1 和引理 4 后面看了一下发现是同一个定理,无伤大雅


首先讨论提到的 GESP202509L8T2 :对于一个带权稀疏连通图 \(G = (V, E)\) ,询问每条边从 \(G\) 中删除后得到的图 \(G^{'}\) 中的最小生成树边权和,或者回答不存在生成树。

考虑在 \(G\) 中随意构造一棵最小生成树 \(T\)
如果一条边是非树边,其被删除后得到的 \(G^{'}\) 中最小生成树依然可以是 \(T\)
如果一条边是树边 \(\alpha = \{a, b\}\) ,其被删除后导致 \(T\) 成为两个联通分量 \(T^{'}_1, T^{'}_2\) ,如果存在一条边 \(\beta = \{x, y\}\) 满足 \(x, y\) 分别在两个联通分量中,则只需加入权值最小的那条边即能得到新的最小生成树 \(T^{*}\) ,并且有 \(c(T^{*}) = c(T) - c(\alpha) + c(\beta)\)
进一步地考虑 \(x - y\) 加上 \(\beta = \{x, y\}\) 必然是一个环,由定理“一条边是桥当且仅当它不在任何环内”,若存在非树边 \(\beta = \{x, y\}\) 联通 \(T^{'}_1, T^{'}_2\) ,则会满足 \(\alpha\) 在树中的路径 \(x - y\) 上。
考虑预处理每条非树边 \(\beta = \{x, y\}\) ,剖出树链 \(x - y\) 并对其做区间修改取最小值。则查询一条树边 \(\alpha = \{a, b\}\) ,只需查询其上覆盖的最小非树边权值 \(w(\alpha)\) ,则 \(c(T^{*}) = c(T) - c(\alpha) + c(w(\alpha))\)

树链剖分的时间复杂度为 \(O(|E| \log^{2} |V|)\)


然后昨天同学问了我一个问题,是这样。给定 \(N\) ,求两个整数 \(A, B\),满足 \(0 \leq A, B \leq N\)\(A \oplus B = N\),最大化 \(A + B\) 的值。

第一个想法,如果没有限制 \(max(A, B) \leq N\)
\(N\) 的第 \(i\) 位是 \(1\) ,随便分给 \(A\)\(B\) ,对 \(A + B\) 贡献 \(2^{i}\)
\(N\) 的第 \(i\) 位是 \(0\)\(A\)\(B\) 可以都是 \(0\)\(1\) ,那么让其都为 \(1\) ,对 \(A + B\) 贡献 \(2^{i + 1}\)

考虑进 \(max(A, B) \leq N\) 的限制,只需记 \(N\) 的最高位 \(m1\) 和次高位 \(m2\) 。否则分类讨论。
\(N\) 的第 \(i\) 位是 \(0\) ,当且仅当 \(m2\) 的更高位 \(A\)\(B\) 应该赋 \(0\) ,否则都能赋 \(1\)
\(N\) 的第 \(i\) 位是 \(1\) ,最优方案不受影响,只需把 \(m1\) 分配给 \(A\)\(m2\) 分配给 \(B\) ,更低位随意,则最终满足 \(0 < B < A < N\)
\(0\) 位和 \(1\) 位的贡献都满足条件且最优,此时有 \(A + B\) 最大。

注意这里确实有一个结论 \(A + B = A \oplus B + 2 (A \ AND \ B)\) ,但大多时候比较鸡肋,至少这里用不上。


考虑扩展带权连通图上的贪心构造最小生成树,得到一个新的 Prim 算法。

定理
\(G = (V, E)\) 带权连通图,权函数为 \(c\)\(u\)\(G\) 的任意一个顶点。

  1. 令点集 \(U = \{u\}\) ,边集 \(F = \emptyset\)
  2. 确定一条边权最小的 \(\alpha = \{x, y\}\) 满足 \(x \in U\)\(y \in \overline{U}\) ,将 \(y\) 加入 \(U\)\(\alpha\) 加入 \(F\)

\(T = (U, F)\) ,则 \(T\)\(G\) 上的一棵最小权生成树。

证明
\((U = \{ u \}, F = \emptyset)\) 开始,每次必然能从连通图 \(G = (V, E)\) 中找到一条边 \(\alpha = \{x, y\}\) 满足 \(x \in U, y \in \overline{U}\) 并加入 \(U\) ,算法的第 \(i\) 次执行都会得到一个 \(i + 1\) 个点 \(i\) 条边的树。显然最终 \(T = (U, F)\)\(G\) 的一棵生成树。

接下来的证明主体思路和 \(Kruskal\) 一样。

\(F\) 中的边是 \(\alpha_1, \alpha_2, \cdots, \alpha_{|V| - 1}\) 并且他们会按照这样的顺序放入,令 \(T^{*} = (V, F^{*})\) 是一棵与 \(T\) 有着最多公共边的最小生成树,如果能证明 \(F^{*} = F\) ,则 \(T\) 是一棵最小生成树。

假设 \(F^{*} \neq F\) ,并设 \(\alpha_k\)\(F\) 中放入的第一条不是 \(F^{*}\) 中的边,设 \(T\) 在生成过程中边集为 \(\alpha_1, \alpha_2, \cdots, \alpha_i\) 的树为 \(T_{i} = (U_i, F_i)\)
因为 \(T^{*}\) 是生成树,那么存在一条不是 \(\alpha_{k}\) 的边 \(\beta\) 满足一个顶点在 \(U_{k - 1}\) 中另一个顶点在 \(\overline{U_{k - 1}}\) 中。考虑 \(T^{*}\) 删去 \(\beta\) ,根据定理“\(n \geq 1\) 阶的连通图是树当且仅当它的边数是 \(n - 1\)”,则得到两棵树 \(T^{*}_1, T^{*}_2\) 且点集分别为 \(U_{k - 1}, \overline{U_{k - 1}}\)
显然 \(\alpha_{k}\) 一个顶点在 \(U_{k - 1}\) 中一个顶点在 \(\overline{U_{k - 1}}\) 中, \(T^{*}\) 去除 \(\beta\) 后再加入边 \(\alpha_{k}\) ,则能得到一棵树 \(T^{**}\) 且点集为 \(V\) ,那么 \(T^{**}\) 是一棵 \(G\) 的生成树。
于是有 \(c(T^{**}) = c(T^{*}) - c(\beta) + c(\alpha_{k})\) ,由 \(T^{*}\) 是一棵最小生成树则有 \(c(\beta) \leq c(\alpha_{k})\)
又因为 \(T_{k - 1} = (U_{k - 1}, F_{k - 1})\) 选入 \(\alpha_{k}\) 意味着在所有满足性质“一个顶点在 \(U_{k - 1}\) 另一个顶点在 \(\overline{U_{k - 1}}\) ”的边中 \(\alpha_{k}\) 具有最小权,而 \(\beta\) 也满足这个性质,则 \(c(\alpha_{k} \leq c(\beta))\)

于是 \(c(\alpha_{k}) = c(\beta)\) ,于是 \(T^{**}\) 是一棵最小生成树,且比 \(T^{*}\) 有着比 \(T\) 更多的公共边,这和 \(T^{*}\) 的定义是矛盾的,这说明 \(F^{*} \neq F\) 是不正确的。
\(\square\)


一些同学昨天和今天问的问题。

4.1 对于 \(n \times m\) 的矩形,有多少个子矩形?
大体思路肯定是考虑四条边界线。
组合贡献角度的思路:是枚举两条横线的方案数乘以两条竖线的方案数。结果是 \(\binom{m}{2} \times \binom{n}{2}\)
枚举角度的思路是:枚举横轴上两条竖线间的区间大小 \(i = 1, 2, \cdots, m\) ,则有 \(m + 1 - i\) 个,这可以贡献横轴上的两条竖线的方案数。竖轴上同理。最后利用乘法原理。

4.2 询问字符串 \(str\) 上各个 \((a, b)\) 子序列的个数?
倒序枚举 str 的索引 i 可以维护出 \([i, N]\)\(j\) 字符的个数 \(v_j\) ,考虑对 \(cnt(str_i, j)\) 贡献 \([i + 1, N]\) 部分的答案只需让 \(v_j\) 在更新前做出贡献。

4.3 对于每组物品至多只能选一个的分组式 01 背包如何 dp ?
依然考虑 dp[i][j] 的组合意义是前 \(i\) 组不超过 \(j\) 的价值,其在这个状态空间下显然能且仅能对 dp[i + 1][j + w[i + 1, k]] + v[i + 1, k] 做出贡献,\(k\) 是第 \(i + 1\) 组的某个物品索引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/993743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

frp

docker hub地址: https://hub.docker.com/r/snowdreamtech/frpc docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps:alpine

深刻理解HTTP和RPC的区别

首先,HTTP它本质上是一个协议,它是互联网数据通信的基础,定义了一套如何在网络上交换超文本的一个规则。它的核心就是资源和状态。比如说我们用get去获取一个用户资源,用put去更新它。而RPC本质是一种编程范式,或…

linux 中 socket 文件是什么?和 socket 编程有什么关系?和 TCP/IP 协议栈又有什么关系?

linux 中 socket 文件是什么?和 socket 编程有什么关系?和 TCP/IP 协议栈又有什么关系?要理解 linux 中的 socket 文件,以及什么是socket 编程,首先需要知道两个知识点: 1、什么是进程,进程名又是什么? 2、进程…

智能座舱的下一站:从“车内大屏”到“全域协同” - 智慧园区

就在10年前,车里能有一块彩色屏幕,就足以被称作“高科技”了。时至今日,智能座舱已然成为新能源汽车比拼的核心战场。然而,行业的竞争似乎走入了一个怪圈:比谁的屏幕更多、更大、更炫。当我们冷静下来思考,智能座…

硬件电子知识(基础篇)

电子元器件 电阻:核心功能:通过自身特性限制电流流动,实现电压分配,消耗电能 具体功能: 限流:LED串联电阻防止电流过大烧毁 分压:模拟电路中拆分电压信号(如传感器输出分压采样) 负载:替代实际负载进行电路调…

每日的小开心

今天课堂上的团队战意外拿到第二名,因为前面的队冒险主义失误了,我们保守主义难得不是第三名,可以多一些课堂分!还有宿舍一起打边炉,可能是我们最后一次了,毕业以后可能很难有时间聚一聚。 今天还吃了个大瓜

揭秘业务逻辑滥用:API安全中“利用游戏规则”的攻击手法

本文深入探讨了API安全中的业务逻辑滥用攻击。它解释了攻击者如何利用API的预期功能逻辑而非技术漏洞,通过绕过支付步骤、操控数据等方式实施攻击,并介绍了Wallarm平台如何通过行为异常检测和规范执行等高级技术进行…

揭秘业务逻辑滥用:API安全中“利用游戏规则”的攻击手法

本文深入探讨了API安全中的业务逻辑滥用攻击。它解释了攻击者如何利用API的预期功能逻辑而非技术漏洞,通过绕过支付步骤、操控数据等方式实施攻击,并介绍了Wallarm平台如何通过行为异常检测和规范执行等高级技术进行…

放弃原容器建立新容器,保存留数据卷且映射

一.以mysql容器为例子1.sudo mkdir -p /home/mysql_data #创建新文件夹2.sudo chown -R 999:999 /home/mysql_data # 将目录所有权设为MySQL容器内使用的用户(通常是999:999) 将 /home/mysql_data 目录及其内部所有…

CommonUI-学习记录

UE官方教程 CommonUI重要特点Common UI 本质上来说就是把UI当成栈,你可以push不同的widget到不同的栈上面。然后栈本身又会存到栈里面,显示最上层的栈元素所包含的元素The Viewport is the base for all input routi…

银行反欺诈day1

1.银行反欺诈系统都运行在那些场景? 区分为实时交易监控和事后分析场景类型 具体场景 风险特征实时交易拦截 网银/手机银行转账POS刷卡消费ATM取现第三方支付(如支付宝/微信快捷支付)开放银行API调用(如代扣) 毫秒…

2025年数控折弯机模具选购参考

在当前钣金加工行业,客户对数控折弯机模具的采购决策日益聚焦于高性价比与价格透明化。随着市场竞争加剧和终端用户成本控制意识增强,模具供应商不仅需提供稳定可靠的品质,还需在价格策略上展现清晰、合理且具竞争力…

Hikvision 考勤机数据提取(3)

同样使用 HTTPDigestAuth import json import binascii import base64 import hashlib import time import requests import argparse import uuid import xml.etree.ElementTree as ET from datetime import datetime…

Hikvision 考勤机数据提取(3)

同样使用 HTTPDigestAuth import json import binascii import base64 import hashlib import time import requests import argparse import uuid import xml.etree.ElementTree as ET from datetime import datetime…

12306爬取基本车次信息(需下载chromedriver)

from selenium import webdriver from selenium.webdriver.common.by import By import re import time import csv import pandas as pd import sys from selenium.webdriver.chrome.service import Service from sel…

微信小程序渗透测试

https://mp.weixin.qq.com/s/hTEjuNHF-k8053nejSZ1Jw

Day14-20251208

本文摘要:介绍了使用IDEA生成JavaDoc文档的详细步骤,包括设置作用域、输出目录、语言编码等参数 列举了常用JavaDoc标签,分为基础信息类、功能说明类和状态标识类三大类 讲解了Java流程控制中的Scanner对象使用,比…

从纯数学到应用AI科学的职业转变

本文讲述了Giovanni Paolini从纯数学研究转向在某中心担任应用科学家的历程,其工作涉及计算机视觉、自然语言处理等机器学习技术,并探讨了数学背景对AI研究的独特价值。从纯数学家到某中心应用科学家 Giovanni Paoli…

Flask集成MCP的AI Agent

基于Flask开发集成MCP Client和MCP Server的Ai Agent.前言 近年来,大量新兴的 AI 相关第三方库都提供了异步接口,有些甚至出于性能考虑仅支持异步调用,例如 MCP SDK。伴随着 Python 异步编程的发展,FastAPI 等框架…

threadDay01

#include <iostream> #include <thread> #include <condition_variable> #include <queue> #include <mutex>std::queue<int> g_queue; std::condition_variable g_cv; std::mute…