题目
题意: 给定n个点的无根树,每个点具有点权a[i],删除至少1条、至多k-1条边,使得所有连通分量的异或和为0. **分析:如果所有点的异或和为0,肯定可以。仔细研究发现只需要判断分成两个连通分量和三个的情况。因为每个连通分量的异或和相等,任意两个连通分量就可以合并,合并之后其余部分异或和不变。分成两个简单,只要所有点的异或和tot = 0.分成三个难一点,不难发现这三个连通分量都是tot,这样才满足三个连通分量的异或和异或以后是tot,符合所有点的异或和为tot。 ** 解法: dfs,把每个点的所有子树遍历完以后再判断是否异或和为0,如果遍历了一半,其余部分不能保证异或和是0,而且不能再和其他部分连了。 时间复杂度:O(n + m) 代码:
// Problem: C. Bakry and Partitioning
// Contest: Codeforces - Codeforces Round #746 (Div. 2)
// URL: https://codeforces.com/contest/1592/problem/C
// Memory Limit: 256 MB
// Time Limit: 1000 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;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【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脚手架写一个简单的页面?