P1922 女仆咖啡厅桌游吧

题目背景

小v带萌萌的妹妹去玩,妹妹想去女仆咖啡馆,小v想去桌游吧。

妹妹:“我问你个问题,答不对你就做我一天的奴隶,答对了就今天我就全部听你的。”

小v:“全部都听!?”

妹妹:“嘻嘻嘻,你还是回答问题吧!”

于是小v为了自己一天的幸福,来向你求助。

题目描述

小v所在的世界被规划成了树形结构,每一个节点上都可以建一个女仆咖啡厅或者桌游吧或者什么都不建。在确定点1为根节点之后,规划局要求:对于每一个非叶子的节点i,设它子树(包括自己)中所有的女仆咖啡厅的数量为cafe[i],桌游吧数目为table[i],都有cafe[i]等于table[i]。

妹妹的问题是:这颗树最多能放多少个女仆咖啡厅。

输入输出格式

输入格式:

第一行,一个正整数N

第二至N行,每行两个正整数ui,vi,表示vi,ui有一条边。

输出格式:

只有一行,最多能放的女仆咖啡厅的个数。

输入输出样例

输入样例#1: 复制

5
1 2
2 3
3 4
2 5
输出样例#1: 复制

2

说明

对于30%的数据,1<=N<=20

对于100%的数据,1<=N<=10^5

洛谷题解:

正在我准备交题解时,发现有人提前交了,令我很尴尬于是我决定用一种OP的方法来诠释这道题

首先,AC链接

215ms比第二快15ms(然并卵)

好,开始正文

等等,我先解释一波,由于算法比较玄学,所以需要画图,然而蒟蒻我并不知道怎么把图传到网站上,所以,大家将就着拿笔画一下吧。。。

我们先看样例吧(其实是我懒的造数据),算了还是自己造吧,好像不太好,来一波输入(只有边)

1 2 2 3 3 4 4 5 5 6 4 7 2 8 好的就这样吧

先说点别的(感觉今天非常语无伦次)

首先如果答案想要增加,必然要有其它的叶节点的参与,因为内部节点全部为偶数,在内部节点间传递不会增加,所以内部节点间互不干扰,所以只要统计每个内部节点连接的叶节点数就好,因为内部节点算作自己的子树的一部分,所以如果一个内部节点连接的叶节点数为奇数,则内部节点开一个店,否则不开,那么很容易想到统计度数为一的点然后找唯一与其相连的点并使该点的权值加一,每当权值为奇数时就++ans,进一步,因为奇偶只看最后一位二进制,所以每次只要让权值异或1就好了,接下来,因为奇数时加而奇数时权值为一,那么我们简单粗暴一点,直接ans+=权值^=1就好

接下来上代码

 #include <iostream>
using std::cin;
using std::cout;
using std::endl;
int n;
int u,v;
int ans;
int sum[];
bool ok[];
int b[];
inline void cl(int,int);
int main(){
std::ios::sync_with_stdio(false);
cin>>n;
for (int i=;i<n;++i){
cin>>u>>v;
cl(u,v);
cl(v,u);
}
for (int i=;i<=n;++i)
if (ok[i])
ans+=sum[b[i]]^=;
cout<<ans<<endl;
}
inline void cl(int bg,int ed){
if (b[bg]==){
b[bg]=ed;
ok[bg]=true;
}
else ok[bg]=false;
}

最新文章

  1. Atitit 软件工程概览attilax总结
  2. Sqoop2搭建及使用
  3. MySQL 使用笔记(一) 关联
  4. H5调用Android播放视频
  5. HDU 1257 最少拦截系统(Dilworth定理+LIS)
  6. [Android Studio 1A] – 插件
  7. SQLite之读取数据库内容
  8. Jordan Lecture Note-11: 典型相关分析(Canonical Correlation Analysis, CCA).
  9. link与@import区别
  10. rails第一次做项目
  11. 上海西服定制Angry Eagle 顶级西服,私人订制你的美
  12. javascript中数组方法小计
  13. 类A是公共的,应在名为A.java的文件中声明错误
  14. 将wiki人脸数据集的性别信息提取出来制作标签
  15. PHP反射原理的实现
  16. 在搭建tesseract-OCR环境中遇到问题和反省
  17. vscode编辑Markdown时的贴图工具
  18. 【SqlServer】SqlServer的游标使用
  19. [ROM]HTC ThunderBolt 4.0.4 刷机教程
  20. IntelliJ IDEA 2017版 开发SpringBoot的全局配置文件使用

热门文章

  1. activemq启动失败修改Linux服务器名称
  2. linux crontab 计划任务编写
  3. 泛型(Generic)方法(函数,算法)
  4. JAVA call dll
  5. PHP ftp_rename() 函数
  6. bzoj1294题解
  7. NX二次开发-UFUN获取工程图视图边界线颜色UF_DRAW_ask_border_color
  8. Go语言中new()和 make()的区别详解
  9. nutch集成solr和中文分词
  10. 用python写的自动转发邮件信息模板