摘要: 给出一个n个点的树。 每次询问点x的子树内出现次数为y的颜色至少有多少种。 题解: 先将询问离线。 用f数组记录每种颜色在当前子树内的出现次数情况 用cnt数组记录当前子树内出现次数大于等于i的不同颜色数量 当前节点的f和cnt来源于重儿子。 然后更新f的状态时,cnt[f[i]]++即可。 然后遍 阅读全文
posted @ 2021-04-01 23:16 zlc0405 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 给出一个n个点的树 求出树中每个子树出现次数最多的所有颜色的编号的和。 题解: 搜索的过程中,重儿子所在的子树搜一遍,记录颜色的出现情况 然后把轻儿子往重儿子上合并 #include<bits/stdc++.h> using namespace std; const int maxn=1e5+100 阅读全文
posted @ 2021-04-01 22:46 zlc0405 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 只有22种字符。 一个串满足答案的条件是: 每个字符出现次数都为偶数或者出现次数为奇数的字符仅有一个。 因此我们可以考虑: 用0表示这个字符出现次数为偶数,1表示出现次数为奇数。 而对于一个路径上的字符,我们只需要考虑每个字符的出现次数,这样我们用一个整数就可以表示出所有符合条件的状态:0或者(1< 阅读全文
posted @ 2021-04-01 21:57 zlc0405 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1。树上每个节点i对应一个值k[i]。每个点都有一个颜色,初始的时候所有点都是白色的。 你需要通过一系列操作使得最终每个点变成黑色。每次操作需要选择一个节点i,i必须是白色的,然后i到根的链上(包括节点i与根)所有与节点i距离小于k[i]的点 阅读全文
posted @ 2021-04-01 13:26 zlc0405 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 学校实行学分制。 每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分。 学校开设了 N 门的选修课程,每个学生可选课程的数量 M 是给定的。 学生选修了这 M 门课并考核通过就能获得相应的学分。 在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其他的一些课程的基础 阅读全文
posted @ 2021-04-01 12:54 zlc0405 阅读(57) 评论(0) 推荐(0) 编辑
摘要: “你,你认错人了。我真的,真的不是食人魔。”--蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于k,两种方案不同当且仅当存在一条边在一个方案中被删除,而在另一个方案中未被删除,答案对998244353取模 #include<bits/stdc++.h> using nam 阅读全文
posted @ 2021-04-01 12:35 zlc0405 阅读(44) 评论(0) 推荐(0) 编辑