题目描述

这题太虎了,所以没有背景。

给你一棵树,边有黑白两种颜色,你每次可以选择两个点,把这两个点之间的唯一简单路径上的所有边颜色取反,某些边要求最终颜色必须是黑色,还有些边没有要求,问最少操作多少次能达到目的

输入格式

第一行一个整数 \(n\),代表点数

接下来\(n-1\)行,每行三个数\(x,y,z\),代表点 \(i\) 与点 \(x\) 之间有一条边,若 \(y\) 为 \(0\) 代表初始为白色,否则为黑色,若\(z\)为\(0\)代表不对最终颜色做要求,否则代表要求为黑色。

输出格式

达到目的的最少操作多少次数

样例

样例输入

7

1 0 1

1 1 1

2 0 1

2 0 1

3 1 1

3 0 1

样例输出

3

数据范围与提示

对于 \(30\%\) 的数据,所有\(x\)等于\(1\)

对于另外 \(30\%\) 的数据,所有边最终都必须为黑色

对于 \(100\%\) 的数据,\(n \leq 1000000\)

分析

树上的贪心

如果儿子中有偶数个节点不符合条件,直接两两配对

否则将剩下的节点能上传就上传

代码

#include<cmath>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define rg register
inline int read(){
rg int x=0,fh=1;
rg char ch=getchar();
while(ch<'0' || ch>'9'){
if(ch=='-') fh=-1;
ch=getchar();
}
while(ch>='0' && ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*fh;
}
const int maxn=2e6+5;
int n,h[maxn],tot=1;
struct asd{
int to,nxt,val;
}b[maxn];
void ad(int aa,int bb,int cc){
b[tot].to=bb;
b[tot].nxt=h[aa];
b[tot].val=cc;
h[aa]=tot++;
}
int ans;
int dfs(int now,int fa){
rg int cnt=0;
for(rg int i=h[now];i!=-1;i=b[i].nxt){
rg int u=b[i].to;
if(u==fa) continue;
rg int haha=dfs(u,now);
if(b[i].val==1){
cnt++;
} else if(haha){
if(b[i].val==-1) cnt++;
else ans++;
}
}
ans+=cnt/2;
if(cnt&1) return 1;
else return 0;
}
int main(){
memset(h,-1,sizeof(h));
n=read();
rg int aa,bb,cc;
for(rg int i=2;i<=n;i++){
aa=read(),bb=read(),cc=read();
if(cc==0){
ad(i,aa,-1);
ad(aa,i,-1);
} else {
if(bb==0){
ad(i,aa,1);
ad(aa,i,1);
} else {
ad(i,aa,0);
ad(aa,i,0);
}
}
}
ans+=dfs(1,0);
printf("%d\n",ans);
return 0;
}

联赛模拟测试14 A. 虎的更多相关文章

  1. NOIP模拟测试14

    考完19了再写14,我也是够咕的. 14的题很好,也充分暴露了我的问题. T1是个分析性质推结论的题 对于区间[L,R],不妨设a[L]!=a[R],那么两个端点对答案没有贡献,也就是[L+1,R], ...

  2. [考试反思]0807NOIP模拟测试14:承认

    一大排并列Rank#9之一. 考试题还没改完(而且并不会模拟退火)所以题解又只能咕了 然而并不想吐槽T2对sjzyz是原题导致4个AC里面有3个他们的 虽说这次的成绩不怎么样,但是这次的考试过程是全新 ...

  3. 联赛模拟测试20 C. Weed

    题目描述 \(duyege\) 的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹. 为了查出真相,\(duyege\) 准备修好电脑之后再进行一次金坷垃的模拟实验. 电脑上面有若干层金坷垃,每次只能在 ...

  4. 8.7 NOIP模拟测试14 旋转子段+走格子+ 柱状图

    T1 旋转子段 30% 暴力枚举起点和长度,暴力判断,o(n3)  不知道为什么我拿了40分... 60% 每一个点都有一个固定的旋转中心可以转成固定点,枚举旋转点和长度. 100% 用一个vecto ...

  5. 2019.8.7 NOIP模拟测试14 反思总结

    先扔代码 调完自闭网络流了,新一轮考试前看看能不能赶完…… 考得极其爆炸,心态也极其爆炸,真的是认识到自己能力上的不足 思维跑偏,代码能力差 就这样吧,再努力努力,不行就AFO T1旋转子段: 因为我 ...

  6. 联赛模拟测试5 涂色游戏 矩阵优化DP

    题目描述 分析 定义出\(dp[i][j]\)为第\(i\)列涂\(j\)种颜色的方案数 然后我们要解决几个问题 首先是求出某一列涂恰好\(i\)种颜色的方案数\(d[i]\) 如果没有限制必须涂\( ...

  7. 联赛模拟测试8 Dash Speed 线段树分治

    题目描述 分析 对于测试点\(1\).\(2\),直接搜索即可 对于测试点\(3 \sim 6\),树退化成一条链,我们可以将其看成序列上的染色问题,用线段树维护颜色相同的最长序列 对于测试点\(7\ ...

  8. 联赛模拟测试10 C. 射手座之日

    题目描述 分析 方法一(线段树) 线段树维护的是以当前节点为左端点的区间的贡献 而区间的右端点则会从 \(1\) 到 \(n\) 逐渐右移 当我们把右端点从 \(i-1\) 的位置扩展到 \(i\) ...

  9. 联赛模拟测试12 C. sum 莫队+组合数

    题目描述 分析 \(80\) 分的暴力都打出来了还是没有想到莫队 首先对于 \(s[n][m]\) 我们可以很快地由它推到 \(s[n][m+1]\) 和 \(s[n][m-1]\) 即 \(s[n] ...

随机推荐

  1. 浅谈HASH长度拓展攻击

    前言 最近在做CTF题的时候遇到这个考点,想起来自己之前在做实验吧的入门CTF题的时候遇到过这个点,当时觉得难如看天书一般,现在回头望去,仔细琢磨一番感觉也不是那么难,这里就写篇文章记录一下自己的学习 ...

  2. [bash]调用linux命令获得结果存入变量的两种方式

    代码: #!/bin/bash ls=$(ls) echo $ls whoami=`whoami` echo $whoami 执行结果: [os-××××××××101z ~]$ sh cmd2.sh ...

  3. 现象:当指定logback的FileNamePattern为日期2020-01-15后,如果有线程不断的往里写log,过了零点文件不会变成下一日2020-01-16,还是会在2020-01-15里继续写 结论:写log的线程不停,文件不会按日子更换。

    logback版本:1.1.11 这个是我实验验证的,昨天我配置了一个logback,然后用两个线程不断往里写log,结果发现到了今天2020-01-16日,log文件还是昨天的logbackCfg. ...

  4. opentracting+jager分布式链路追踪探索实践

    一.Opentracing opentracing通过提供平台无关.厂商无关的API,使得开发人员可以方便地实现追踪系统.opentracing提供了用于运营支撑系统和针对特定平台的辅助程序库,被跟踪 ...

  5. Spring-代理模式

    代理模式 目录 代理模式 1. 代理模式的分类 2. 静态代理 1. 角色分析 2. 代码步骤 3. 代理的好处 4. 进一步理解 3. 动态代理 1. 角色分析 2. 对动态代理的两个关键类的理解 ...

  6. SSM框架中添加写日志功能

    前提:要导入log4j的jar包 在web.xml中输入: <!--日志加载--> <context-param> <param-name>log4jConfigL ...

  7. appium 基础二:常用api接口

    一.获取手机分辨率 size=driver.get_window_size()#获取手机屏幕大小,分辨率 print(size)#{'width': 720, 'height': 1280} 得到的是 ...

  8. MySQL关于useSSL的问题,会弹出警告

    我在手动配置dbcp时,执行数据库相关的操作时,报错以下: Fri Aug 28 21:10:19 CST 2020 WARN: Establishing SSL connection without ...

  9. pycharm之ctrl+鼠标滚轮调整字体大小

    按照图示设置,可以添加:ctrl+鼠标滚轮调整字体大小功能 1. 2.

  10. 吴恩达《深度学习》-第五门课 序列模型(Sequence Models)-第三周 序列模型和注意力机制(Sequence models & Attention mechanism)-课程笔记

    第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 3.1 序列结构的各种序列(Various sequence to sequence ...