news 2026/6/15 18:21:34

贪心构造+枚举子集+有向图判环

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
贪心构造+枚举子集+有向图判环

lc3445

无向图当中用一个数组标记每个节点是否访问过,记录这个节点它的父节点,如果一个节点不是fa &&被访问过,就说明环

可以bfs/dfs/union判环

推到有向图 两种状态表示已经无法判定,我们可以用到三色染色法

class Solution {

public:
vector<vector<int>> supersequences(vector<string>& words) {
// 收集有哪些字母,同时建图
int all = 0, mask2 = 0;
vector<int> g[26]{};
for (auto& s : words) {
int x = s[0] - 'a', y = s[1] - 'a';
all |= 1 << x | 1 << y;
if (x == y) {
mask2 |= 1 << x;
}
g[x].push_back(y);
}

// 判断是否有环
auto has_cycle = [&](int sub) -> bool {
int color[26]{};
auto dfs = [&](this auto&& dfs, int x) -> bool {
color[x] = 1;
for (int y : g[x]) {
// 只遍历在 sub 中的字母
if ((sub >> y & 1) == 0) {
continue;
}
if (color[y] == 1 || color[y] == 0 && dfs(y)) {
return true;
}
}
color[x] = 2;
return false;
};
for (int i = 0; i < 26; i++) {
// 只遍历在 sub 中的字母
if (color[i] == 0 && sub >> i & 1 && dfs(i)) {
return true;
}
}
return false;
};

unordered_set<int> st;
int max_size = 0;
// 枚举 mask1 的所有子集 sub
int mask1 = all ^ mask2;
int sub = mask1;
do {
int size = popcount((unsigned) sub);
// 剪枝:如果 size < min_size 就不需要判断了
if (size >= max_size && !has_cycle(sub)) {
if (size > max_size) {
max_size = size;
st.clear();
}
st.insert(sub);
}
sub = (sub - 1) & mask1;
} while (sub != mask1);

vector<vector<int>> ans;
for (int sub : st) {
vector<int> cnt(26);
for (int i = 0; i < 26; i++) {
cnt[i] = (all >> i & 1) + ((all ^ sub) >> i & 1);
}
ans.push_back(cnt);
}
return ans;
}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 14:15:02

社会网络仿真软件:UCINET_(3).UCINET数据导入与导出

UCINET数据导入与导出 在社会网络分析中&#xff0c;数据的导入和导出是至关重要的步骤。UCINET提供了多种方法来处理数据&#xff0c;使其能够与其他软件和工具进行交互。本节将详细介绍UCINET中数据导入和导出的原理和方法&#xff0c;包括常见的数据格式、导入导出的操作步…

作者头像 李华
网站建设 2026/6/14 19:52:49

社会网络仿真软件:UCINET_(7).网络聚类与社区检测

网络聚类与社区检测 在网络分析中&#xff0c;聚类和社区检测是两个非常重要的概念。聚类通常指的是将网络中的节点根据它们之间的连接关系分成不同的组&#xff0c;而社区检测则更进一步&#xff0c;旨在识别网络中具有高内部连接和低外部连接的子网络。这些技术在社会网络分…

作者头像 李华
网站建设 2026/6/15 13:39:42

中国超大规模云服务商豪赌智能体AI,电商成为新战场

人工智能行业正在向智能体AI转型——这类系统能够自主执行多步骤任务&#xff0c;这一转变在近几个月主导了技术讨论。但是&#xff0c;当西方公司专注于基础模型和跨平台互操作性时&#xff0c;中国的科技巨头正在竞相通过电商整合来占领市场&#xff0c;这种战略分化可能会重…

作者头像 李华
网站建设 2026/6/15 14:20:29

《解锁 PyTorch 张量:多维数据操作与 GPU 性能优化全解析》

本篇技术博文摘要 &#x1f31f; 文章开篇详细介绍了张量的多维特性&#xff0c;通过 2D 矩阵及其他维度的创建方法&#xff0c;为读者构建起对张量结构的直观理解。随后深入解析张量的关键属性&#xff0c;包括数据类型、形状和设备位置&#xff0c;并通过示例代码加深理解。核…

作者头像 李华