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 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...
随机推荐
- [源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎
[源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎 目录 [源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎 0x00 摘要 0x0 ...
- delete、truncate、drop
DELETE DELETE属于数据库DML操作语言,只删除数据不删除表的结构,会走事务,执行时会触发trigger:每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进 ...
- Web前端浏览器默认样式重置(CSS Tools: Reset CSS)
/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */ html, ...
- Java Web程序设计笔记 • 【第5章 Servlet技术】
全部章节 >>>> 本章目录 5.1 Servlet 技术介绍 5.1.1 为什么需要Servlet 5.1.1 Servlet 简介 5.1.2 Java Web 处理流 ...
- Java Web程序设计笔记 • 【第4章 JavaBean和JSP标准动作】
全部章节 >>>> 本章目录 4.1 JavaBean 4.1.1 JavaBean 概述 4.1.2 JavaBean的重要性 4.1.3 JavaBean的特点 4.1 ...
- VNC的安装和使用
说明 VNC (Virtual Network Console)是虚拟网络控制台的缩写.它是能远程连入Linux进行图形化操作. VNC百度百科介绍:https://baike.baidu.com/i ...
- mt19937
额,这个是一个小记.没什么,就是记给自己看的,你可以走了. mt19937 需要 C++11.生成高质量随机数. mt19937 rnd(chrono::system_clock::now().tim ...
- python中多模块导入的注意点
导入模块常见的方式有 import xxx ,from xxx import yyy 或者 from xxx import yyy as a(为导入包(方法)取别名主要用于防止包名与模块中的变量重 ...
- Linux weblogic
su ****** (切换weblogic用户,不能用其他) java -jar fmw_12.1.3.0.0_wls.jar 如出现未设置 DISPLAY 环境变量 如果是未知则看看是不是roo ...
- spring controller获取web前端post数据乱码解决
web.xml文件加上如下代码<!-- post请求乱码拦截器 --><filter> <filter-name>CharacterEncodingFilter&l ...