牛客练习赛55 E-树 树形DP】的更多相关文章

题目链接: 题意:给出n个点,n-1条边求任意两个点的距离平方的和 解法: f[i]表示这个点的高度 sz[i]表示这个子树的大小 szz[i]表示这个这个子树大小的平方 sum[i]表示这个子树所有点高度的和 两个点i, j的距离dis = f[i] + f[j] - 2 * f[lca(i, j)] dis的平方 =  f[i] * f[i] + f[j] * f[j] + 2 * f[i] * f[j] * 4 * f[lca(i, j)] * f[lca(i, j)]  - 4 *  (…
牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 "你已经是一个成熟的孩子了,要学会自己烹饪了!" 小 Y 上山拜师学艺,经过 年之长的厨艺练习,已成为当世名厨,今天他接受邀请,在众人面前展示自己高超的厨艺. 人们给小 Y 提供了 种食物,每种食物无限量供…
链接:https://www.nowcoder.com/acm/contest/2/B来源:牛客网 题目描述 shy有一颗树,树有n个结点.有k种不同颜色的染料给树染色.一个染色方案是合法的,当且仅当对于所有相同颜色的点对(x,y),x到y的路径上的所有点的颜色都要与x和y相同.请统计方案数. 输入描述: 第一行两个整数n,k代表点数和颜色数: 接下来n-1行,每行两个整数x,y表示x与y之间存在一条边: 输出描述: 输出一个整数表示方案数(mod 1e9+7). 输入例子: 4 3 1 2 2…
链接:https://ac.nowcoder.com/acm/contest/180/B 来源:牛客网 烟花 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge, 64bit IO Format: %lld 题目描述 小a有nn个烟花,每个烟花代表着互不相同的颜色,对于第ii个烟花,它有p_ip i ​ 的概率点燃,现在小a要去点燃它们,他想知道产生颜色的期望个数 及 产生恰好产生kk种颜色的概率 输入描述: 第一行…
题意 你有一颗大小为\(n\)的树,点从\(1\)到\(n\)标号. 设\(dis⁡(x,y)\)表示\(x\)到\(y\)的距离. 求\(\sum_{i=1}^{n}\sum_{j=1}^{n}dis^2(i,j)\)对\(998244353\)取模的结果. 分析 设\(d_x\)为点\(x\)的深度. \(dis(x,y)=d_x+d_y-2*lca(x,y)\) \(dis^2(x,y)=d_x^2+d_y^2+2*d_x*d_y-4*d_{lca(x,y)}*(d_x+d_y)+4*d_…
题目链接(https://ac.nowcoder.com/acm/contest/358/D) 题目描述 出题人的妹子送了出题人一个手环,这个手环上有 n 个珠子,每个珠子上有一个数. 有一天,出题人和妹子分手了,想把这个手环从两个珠子间切开,并按顺时针顺序展开成一条链. 可以发现,这条链一共有 n 种可能性.求这 n 种可能性的逆序对数之积模 1000000007. 输入描述: 第一行一个数 n,表示珠子个数. 接下来一行 n 个数,以顺时针顺序给出每个珠子上的整数 样例输入 4 1 3 2…
筱玛的字符串 思路 :dp [ i ] [ j ] [ 3 ] 分别代表到第 i 位时 左括号比右括号多 j ,后面有三个状态 分别表示当前位置 S3的字符 是正在反转的,还是 反转完成的,还是没有反转的, 根据提议要求 反转的只能是一段连续区间,然后转移即可. 注意 反转完成之后 不能再开始一段新的反转过程 . #include<bits/stdc++.h> using namespace std; #define mod 1000000007 #define ll long long #d…
先缩环建树, 对于树上个环$x,y$, 假设$x,y$路径上有$cnt$个环(不包括$x,y$), 贡献就为$2^{cnt}$. 这题卡常挺严重的, 刚开始用并查集合并竟然T了. #include <iostream> #include <algorithm> #include <cstdio> #include <queue> #define REP(i,a,n) for(int i=a;i<=n;++i) #define pb push_back…
题目链接 题目大意 要你求出有多少个长度为n的排列满足m个限制条件 第i个限制条件 p[i]表示前 p[i]个数不能是1-p[i]的排列 题目思路 这个感觉是dp但是不知道怎么dp 首先就是要明白如果不满足1-p[i]为全排列,那么前p[i]个数必定有大于p[i]的数 那么就可以设\(dp[i][j]为前i个数中最大值为j的个数\) 最后的答案就是\(dp[n][n]\) 他这个的限制条件其实就是使得\(dp[p[i]][p[i]]=0\) 代码 #include<set> #include&…
题目链接 题目大意 给你一个长为n(n<=5e3)的数组a.随机使得k个元素增加d.要你求多大的概率使得,这些数组元素的相对大小不发生改变 输出 n 行每行一个整数,第 i 行的整数表示 k=i 时的答案 题目思路 看了题解觉得是一个不太难的dp,但有点难想到 令\(dp[i][j][1]\) 表示为前i个元素有j个增加k,并且第i个元素加了k 令\(dp[i][j][0]\) 表示为前i个元素有j个增加k,并且第i个元素吗没有加k 然后转移即可 代码 #include<set> #in…
题意:RT 题解:先对\(p\)排个序,然后设\(dp[i]\)表示前\(i-1\)个\(p[i]\)满足条件但是\(p[i]\)不满足,即在\([1,p[i]]\)中不存在从\(p[1]\)到\(p[i-1]\)[的排列,比如说\(p[1]=1\),\(p[2]=2\),\(p[3]=3\),则\(dp[4]\)中一定不能存在\([1,x,x,x](p[1])\),\([1,2,x,x](p[2])\),\([1,2,3,x]\)这样的序列,因为这些对于\(p[1]\)到\(p[i-1]\)存…
题意: 现在一共有n天,第i天如果有流星雨的话,会有wi颗流星雨. 第1天有流星雨的概率是p1. 如果第i−1 (i≥2)天有流星雨,第i天有流星雨的可能性是pi+P,否则是pi. 求n天后,流星雨颗数的期望. 分数以逆元形式输出   思路: 直接在逆元情况下做 第i天有流星雨的概率为t[i]=t[i-1]*(p[i-1]+P)+(1-t[i-1])*p[i] 注意减法的时候要加mod 代码: #include<iostream> #include<cstdio> #include…
牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ ​ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, ​ 1 l r 询问区间[l,r]内的元素和 ​ 2 l r 询问区间[l,r]内的 元素的平方 和 ​ 3 l r x 将区间[l,r]内的每一个元素都乘上x ​ 4 l r x 将区间[l,r]内的每一个元素都加上x 输入描述: 第一行两个数n,m 接下来一行n个数表示初始序列 就下来m行每行第一个数为操作方法opt, 若opt=1或者opt=2,则之后跟着两个数为l,r 若op…
题目链接  牛客练习赛29E 对$20$位分别建立线段树.首先$1$和$2$可以合起来搞(左移右移其实是等效的) 用个lazy标记下.转移的时候加个中间变量. $3$和$4$其实就是区间$01$覆盖操作. $5$就直接做就可以了. #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i(a); i <= (b); ++i) #define dec(i, a, b) for (int i(a…
牛客练习赛11 假的字符串 (Trie树+拓扑找环) 链接:https://ac.nowcoder.com/acm/problem/15049 来源:牛客网 给定n个字符串,互不相等,你可以任意指定字符之间的大小关系(即重定义字典序),求有多少个串可能成为字典序最小的串,并输出它们 题解:对于第i个字符串来说,如果有一个串是他的前缀,那么这个前缀的字典序重定义后是肯定比他小的,所以我们用trie树保存前缀 ​ 对于当前字符串,从该字符串的第i个字母向其父亲节点上的其他字母连边,表示存在大小关系\…
A题,C题不讲,基础题(但是我要抨击一下这次比赛,卡cin,cout,卡的太狠了,根本就不让过的那种,QAQ) 链接:https://www.nowcoder.com/acm/contest/157/B来源:牛客网 凤 凰 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 凤凰于飞,翙翙其羽,亦集爰止.                                         ——<…
牛客练习赛53 超越学姐爱字符串 链接:https://ac.nowcoder.com/acm/contest/1114/A来源:牛客网 超越学姐非常喜欢自己的名字,以至于英文字母她只喜欢"c"和"y".因此超越学姐喜欢只含有"c"和"y"的字符串,且字符串中不能出现两个连续的"c".请你求出有多少种长度为n的字符串是超越学姐喜欢的字符串.答案对1e9+7取模. 输入描述: 输入一个整数n.1<=n&…
3572: [Hnoi2014]世界树 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1084  Solved: 611[Submit][Status][Discuss] Description 世界树是一棵无比巨大的树,它伸出的枝干构成了整个世界.在这里,生存着各种各样的种族和生灵,他们共同信奉着绝对公正公平的女神艾莉森,在他们的信条里,公平是使世界树能够生生不息.持续运转的根本基石.世界树的形态可以用一个数学模型来描述:世界树中有n个种族,种…
2286: [Sdoi2011消耗战 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 2120  Solved: 752[Submit][Status][Discuss] Description 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望.已知在其他k个岛屿上有丰富能源,为了防止敌军获取能源,我军的任务是炸毁…
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM 时空裂隙 SOLUTION 楠神口胡算法我来实现系列 从小到大枚举边权,对于当前的权值,在当前的图找出所有等于该权值的边,把这些边的顶点用其在并查集中的代表元(即fa[x])替换,然后建图,求所建图的桥边.求完之后把每条边的两个顶点合并(缩点),然后枚举下一…
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 「生命在各处成长.我的族人只是在寻找成长最旺的地方.」               ——妮沙瑞文 奥札奇军团降临!赞迪卡陷入危机!无尽轮回钨拉莫和真理屠夫寇基雷带领着这群庞大的掠食者在赞迪卡肆意破坏.旅法师妮莎瑞文…
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 「只要我拉动绳线,你就得随之起舞.」          ——泰兹瑞 泰兹瑞来到卡拉德许之后,由于他精湛的神器制造技术,可谓是过的如鱼得水.这次,他为自己打造了一个编辑器,称为威穆(Veim).操作威穆时,有两种模式,…
51nod 1353 树 | 树形DP好题! 题面 切断一棵树的任意条边,这棵树会变成一棵森林. 现要求森林中每棵树的节点个数不小于k,求有多少种切法. 数据范围:\(n \le 2000\). 题解 //为什么这道题做的人这么少呢--感觉这道题超级经典,非常符合上周末模拟那种树形DP的套路.会做这道题之后,可以想出许多类似的树形DP. 首先状态很好想:\(dp[u][i]\)表示"以u为根的子树中,与u相连的联通块大小是i,剩下的联通块大小均大于k"的方案数. 下面的题解中,我们设要…
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 ​ 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 QingyuQingyu 当选了 IODS 9102 的出题人.众所周知, IODS 是一场极其毒瘤的比赛.为了在这次比赛中取得好的成绩,立华奏决定学习可能考到的每一个知识点. 在 QingyuQingyu 的博客中,立华奏得知这场比赛总共会考察选手 n 个知识点.此前,立华奏已经依靠自学学习了其中…
链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #include <bits/stdc++.h> using namespace std; ; const int INF = 0x3f3f3f3f; ; ; int n, q; long long p[maxn]; int main() { scanf("%d", &n);…
传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费  x_i 的时间,同时完成第 i 个任务的时间不能晚于 y_i ,时间掌控者向小A提出了一个条件:如果完成第 i 个任务的时间本应是 t ,但小A支付 m 个金币的话,他可以帮助小A在 t-m*z_i  时刻完成第 i 个任务, z_i 是时间参数,会在输入中给出 小A想按时完成所有任务,请你帮他制定一个花费金币最少的方案 注意:不能使得某个任务…
树链求并又不会写,学了一发虚树,再也不虚啦~ 2286: [Sdoi2011]消耗战 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 5002  Solved: 1869[Submit][Status][Discuss] Description 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望.已知在其他k个岛屿上…
题目链接 题目背景 一座城市,往往会被人们划分为几个区域,例如住宅区.商业区.工业区等等.B市就被分为了以下的两个区域--城市中心和城市郊区.在着这两个区域的中间是一条围绕B市的环路,环路之内便是B市中心. 题目描述 整个城市可以看做一个N个点,N条边的单圈图(保证图连通),唯一的环便是绕城的环路.保证环上任意两点有且只有2条路径互通.图中的其它部分皆隶属城市郊区. 现在,有一位名叫Jim的同学想在B市开店,但是任意一条边的2个点不能同时开店,每个点都有一定的人流量Pi,在该点开店的利润就等于该…
BZOJ_2286_[Sdoi2011]消耗战_虚树+树形DP Description 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望.已知在其他k个岛屿上有丰富能源,为了防止敌军获取能源,我军的任务是炸毁一些桥梁,使得敌军不能到达任何能源丰富的岛屿.由于不同桥梁的材质和结构不同,所以炸毁不同的桥梁有不同的代价,我军希望在满足目标的同时使得总代价最小. 侦查部…
牛客练习赛22C 一共有 n个数,第 i 个数是 xi  xi 可以取 [li , ri] 中任意的一个值. 设 ,求 S 种类数. 感觉二进制真是一个神奇的东西. #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <string> #include <bitset> using namespace std; b…