题意: 给定一棵$n$个节点的苹果树,第$i$个点上有$a_i$个苹果。这棵树有一个特殊的性质是:从根到任何叶子的路径长度的奇偶性相同。 Sagheer 和 Soliman 将在树上轮流移动,Soliman 先手,当轮到某个玩家在自己的回合不能移动时这个玩家失败。 每次移动时,两个玩家都可以任意选择 ...
分类:
其他好文 时间:
2021-06-19 19:22:58
阅读次数:
0
link #思路: 经典套路,通过dfs序将树上修改转化为线性修改,这样问题就转化为了单点修改,区间查询,用树状数组维护。 类似题 #代码: #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef lo ...
分类:
移动开发 时间:
2021-06-15 17:41:05
阅读次数:
0
首先发现一次生长相当于去掉一个分支并增加两个分支, 那么所有树出现的概率都是相同的, 一共有 N! 种树。 所以要求输出的那个东西就是不便度的平均数 * 树的总数, 即所有树的不便度之和。 对于某棵树的不便度, 把它拆到边上, 具体地, 这棵树的不便度等于 \(\sum_u siz(u) * (n ...
分类:
移动开发 时间:
2021-02-01 12:42:17
阅读次数:
0
#include<bits/stdc++.h> using namespace std; const int N=450; struct data { int to,stb,vol; } a[N]; int head[2*N],root,tot,v[N],f[N][101],n,p,o[N]; in ...
分类:
移动开发 时间:
2020-07-28 16:55:50
阅读次数:
98
#include using namespace std; //二叉苹果树 //j代表保留树枝的总数 //做法一:当j大于子树所能保存的最大的边的时候,值都是最大的边对应的值,导致肯定没有刚好分配边数的值大 int n,dp[110][110]={0},G[100+10][100+10],k,son... ...
分类:
移动开发 时间:
2020-06-06 21:55:58
阅读次数:
76
题目大体上也算是一个树上背包的问题,只不过有个细节需要特别注意一下 父亲如果想要儿子的苹果,那么父亲和儿子之间必须要连接起来 设 f[u][j] 代表以 u 为根节点 保留 j 条边的最大价值 根据树上背包的转移方程我们很容易知道 f[u][j] = max(f[u][j] , f[v][k] + ...
分类:
移动开发 时间:
2020-02-21 00:11:46
阅读次数:
64
1.接苹果 【问题描述】 奶牛喜欢吃苹果。约翰有两棵苹果树,有N只苹果会从树上陆续落下。如果掉苹果的时候,贝西在那棵树下,她就能接住苹果。贝西一开始在第一棵树下。在苹果掉落之前,她有足够的时间来回走动,但她很懒,最多只愿意移动K次。请计算一下她最多可以接住几只苹果。 【输入】 第一行:两个整数 $N ...
分类:
其他好文 时间:
2020-02-11 20:44:26
阅读次数:
90
首先阅读题目,看到关键词围成一个圆,就能想到约瑟夫问题的环问题,题目是要求我们统计在蔬果以后所有果树的的果子总量sum,苹果树在蔬果中掉落果子的棵树D(一棵树可能多次掉落果子,但是仍然仅仅记录为一棵),每连续三棵树树掉落的情况E import java.util.Scanner; public cl ...
分类:
移动开发 时间:
2020-02-03 20:52:48
阅读次数:
138
"loj 6072 苹果树(折半搜索,矩阵树定理,容斥)" "loj" 题解时间 $ n \le 40 $ 。 无比精确的数字。 很明显只要一个方案不超过 $ limits $ ,之后的计算就跟选哪个没关系了。 折半搜索排序来统计有i个果子是有用的情况下的方案数。 然后矩阵树求生成树个数,容斥乱搞。 ...
分类:
移动开发 时间:
2020-01-31 17:18:45
阅读次数:
122
链接:Miku 这道题的dp还是先更新子节点,在更新父节点,不过问题就是怎样更新他们 我们定义ff[i][j]为第i个节点字数上共保留j条边的情况下最多的苹果数,对于每一个点,他保留的边必然是他直接保留的之前保留的边和他当前儿子保留的边的值的和加上这一条边的 边权,即ff[u][i]=max(ff[ ...
分类:
移动开发 时间:
2020-01-20 22:27:19
阅读次数:
95