P1922 女仆咖啡厅桌游吧

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就好

接下来上代码

 1 #include <iostream>
 2 using std::cin;
 3 using std::cout;
 4 using std::endl;
 5 int n;
 6 int u,v;
 7 int ans;
 8 int sum[100001];
 9 bool ok[100001];
10 int b[100001];
11 inline void cl(int,int);
12 int main(){
13     std::ios::sync_with_stdio(false);
14     cin>>n;
15     for (int i=1;i<n;++i){
16         cin>>u>>v;
17         cl(u,v);
18         cl(v,u);
19     }
20     for (int i=1;i<=n;++i)
21         if (ok[i])
22             ans+=sum[b[i]]^=1;
23     cout<<ans<<endl;
24 }
25 inline void cl(int bg,int ed){
26     if (b[bg]==0){
27         b[bg]=ed;
28         ok[bg]=true;
29     }
30     else ok[bg]=false;
31 }
时间: 2024-11-01 14:13:08

P1922 女仆咖啡厅桌游吧的相关文章

luogu P1922 女仆咖啡厅桌游吧

题目背景 小v带萌萌的妹妹去玩,妹妹想去女仆咖啡馆,小v想去桌游吧. 妹妹:“我问你个问题,答不对你就做我一天的奴隶,答对了就今天我就全部听你的.” 小v:“全部都听!?” 妹妹:“嘻嘻嘻,你还是回答问题吧!” 于是小v为了自己一天的幸福,来向你求助. 题目描述 小v所在的世界被规划成了树形结构,每一个节点上都可以建一个女仆咖啡厅或者桌游吧或者什么都不建.在确定点1为根节点之后,规划局要求:对于每一个非叶子的节点i,设它子树(包括自己)中所有的女仆咖啡厅的数量为cafe[i],桌游吧数目为tab

[luoguP1922] 女仆咖啡厅桌游吧(奇奇怪怪的树形DP)

传送门 什么鬼的题? 代码 #include <cstdio> #include <cstring> #include <iostream> #define N 1000001 int n, cnt; int head[N], to[N << 1], next[N << 1], size[N], cp[N]; inline int read() { int x = 0, f = 1; char ch = getchar(); for(; !isd

【团队项目选题】自选项目:桌游APP

由于我们团队的黄金点游戏结果是第二名,按理说是一定能选到一个自选项目的,所以以下只列出我们选择的自选项目. 自选项目名称:桌游APP(暂定,名字还没想好) 项目大致介绍:此APP集成了多种桌游,主要包括谁是卧底.狼人杀等(初期会先做一两个).使用场景主要是线下聚会时供大家娱乐使用.软件的功能会比市面上一些同类软件更强大且更贴心,如可以支持狼人杀的法官全部功能.软件的核心亮点在此请允许我们先不公布,到时候希望能给大家一个惊喜.

桌游『阿瓦隆』

<阿瓦隆>是以<抵抗组织>为基础扩展的同人系列,又称<抵抗组织2>或<圆桌骑士>,因趣味性而广受桌迷欢迎.这个游戏比狼人,三国杀,吸血鬼公会的优势在哪里?最重要的是这个游戏不会死人,全程不需要闭眼,无需裁判,每个人都可以从头参与到尾.要点:分析推理,演技,口才,性格,记忆力是比较关键的几个因素,分析推理跟记忆力几乎是贯穿这个游戏全程的.规则:参考『桌游干货<阿瓦隆>游戏规则及速成攻略』 - https://www.douban.com/note/

码队的新桌游

码队的新桌游 树状数组.离散化.二维偏序 #include <bits/stdc++.h> ///即找x.a<y.b<x.c&&y.a<x.b<y.c的组数 using namespace std; struct Item { int a, b, c; int id; int ans; explicit Item(int _a = 0, int _b = 0, int _c = 0) : a(_a), b(_b), c(_c) {} }; struct

爆零狗的北京9日游

感谢曾大和zzx我才有了参加ctsc和apio的机会. Day1 赶早上第一班飞机实在是有点累.到了北京着实被五星级昆泰(百泰)酒店的阵势吓到了(据说有的学科竞赛住学生宿舍).认识了原本应该和我住一间的广西oier,后来每场比赛都被屠才知道是一位广西神犇orz. 经过一连串交易最终和lxe住了一间,领了密码条,泡了个澡就早早睡觉了,毕竟第二天还有ctsc一试. Day2 一进考场发现cjk坐在我旁边,阴吹斯汀.T1时空旅行果断把我和众神犇区分开来了,脑海中飞快闪过各种各样奇怪的骗分算法,也曾经一

济南。。。日游

DAY 0 是真的开心 (尽管酒店超小,环境不太好 酒店在市中心附近,离大明湖,小吃街什么的都很近 打车去了芙蓉街,吃了很多小吃(选择困难症也没有很困难 (尽管大多数都能随时吃到 后来大家分开,跟qq姐单独走 我 太快乐了!!! 牵了qq姐的手,互相喂吃的,一起吃一个冰激凌 我圆满了!!! 啊!!! 然后去了桌游吧 我不会三国杀www 狼人杀就玩了一局 UNO学到了,还蛮好玩 晚上事有点点多,就不再提了,也不是很让人高兴 DAY 1 うれしくない 没有未来经常包含的情感,是真正的.字面意义上的.

进击的雨燕--------------协议

详情转自:http://wiki.jikexueyuan.com/project/swift/chapter2/07_Closures.html 协议定义了一个蓝图,规定了用来实现某一特定工作或者功能所必需的方法和属性.类,结构体或枚举类型都可以遵循协议,并提供具体实现来完成协议定义的方法和功能.任意能够满足协议要求的类型被称为遵循(conform)这个协议. 除了遵循协议的类型必须实现那些指定的规定以外,还可以对协议进行扩展,实现一些特殊的规定或者一些附加的功能,使得遵循的类型能够收益. 协议

在线捉鬼游戏开发之二 - 设计业务对象与对象职责划分(3)

“回忆总是残酷的”——在“设计业务对象与对象职责划分(2)”中,对旧版本的代码进行了剖析,也发现了不少臭味道,本篇将记录我是如何建设新版的业务对象职责划分. 一.复习设计模式 当初自学设计模式的路径是:从<大话设计模式>开始(做了笔记),到Gof的<设计模式>,再到辛勤网友们的各篇总结日志(只看C#的可能会有些局限~).此后,每当我有需要更新代码的时候,或者觉得不太记得清23种经典设计模式的时候,我就会回翻我的笔记,主要看:模式目的.应用场景,以最快速度在脑子里回放.在复习的同时,