news 2026/6/10 18:29:16

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

作者头像

张小明

前端开发工程师

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/9 22:24:15

社会网络仿真软件:UCINET_(6).基本网络度量指标

基本网络度量指标 在社会网络分析中&#xff0c;网络度量指标是用于描述网络结构和节点特性的关键工具。这些指标可以帮助我们理解网络中的节点关系、中心性、聚类和路径等特性。UCINET提供了多种网络度量指标的计算功能&#xff0c;通过这些指标&#xff0c;用户可以深入分析…

作者头像 李华
网站建设 2026/6/7 22:47:57

到底什么是企业采购数字化转型?——协同型 SRM 才是关键

谢邀 &#xff0c;大家都在说采购数字化转型&#xff0c;那到底什么是企业采购数字化转型&#xff1f; 可以先问自己几个问题&#xff1a; 你们企业的采购流程&#xff0c;是不是已经上线系统了&#xff1f;审批已经电子化了&#xff1f;供应商的报价、交期、合同都在线吗&am…

作者头像 李华
网站建设 2026/6/10 14:58:36

数字图像处理篇---图像滤波

图像平滑&#xff0c;你可以把它们想象成不同功能和风格的“滤镜”或“工具”。 核心思想 滤波就像用一个“小窗口”在图片上滑动&#xff0c;窗口里的像素经过某种“计算规则”处理后&#xff0c;得到一个新的像素值。 一、平滑滤波&#xff08;低通滤波&#xff09;—— “和…

作者头像 李华
网站建设 2026/5/22 22:01:20

SSM计算机毕设之基于ssm的生产设备信息管理系统的设计与实现基于Java+SSM的生产设备信息管理系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华