[洛谷P4492] [HAOI2018]苹果树】的更多相关文章

洛谷题目链接:[HAOI2018]苹果树 题目背景 HAOI2018 Round2 第一题 题目描述 小 C 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 C 发现每一天这棵树都会生长出一个新的结点. 第一天的时候, 果树会长出一个根结点, 以后每一天, 果树会随机选择一个当前树中没有长出过结点 的分支, 然后在这个分支上长出一个新结点, 新结点与分支所属的结点之间连接上一条边. 小 C 定义一棵果树的不便度为树上两两结点之间的距离之和, 两个结点之间…
题意 题目链接 Sol 有点自闭,.我好像对组合数一窍不通(~~~~) Orz shadowice // luogu-judger-enable-o2 #include<bits/stdc++.h> #define LL long long int mod; template<typename A, typename B> inline bool chmax(A &x, B y) {return x < y ? x = y, 1 : 0;} template<t…
洛谷题目链接:[HAOI2018]染色 题目背景 HAOI2018 Round2 第二题 题目描述 为了报答小 C 的苹果, 小 G 打算送给热爱美术的小 C 一块画布, 这块画布可 以抽象为一个长度为 \(N\) 的序列, 每个位置都可以被染成 \(M\) 种颜色中的某一种. 然而小 C 只关心序列的 \(N\) 个位置中出现次数恰好为 \(S\) 的颜色种数, 如果恰 好出现了 \(S\) 次的颜色有 \(K\) 种, 则小 C 会产生 \(W_k\) 的愉悦度. 小 C 希望知道对于所有可…
考虑生成一颗二叉树的过程,加入第一个节点方案数为\(1\),加入第二个节点方案数为\(2\),加入第三个节点方案数为\(3\),发现生成一颗\(n\)个节点的二叉树的方案数为\(n!\). 所以题目中所求即为点与点之间的距离之和,考虑每一条边的贡献,即\(\sum\limits_esize_x \times size_y\),\(x\)和\(y\)为这条边的两个端点. 可以枚举每一个节点\(i\),再枚举节点\(i\)子树大小\(j\),其和父亲的连边对答案的贡献为\(j(n-j)\),然后贡献…
P4495 [HAOI2018]奇怪的背包 题目描述 小\(C\)非常擅长背包问题,他有一个奇怪的背包,这个背包有一个参数\(P\),当他 向这个背包内放入若干个物品后,背包的重量是物品总体积对\(P\)取模后的结果. 现在小\(C\)有\(n\)种体积不同的物品,第\(i\)种占用体积为\(V_i\),每种物品都有无限个. 他会进行\(q\)次询问,每次询问给出重量\(w_i\),你需要回答有多少种放入物品的方案,能将一个初始为空的背包的重量变为\(w_i\).注意,两种方案被认为是不同的,…
思路 题目要求的其实就是每种方案的权值之和(因为每种方案的概率相等) 所以自然想到要求所有的边对最终答案的贡献次数 考虑这一条边被经过了多少次,有这个子树内的点数*子树外的点数次,即\(k\times(n-k)\) 然后考虑总共的中序遍历总共有\(n!\)种,每种方案等概率 先钦定一个点\(i\)(乘上\(i!\)),然后枚举它的\(sz\),这样相当于枚举了每种生成的树的形态,做到了不重不漏 对于这个点\(i\),考虑选择K个点作为它的子树进行统计(\(sz_i=K+1\)),然后选择的k个点…
题面 传送门 题解 字符串就硬是要和数据结构结合在一起么--\(loj\)上\(rk1\)好像码了\(10k\)的样子-- 我们设\(L=r-l+1\) 首先可以发现对于\(T\)串一定是从左到右,能取就取是最优的 我们先用后缀自动机\(+\)线段树合并求出自动机上每一个节点的\(endpos\)集合.如果\(L\)较大的时候,我们考虑二分找到第一个端点,再找下一个--这样在线段树上找的总次数是\({n\over L}\),复杂度为\(O({n\over L}\log n)\) 但是\(L\)较…
题面 传送门 题解 我们先来考虑一个联通块,这些关系显然可以写成一个异或方程组的形式,形如\(\oplus_{e\in edge_u}x_e=col_u\) 如果这个联通块的黑色点个数为奇数,那么显然这个方程是无解的 证明:每条边都在方程组的左边出现了两次,左边全部异或起来为\(0\),右边全部异或起来为\(1\),显然无解 那么如果这个方程组有解,解的个数就是\(2^{自由元数目}\) 我们随便求出这个联通块的一棵生成树,把所有树边当成自由元,容易发现对于非树边的每一种选法,树边都有一种唯一对…
题面 传送门 题解 好神仙的思路啊--orzyyb 因为不限次数,所以一个体积为\(V_i\)的物品可以表示出所有重量为\(\gcd(V_i,P)\)的倍数的物品,而所有物品的总和就是这些所有的\(\gcd\) 那么我们把每个\(V_i\)转化为\(\gcd(V_i,P)\),把\(w_i\)转化为\(\gcd(w_i,P)\),题目就可以变成问有多少种选择\(V_i\)的方法使\(V_i\)的\(\gcd\)为\(w_i\)的因子 据说当\(P\)很大的时候\(\sigma(P)\)大概只有\…
洛谷 P2015 二叉苹果树 (树上背包) 一道树形DP,本来因为是二叉,其实不需要用树上背包来干(其实即使是多叉也可以多叉转二叉),但是最近都刷树上背包的题,所以用了树上背包. 首先,定义状态\(dp[x][i]\)表示在节点\(x\)保留\(i\)个边所获得的最大苹果数,定义状态时一定要选对状态并且定义清晰(状态中包括了当前节点吗?目标状态是怎样的?).一开始我就是因为状态定义错误,所以卡了半天,之后重新定义状态后几分钟就切了这道题. 然后是普通的树上背包状态转移 \[ dp[x][i]=m…