题目 题意: 给定n个点m条边,求一个最小生成树。not权值和最小,而是所有边的or值最小。 思路: 考虑到边权不超过1e9,对应2^30. 可以枚举答案,即设置0-29位均为1,从大到小将其置为0,判断满足当前or值前提下能否生成一个树,若可以,该位完全可以置为1;否则,该位必须保留。 时间复杂度: O(30 * mlogm),对于每一位执行一次Kru算法 代码:
// Problem: G. MinOr Tree
// Contest: Codeforces - Codeforces Round #764 (Div. 3)
// URL: https://codeforces.com/contest/1624/problem/G
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define OldTomato ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
#define fir(i,a,b) for(int i=a;im;
for(int i=0;i>x>>y>>z;
a[tot++] = {x,y,z};
}
int ans = (1
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?