当前位置: 首页 > news >正文

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

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;
}
};

http://www.jsqmd.com/news/334823/

相关文章:

  • 社会网络仿真软件:UCINET_(10).网络演化模型
  • 实测5个免费降ai率工具推荐,还有免费ai查重!降低ai率更轻松(2026届毕业生必看!)
  • 555555
  • 架构思维的精髓:在解构与集成间驱动数字化演进
  • Kubernetes 基于sealos和nerdctl实现镜像管理
  • 333333
  • 留心短期相聚这些细节,爸妈记性变差、迷路可能是老年痴呆症前兆表现 - 资讯焦点
  • BASE64格式图片储存到本地磁盘
  • 解锁免疫潜能:B 细胞活化的 “黄金密钥”
  • AI原生应用领域多租户技术的创新实践
  • 社会网络仿真软件:UCINET_(8).结构洞与社会资本分析
  • React Native for OpenHarmony:构建高性能、高体验的 TextInput 输入表单
  • 社会网络仿真软件:UCINET_(9).结构洞与社会资本
  • 永辉超市卡回收方法、流程与折扣全解析 - 京顺回收
  • 社会网络仿真软件:UCINET_(7).网络聚类与社区检测
  • 洛谷 P3503 [POI 2010] KLO-Blocks 题解
  • 社会网络仿真软件:UCINET_(6).中心性与权力分析
  • 多语言 SEO 破局:从零搭建跨语言主题权威性,抢占全球流量
  • 社会网络仿真软件:UCINET_(6).基本网络度量指标
  • 实时渲染 + AI算法:直播美颜SDK中智能美妆的技术架构拆解
  • 基于深度学习的衣物分类识别 AI图像识别技术在衣物分类 短袖衬衫识别 图像数据集
  • 2026武汉临空改善型住宅及商铺推荐榜低密现房优享 - 资讯焦点
  • 高性能直播美颜sdk开发方案:智能美妆算法如何兼顾效果与性能?
  • 日程
  • 财务发票报销审核严?AI自动查合规性,不合规一键退回
  • 销售客户需求记不住?RPA自动存需求,后续推荐更精准
  • 社会网络仿真软件:UCINET_(4).数据准备与导入
  • 宏智树 AI:问卷设计还在 “凭经验凑题”?AI 让 “无效调研” 变 “数据金矿”!
  • 宏智树 AI 封神!学术 PPT 不用熬:开题 / 答辩 / 汇报 30 分钟速成
  • 社会网络仿真软件:UCINET_(5).网络可视化技术