P1922 女仆咖啡厅桌游吧
P1922 女仆咖啡厅桌游吧
题目背景
小v带萌萌的妹妹去玩,妹妹想去女仆咖啡馆,小v想去桌游吧。
妹妹:“我问你个问题,答不对你就做我一天的奴隶,答对了就今天我就全部听你的。”
小v:“全部都听!?”
妹妹:“嘻嘻嘻,你还是回答问题吧!”
于是小v为了自己一天的幸福,来向你求助。
题目描述
小v所在的世界被规划成了树形结构,每一个节点上都可以建一个女仆咖啡厅或者桌游吧或者什么都不建。在确定点1为根节点之后,规划局要求:对于每一个非叶子的节点i,设它子树(包括自己)中所有的女仆咖啡厅的数量为cafe[i],桌游吧数目为table[i],都有cafe[i]等于table[i]。
妹妹的问题是:这颗树最多能放多少个女仆咖啡厅。
输入输出格式
输入格式:
第一行,一个正整数N
第二至N行,每行两个正整数ui,vi,表示vi,ui有一条边。
输出格式:
只有一行,最多能放的女仆咖啡厅的个数。
输入输出样例
说明
对于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;
}
P1922 女仆咖啡厅桌游吧的更多相关文章
- 洛谷 P1922 女仆咖啡厅桌游吧
P1922 女仆咖啡厅桌游吧 题目背景 小v带萌萌的妹妹去玩,妹妹想去女仆咖啡馆,小v想去桌游吧. 妹妹:“我问你个问题,答不对你就做我一天的奴隶,答对了就今天我就全部听你的.” 小v:“全部都听!? ...
- luogu P1922 女仆咖啡厅桌游吧
题目背景 小v带萌萌的妹妹去玩,妹妹想去女仆咖啡馆,小v想去桌游吧. 妹妹:“我问你个问题,答不对你就做我一天的奴隶,答对了就今天我就全部听你的.” 小v:“全部都听!?” 妹妹:“嘻嘻嘻,你还是回答 ...
- [luoguP1922] 女仆咖啡厅桌游吧(奇奇怪怪的树形DP)
传送门 什么鬼的题? 代码 #include <cstdio> #include <cstring> #include <iostream> #define N 1 ...
- LuoguP1922 女仆咖啡厅桌游吧 (树形动态规划)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- 【团队项目选题】自选项目:桌游APP
由于我们团队的黄金点游戏结果是第二名,按理说是一定能选到一个自选项目的,所以以下只列出我们选择的自选项目 自选项目名称 桌游APP 暂定 (名字还没想好) 项目大致介绍 此APP集成了多种桌游,主 ...
- 「Luogu P5603」小O与桌游
题目链接 戳我 \(Solution\) 我们来分析题目. 实际上就是求一个拓扑序满足拓扑序的前缀最大值最多/最少 对于第一种情况,很明显一直选当前能选的最小的是最优的对吧.因为你需要大的尽可能多.用 ...
- Luogu P5603 小C与桌游【贪心+拓扑排序】
[Description]https://www.luogu.com.cn/problem/P5603 \(\;\) 题意可以简化为:一个不保证联通,n个点,m条边的DAG(有向无环图),构造一个拓扑 ...
- 树形DP详解+题目
关于树形dp 我觉得他和线性dp差不多 总结 最近写了好多树形dp+树形结构的题目,这些题目变化多样能与多种算法结合,但还是有好多规律可以找的. 先说总的规律吧! 一般来说树形dp在设状态转移方程时都 ...
- WereWolf项目 Postmortem
WereWolf项目 Postmortem (博客园的MarkDown编辑器好像有些问题,编号都显示1..) 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描 ...
随机推荐
- pip3 常用操作
清华大学pip镜像 https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ # 设置为默认 pip install pip -U pip config set ...
- springmvc Cacheable
直接上代码: <cache:annotation-driven /> <bean id="cacheManager" class="org.spring ...
- 爬虫那些事儿--Http返回码
由于爬虫的抓取也是使用http协议交互.因此需要了解Http的各种返回码所代表的意义,才能判断爬虫的执行结果. 返回码如下: 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部 ...
- PKUSC订正
Day1 T2:最大前缀和 枚举答案集合(不直接枚举答案数,相当于状态的离散化),这个集合成为答案当且仅当存在方案使得答案集合的排列后缀和>=0(如果<0就可以去掉显然更优),答案补集的前 ...
- Python 封装一个函数,查找文字字符串数字英文下标
def abc(str,data): count = [] numMax = 0 for a in range(len(str)): if a == 0: temp = str.find(data, ...
- 阿里云重磅推出物联网安全运营中心Link SOC
阿里云IoT自主研发了新一代物联网安全平台Link Security,面向IoT设备全生命周期构建了一整套全链路多层次的安全防御体系,IoT物联网平台的业务在不同层面可以按需集成安全能力. 1.首先在 ...
- mui与springMVC前后端分离
这个小dome简单来说的前后端分离,通过跨域调用接口来显示数据. 前端用到mui框架,主要来显示数据. 后端用到Java的springMVC,restful服务来做增删改查管理, 这里主要实现动态显示 ...
- 去除springboot内置tomcat
/** * @author zx * @title: ServletInitializer * @projectName activiti * @description: 解决内置tomcat * @ ...
- ssh 私钥和公钥 参考的linux就该这么学
- python之tkinter学习目录
前言 下面的目录结构,采用的学习视频资料是网易云课堂中[莫凡]老师的,在目录的最下面的地方给出了对应的链接! 学习是逐渐积累起来的,代码也是!下面的每一篇中的对应代码,都秉承着这样的一个理念:代码是成 ...