无聊的计算姬 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output Sample Input 6 2 2 3 4 3 2 7 9 2 1 2 9 3 1 6 7 1 5 3 7 1 9 2 8 Sample Output Math Error 3 Math Error 6 6 1 HINT Solution 我们可以分步骗分.(Task1直接快速幂即可.) 对于前50分: 对于Task2,我们直接暴力枚举,出现一个重复…
Description "奋战三星期,造台计算机".小W响应号召,花了三星期造了台文艺计算姬.文艺计算姬比普通计算机有更多的艺术细胞.普通计算机能计算一个带标号完全图的生成树个数,而文艺计算姬能计算一个带标号完全二分图的生成树个数.更具体地,给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图K_{n,m},计算姬能快速算出其生成树个数.小W不知道计算姬算的对不对,你能帮助他吗? Input 仅一行三个整数n,m,p,表示给出的完全二分图K_{n,m} 1 <=…
Description "奋战三星期,造台计算机".小G响应号召,花了三小时造了台普通计算姬.普通计算姬比普通计算机要厉害一些 .普通计算机能计算数列区间和,而普通计算姬能计算树中子树和.更具体地,小G的计算姬可以解决这么个问题 :给定一棵n个节点的带权树,节点编号为1到n,以root为根,设sum[p]表示以点p为根的这棵子树中所有节点的权 值和.计算姬支持下列两种操作: 1 给定两个整数u,v,修改点u的权值为v. 2 给定两个整数l,r,计算sum[l]+sum[l+1]+...…
BZOJ_4765_普通计算姬_分块 Description "奋战三星期,造台计算机".小G响应号召,花了三小时造了台普通计算姬.普通计算姬比普通计算机要厉害一些 .普通计算机能计算数列区间和,而普通计算姬能计算树中子树和.更具体地,小G的计算姬可以解决这么个问题 :给定一棵n个节点的带权树,节点编号为1到n,以root为根,设sum[p]表示以点p为根的这棵子树中所有节点的权 值和.计算姬支持下列两种操作: 1 给定两个整数u,v,修改点u的权值为v. 2 给定两个整数l,r,计算…
4765: 普通计算姬 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 1547  Solved: 329[Submit][Status][Discuss] Description "奋战三星期,造台计算机".小G响应号召,花了三小时造了台普通计算姬.普通计算姬比普通计算机要厉害一些 .普通计算机能计算数列区间和,而普通计算姬能计算树中子树和.更具体地,小G的计算姬可以解决这么个问题 :给定一棵n个节点的带权树,节点编号为1到n,以roo…
Description "奋战三星期,造台计算机".小W响应号召,花了三星期造了台文艺计算姬.文艺计算姬比普通计算机有更多的艺术细胞. 普通计算机能计算一个带标号完全图的生成树个数,而文艺计算姬能计算一个带标号完全二分图的生成树个数. 更具体地,给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图K_{n,m},计算姬能快速算出其生成树个数. 小W不知道计算姬算的对不对,你能帮助他吗? Input 仅一行三个整数n,m,p,表示给出的完全二分图K_{n,m} 1 &l…
4765: 普通计算姬 Time Limit: 30 Sec Memory Limit: 256 MB Description "奋战三星期,造台计算机".小G响应号召,花了三小时造了台普通计算姬.普通计算姬比普通计算机要厉害一些.普通计算机能计算数列区间和,而普通计算姬能计算树中子树和.更具体地,小G的计算姬可以解决这么个问题:给定一棵n个节点的带权树,节点编号为1到n,以root为根,设sum[p]表示以点p为根的这棵子树中所有节点的权值和.计算姬支持下列两种操作: 1 给定两个整…
[题目]给定两边节点数为n和m的完全二分图,求生成树数取模给定的p.n,m,p<=10^18. [算法]生成树计数(矩阵树定理) [题解]参考自 [bzoj4766]文艺计算姬 by WerKeyTom_FTD 构造完全二分图的基尔霍夫矩阵的余子式如下(去除第一行第一列):n=3,m=3,空白格皆为0 为了消项形成倒三角,将所有其它n+m-1行全部加到第n行上,则有: 然后将第n行叠加到前面n-1行上,形成倒三角: 虽然不是完全的倒三角,但因为其它排列的积为0所以没有影响,那么主对角线上的乘积就…
4766: 文艺计算姬 Time Limit: 1 Sec  Memory Limit: 128 MB Description "奋战三星期,造台计算机".小W响应号召,花了三星期造了台文艺计算姬.文艺计算姬比普通计算机有更多的艺 术细胞.普通计算机能计算一个带标号完全图的生成树个数,而文艺计算姬能计算一个带标号完全二分图的生成树 个数.更具体地,给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图K_{n,m},计算姬能快 速算出其生成树个数.小W不知道计算姬算的对…
BZOJ4765: 普通计算姬 题目描述 传送门 题目分析 求的和非常奇怪,不具有连续性,所有上树的数据结构全死了. 考虑分块,思考对于一段连续的询问区间可以直接询问整块,零散块可以在树上dfs序暴力求出. 使用预处理打标记的方式搞定每个点对每个块的影响是多少.这样修改的时候直接针对差值相应变动每个块的值就可以了. 那么dfs序上的值应该怎么快速查询,可以对dfs序进行另外的分块,同时使用前缀和来快速回答每一组询问.时间复杂度就可以平衡到\(O(\sqrt n)\) 是代码呢 #include…
4765: 普通计算姬 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 1725  Solved: 376[Submit][Status][Discuss] Description "奋战三星期,造台计算机".小G响应号召,花了三小时造了台普通计算姬.普通计算姬比普通计算机要厉害一些 .普通计算机能计算数列区间和,而普通计算姬能计算树中子树和.更具体地,小G的计算姬可以解决这么个问题 :给定一棵n个节点的带权树,节点编号为1到n,以roo…
文艺计算姬 Time Limit: 1 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description "奋战三星期,造台计算机". 小W响应号召,花了三星期造了台文艺计算姬. 文艺计算姬比普通计算机有更多的艺术细胞. 普通计算机能计算一个带标号完全图的生成树个数,而文艺计算姬能计算一个带标号完全二分图的生成树个数. 更具体地,给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图K_{n,m},计算姬能快速…
题目链接 Description "奋战三星期,造台计算机".小G响应号召,花了三小时造了台普通计算姬.普通计算姬比普通计算机要厉害一些.普通计算机能计算数列区间和,而普通计算姬能计算树中子树和.更具体地,小G的计算姬可以解决这么个问题: 给定一棵\(n\)个节点的带权树,节点编号为\(1\)到\(n\),以\(root\)为根,设\(val[p]\)表示以点\(p\)为根的这棵子树中所有节点的权值和.计算姬支持下列两种操作: 给定两个整数\(u\),\(v\),修改点\(u\)的权值…
题目大意: 给定一棵\(n\)个节点的带权树有根树,设\(sum_p\)表示以点\(p\)为根的这棵子树中所有节点的权 计算姬支持下列两种操作: 给定两个整数\(u,v\),修改点\(u\)的权值为\(v\). 给定两个整数\(l,r\),计算\(\sum_{i=l}^rsum_i\) 题解: 表示自己没能想出来...被同桌嘲讽了QAQ... 首先是这道题的数据范围很奇怪,只有10W,这就说明了你有充足的时间来瞎搞 所以我们就瞎搞 如果没有修改操作那么我们直接\(O(n)\)预处理就可以\(O(…
4766: 文艺计算姬 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 456  Solved: 239[Submit][Status][Discuss] Description "奋战三星期,造台计算机".小W响应号召,花了三星期造了台文艺计算姬.文艺计算姬比普通计算机有更多的艺 术细胞.普通计算机能计算一个带标号完全图的生成树个数,而文艺计算姬能计算一个带标号完全二分图的生成树 个数.更具体地,给定一个一边点数为n,另一边点数为m,共有…
传送门 Description "奋战三星期,造台计算机".小W响应号召,花了三星期造了台文艺计算姬.文艺计算姬比普通计算机有更多的艺 术细胞.普通计算机能计算一个带标号完全图的生成树个数,而文艺计算姬能计算一个带标号完全二分图的生成树 个数.更具体地,给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图K_{n,m},计算姬能快 速算出其生成树个数.小W不知道计算姬算的对不对,你能帮助他吗? Input 仅一行三个整数n,m,p,表示给出的完全二分图K_{n,m}…
题意 给定一棵n个节点的带权树,节点编号为1到n,以root为根,设sum[p]表示以点p为根的这棵子树中所有节点的权值和.计算姬支持下列两种操作: 1 给定两个整数u,v,修改点u的权值为v. 2 给定两个整数l,r,计算sum[l]+sum[l+1]+….+sum[r-1]+sum[r] N<=10^5,M<=10^5 题解 每一个块中统计sum[i]的和,这个直接求出DFS序维护树状数组nlogn统计就行. 然后询问时对于一个整块直接加上我们统计的sum[i]的和,然后对于边角余料,我们…
对节点按编号分块.设f[i][j]为修改j号点对第i块的影响,计算f[i][]时dfs一遍即可.记录每一整块的sum.修改时对每一块直接更新sum,同时用dfs序上的树状数组维护子树和.查询时累加整块区间的sum,剩余部分bit上暴力查询.分析一下复杂度.设块大小为k,计算f数组的复杂度为O(n2/k),修改复杂度为O(nm/k+mlogn),查询复杂度O(nm/k+mklogn).不妨设nm同阶,则k=sqrt(n/logn)时最优,总复杂度O(n·sqrt(nlogn)).然而真的这样的话f…
点此看题面 大致题意: 让你求一个两边各有\(n\)和\(m\)个点的完全二分图有多少个生成树. \(prufer\)序列 这是一道比较经典的利用\(prufer\)序列结论求解答案的计数题. 大致思路 考虑一张二分图求解\(prufer\)序列,由于\(prufer\)序列求解时最后剩下的两个点必定有边相连,因此这两个点必定在二分图两侧. 由于\(prufer\)序列中记录的是每个点相邻的点,也就是说,删去一个左边的点,则就会有一个右边的点被加入\(prufer\)序列. 因此,序列中共会有\…
Brief Description 给定一棵n个节点的带权树,节点编号为1到n,以root为根,设sum[p]表示以点p为根的这棵子树中所有节点的权 值和.支持下列两种操作: 1 给定两个整数u,v,修改点u的权值为v. 2 给定两个整数l,r,计算sum[l]+sum[l+1]+....+sum[r-1]+sum[r] Algorithm Design 我们考察暴力算法: 对于查询,我们如果处理出所有的sum[i]就可以处理了.考虑到是树上的子树查询,我们考虑使用dfs序,使用BIT维护即可,…
真是道好题...感到灵魂的升华... 按dfs序建树状数组,拿前缀和去求解散块: 按点的标号分块,分成一个个区间,记录区间子树和 的 总和... 具体地,需要记录每个点u修改后,对每一个块i的贡献,记为t[u][i] 计算思路:dfs时,每到一个新的点,就让++c[其所在块],为了记录每个块中的点出现过几次,就相当于记录这个点 被每一块中的点 包含了几次 , 然后for一遍,记录t[u][i]=c[i] 当修改一个点时,这个块的和+=这个点u对块i的贡献*这个点的变化量,即sum[i]+=t[u…
题目: 给定一个一边点数为\(n\),另一边点数为\(m\),共有\(n*m\)条边的带标号完全二分图\(K_{n,m}\) 计算其生成树个数 \(n,m,p \leq 10^{18} ,p为模数\) 题解: 构建出基尔霍夫矩阵. 找到n-1阶主子式后将所有的行直接加到第一行上. 可以得到前n个是1,后m个是0的一个行向量. 然后用这个行向量消剩下的n-m-2行. 很容易得到一个上三角矩阵. 将对角线上的值乘起来即为答案. \(ans = n^{m-1}m^{n-1}\) #include <c…
让你求一个两边各有n和m个点的完全二分图有多少个生成树. 这是一道比较经典的利用prufer序列结论求解答案的计数题. 大致思路考虑一张二分图求解prufer序列,由于prufer序列求解时最后剩下的两个点必定有边相连,因此这两个点必定在二分图两侧.由于prufer序列中记录的是每个点相邻的点,也就是说,删去一个左边的点,则就会有一个右边的点被加入prufer序列.因此,序列中共会有n−1个右边的点和m−1个左边的点.所以答案就是m^(n−1)*n^(m−1) #include<bits/std…
http://www.lydsy.com/JudgeOnline/problem.php?id=4765 很nice的一道题啊(可能是因为卡了n久终于做出来了 题意就是给你一棵带点权的有根树,sum(i)表示以i为根的这颗子树中所有节点的权值和.有两种操作,一种是修改某个点的权值,另一种是给出l,r,求sum(l)+sum(l+1)...+sum(r). 首先考虑一个简单的问题,如果单求其中一个sum(i),我们可以怎样做. 很明显我们画个图,我们可以看到每个点打上dfs序之后,每个sum就变成…
传送门 题意: 给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图$K_{n,m}$ 求生成树个数 1 <= n,m,p <= 10^18 显然不能暴力上矩阵树定理 看过推到完全图的生成树个数后这道题也不难做 构建出基尔霍夫矩阵,找一个主子式,所有行加起来放一行上,用这一行消消消就发现最后对角线上有$n-1$个$m$和$m-1$个$n$和$1$个$1$ 然后要用快速乘...蒟蒻第一次用快速乘... #include <iostream> using namesp…
传送门 题意: 一棵树,支持单点修改和询问以$[l,r]$为根的子树的权值和的和 只有我这种不会分块的沙茶不会做这道题吗? 说一点总结: 子树和当然上$dfs$序了,询问原序列一段区间所有子树和,对原序列分块,$sum_i$为一块的答案 查询很显然了,整块用$sum$,非整块暴力查子树 修改的话,预处理$f[i][j]$为点$j$对第$i$块的贡献,一遍$dfs$就可以预处理出来 然后,我的$BIT$用了$build$函数竟然比不用还慢 真的很好写 #include <iostream> #i…
题目链接 这是完全二分图,那么在构造Prufer序列时,最后会剩下两个点,两点的边是连接两个集合的,这两个点自然分属两个集合 那么集合A被删了m-1次,每次从n个点中选:B被删了n-1次,每次都可以从m个点中选.so ans = n^{m-1}*m^{n-1} 答案可以根据相对顺序直接构造 //820kb 0ms #include <cstdio> typedef long long LL; LL n,m,p; LL Mult(LL a,LL b) { LL tmp=a*b-(LL)((lon…
题意 给出一棵有根树,$n$个点每个都有一个点权.$m$组操作每次可以修改一个点权或者询问编号在区间$[l,r]$的点的子树权值和的和. Solution 我们对节点编号分块,每一块统计该块中的节点的子树权值和的和.dfs处理出修改一个节点,需要对应修改它的祖先和它的所在的哪些块.另外再开一个树状数组,树状数组中每一个元素是对应dfs的点的权值,这样我们可以求出任意子树的权值和. 对于询问,在中间的块直接统计.两侧零散的块在树状数组上暴力查询子树权值和.所以令块的大小$S=\sqrt{n/\lo…
题面 传送门 题解 结,结论题? 答案就是\(n^{m-1}m^{n-1}\) 我们考虑它的\(Prufer\)序列,最后剩下的两个点肯定是一个在左边一个在右边,设左边\(n\)个点,右边\(m\)个点,\(Prufer\)序列中左边的点肯定出现了\(m-1\)次,右边的点出现了\(n-1\)次,那么就是上面那个了 听说这题可以手屠基尔霍夫矩阵做出来 //minamoto #include<bits/stdc++.h> #define R register #define ll long lo…
BZOJ 答案就是 \(n^{m-1}m^{n-1}\) \(prufer\) 证明: \(n\) 中的数字出现 \(m-1\) 次,\(m\) 中出现 \(n-1\) 次,根据 \(prufer\) 解码可知,\(n,m\) 中的数字和内部顺序确定了,那么它们的相对位置也可以确定 \(matrix-tree\) 证明: 构建基尔霍夫矩阵,去掉第一行第一列,发现分成四个部分 左上角 \((n-1)\times (n-1)\),主对角线为 \(m\),其余为 \(0\) 右下角 \(m\times…