Codeforces Round #746 Div. 2
掉分快乐qwq
C题代码以及分析(在注释里)
/*
* @Author: Nan97
* @Date: 2021-10-04 22:37:18
* @Last Modified by: Nan97
* @Last Modified time: 2021-10-04 22:49:02
*/
#include <iostream>
#include <cstring>
#define rep(i, b, s) for(register int i = (b); i <= (s); ++i)
#define pre(i, b, s) for(register int i = (b); i >= (s); --i)
using namespace std;
const int N = 1e5 + 10, M = N << 1;
int a[N], e[M], ne[M], h[N], idx, xx[N];
int n, k, xo;
int cnt;
inline void add(int a, int b) {
e[idx] = b;
ne[idx] = h[a];
h[a] = idx ++;
}
inline void out(bool flag);
int dfs(int u, int fa) {
int res = a[u];
for(int i = h[u]; ~i; i = ne[i]) {
int j = e[i];
if(j == fa)
continue;
int t = dfs(j, u);
if(t == xo) cnt ++; //如果是异或和xor 我们就 _可以_ 剪掉
else res ^= t; //否则不可以
}
return res;
}
inline void solve() {
// 题目分析
/*
*对于分割的每一个子树的异或和都为一个相同的值 假设为res
*假设树中全部节点的异或和为xor
*我们现在想一个式子 假设 a^b^c = x && a = b = c 我们可以推出 a = b = c = x
*可以扩展到>=3个数字的异或
*那么对于2个数字,a^b = x && a = b 那么只有一种可能 x = 0
*因此题目可以分类讨论一下 如果k=2 也就是只能分割k-1=1次
*此时只有xor = 0 的时候成,并且一定成立
*k>2
*所以这个树要分为几段异或和均为xor的子树
*肯定是奇数段 因为偶数段xor肯定为0 属于上面的那种情况内
*我们再看这么一个式子, a ^ a ^ a = a 此式显然成立
*上式可以推广到奇数个a的异或和为a
*上式意义何在? 只要结果异或和为xor的子树超过1个(一定为奇数) 那么肯定可以合并为3个
*并且k>2 (k的另一层含义为分为 k 个部分,和割k-1次意义相同)
*因此我们只需要找到除根节点外的子树异或和为xor的个数 >1 即可
*/
idx = 0, xo = 0, cnt = 0;
cin >> n >> k;
memset(h, -1, sizeof h[0] * (n + 1));
rep(i, 1, n) {
cin >> a[i];
xo ^= a[i];
}
rep(i, 1, n - 1) {
int u, v;
cin >> u >> v;
add(u, v); add(v, u);
}
if(!xo) {
out(1);
return;
}
dfs(1, -1);
if(k <= 2)
out(0);
else
out(cnt > 1);
}
signed main()
{
int T = 1; cin >> T;
while(T -- ) {
solve();
}
return 0;
}
inline void out(bool flag) {
if(flag) puts("YES");
else puts("NO");
}
Codeforces Round #746 Div. 2的更多相关文章
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- Codeforces Round #262 (Div. 2) 1003
Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...
- Codeforces Round #262 (Div. 2) 1004
Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...
- Codeforces Round #371 (Div. 1)
A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...
- Codeforces Round #268 (Div. 2) ABCD
CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...
随机推荐
- 1002 - Country Roads(light oj)
1002 - Country Roads I am going to my home. There are many cities and many bi-directional roads betw ...
- react hooks 如何自定义组件(react函数组件的封装)
前言 这里写一下如何封装可复用组件.首先技术栈 react hooks + props-type + jsx封装纯函数组件.类组件和typeScript在这不做讨论,大家别白跑一趟. 接下来会说一下封 ...
- mac学习Python第一天:安装、软件说明、运行python的三种方法
一.Python安装 从Python官网下载Python 3.x的安装程序,下载后双击运行并安装即可: Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的. MAC 系统一般 ...
- Java 8 的内存结构
Java8内存结构图 虚拟机内存与本地内存的区别 Java虚拟机在执行的时候会把管理的内存分配成不同的区域,这些区域被称为虚拟机内存,同时,对于虚拟机没有直接管理的物理内存,也有一定的利用,这些被利用 ...
- Wavelet Transforms
目录 目标 小波变换 Scaling Functions Wavelet Functions 二者的联系 离散的情形 高效变换 二维的情形 示例 目标 首先, 既然是变换, 那么就是从一个域到另一个域 ...
- C++ 虚函数和友元
虚函数具有动态联编性,在类族中有强大功能:友元函数具有跨类访问的功能,本质却是一种对封装的破坏. 先看这样一个例子: #include<iostream> using namespace ...
- [opencv]拟合vector<Mat>集合区域接近的元素
vector<Rect> PublicCardFrameDetection::fitrect(vector<Rect> rects){ int size = rects.siz ...
- MySQL数据操作与查询笔记 • 【目录】
持续更新中- 我的大学笔记>>> 章节 内容 第1章 MySQL数据操作与查询笔记 • [第1章 MySQL数据库基础] 第2章 MySQL数据操作与查询笔记 • [第2章 表结构管 ...
- HTML网页设计基础笔记 • 【第8章 页面布局与规划】
全部章节 >>>> 本章目录 8.1 表格布局 8.1.1 表格布局 8.2 流式布局 8.2.1 瀑布流布局 8.2.2 masonry 实现瀑布流布局 8.3 div ...
- Maven常用参数说明
缩写 全名 说明 -h --help 显示帮助信息 -am --also-make 构建指定模块,同时构建指定模块依赖的其他模块 -amd --also-make-dependents 构建指定模块, ...