news 2026/8/29 9:30:39

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

作者头像

张小明

前端开发工程师

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/8/26 20:09:21

社会网络仿真软件:UCINET_(4).基本网络指标计算与解释

基本网络指标计算与解释 在社会网络分析中&#xff0c;网络指标是理解网络结构和节点关系的重要工具。本节将详细介绍如何使用UCINET软件计算和解释一些基本的网络指标&#xff0c;包括度数中心性、接近中心性、介数中心性和网络密度等。通过这些指标&#xff0c;我们可以更好地…

作者头像 李华
网站建设 2026/8/19 13:28:33

社会网络仿真软件:UCINET_(9).结构洞与社会资本

结构洞与社会资本 1. 结构洞的基本概念 结构洞&#xff08;Structural Holes&#xff09;是社会网络分析中的一个重要概念&#xff0c;由社会学家罗纳德伯特&#xff08;Ronald Burt&#xff09;在1992年提出。结构洞是指网络中两个非相邻节点之间的空隙&#xff0c;即在网络…

作者头像 李华
网站建设 2026/8/21 13:07:33

HTTP和openFeign

HTTP和openFeign OpenFeign 调用本质上就是一种 HTTP 调用&#xff0c;它是一个对 HTTP 调用过程进行了深度封装的声明式 HTTP 客户端。它们的主要区别体现在开发模式和功能特性上。 简单来说&#xff0c;直接进行 HTTP 调用就像是**“手写 SQL”&#xff0c;你需要关注连接、参…

作者头像 李华
网站建设 2026/8/21 13:07:56

【课程设计/毕业设计】基于ssm的航班订票系统的设计与实现票价查询以及特价机票,便宜机票,打折机票查询预订服务【附源码、数据库、万字文档】

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

作者头像 李华
网站建设 2026/8/26 19:17:10

核心期刊拒稿率 90%?虎贲等考 AI:从选题到录用的学术加速器

“改了 6 版的论文&#xff0c;被 CSSCI 拒稿理由是‘创新点模糊’”“文献引用格式错乱&#xff0c;编辑部让返工 2 次”“实证数据缺乏支撑&#xff0c;审稿人直接打回重写”—— 学术发表路上&#xff0c;无数科研人陷入 “选题难、写作慢、录用率低” 的循环。普通 AI 工具…

作者头像 李华