【BJOI 2018】 求和】的更多相关文章

Description 题库链接 给你一棵 \(n\) 个结点的有根树, \(m\) 次询问这棵树上一段路径上所有节点深度的 \(k\) 次方和. \(1\leq n\leq 300000,1\leq k\leq 50\) Solution 树剖之后维护 \(50\) 个前缀和数组. 只有刷水题才能维持得了生活这样子... Code #include <bits/stdc++.h> using namespace std; const int N = 300000+5, yzh = 99824…
[题目链接] 点击打开链接 [算法] 预处理i^k的前缀和,对于每次询问,树上倍增即可 时间复杂度 : O(nk + mlog(n)) [代码] #include<bits/stdc++.h> using namespace std; #define MAXK 55 #define MAXN 300010 #define MAXLOG 20 ; struct Edge { int to,nxt; } e[MAXN<<]; int n,x,i,j,y,q,k,Lca,tot; int…
题意:求01成立. 并查集维护,记录一个变量判断决策. #include<bits/stdc++.h> using namespace std; #define int long long const int maxn = 4000010; int f[maxn]; inline int find(int x){ return x == f[x]?x : f[x] = find(f[x]); } signed main() { ios::sync_with_stdio(false); int…
bjoi 2018 求和 唯一一道可能切的题一个数组还没开long long就成0分了 题目大意: 一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的k次方和,而且每次的k可能是不同的 此处节点深度的定义是这个节点到根的路径上的边数 思路: 考试的时候随便写了个树剖 剖下来之后搞五十个次方的前缀和 然后一个数组乘起来没开long long #include<iostream> #include<cstdio> #include<cmath> #include&…
bjoi 2018 染色 推了个错误结论得了60分? 题目大意: 一个无重边和自环的无向图,并且对每个点分别给了一个大小为2的颜色集合,只能从这个集合中选一种颜色给这个点染色 求一个染色方案使得没有两个有边相连的点被染了相同的颜色 求是否无论颜色集合是什么,均有办法按照要求染色 思路: #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstri…
2018 Multi-University Training Contest 4 6333.Problem B. Harvest of Apples 题意很好懂,就是组合数求和. 官方题解: 我来叨叨一些东西. 这题肯定不能一个一个遍历求和,这样就上天了... 解释一下官方题解的意思. 为什么 sum(n,m)=2*sum(n-1,m)-c(n-1,m). 因为c(n,m)=c(n-1,m)+c(n-1,m-1),至于为什么成立,不懂的百度一下组合数和杨辉三角吧... sum(n,m)=c(n,…
给定一个数组,求和为定值的所有组合, 这道算法题在leetcode应该算是中等偏下难度, 对三到五年工作经验主要做业务开发的同学来说, 一般较难的也就是这种程度了. 简述经过: 不算hr面,总计四面,第一天前三面, 然后过了一个多星期第四面(领导一般都比较忙~) 平均每一面都是一小时,面完前三面已经很辛苦了. 我之前去美团面试从一面到hr面,总计四面 面了一下午将近四个小时...还不包括来回路程,所以面试是项体力+脑力的活,准备的充分了,面试成功率高少跑几次了~就会轻松不少~大部分同学面试面上几…
6336.Problem E. Matrix from Arrays 不想解释了,直接官方题解: 队友写了博客,我是水的他的代码 ------>HDU 6336 子矩阵求和 至于为什么是4倍的,因为这个矩阵是左上半边有数,所以开4倍才能保证求的矩阵区域里面有数,就是图上的红色阴影部分,蓝色为待求解矩阵. 其他的就是容斥原理用一下,其他的就没什么了. 代码: //1005-6336-矩阵求和-二维前缀和+容斥-预处理O(1)查询输出 #include<iostream> #include&…
6315.Naive Operations 题意很好理解,但是因为区间求和求的是向下取整的a[i]/b[i],所以直接分数更新区间是不对的,所以反过来直接当a[i]==b[i]的时候,线段树对应的位置更新+1操作是可取的,但是怎样才能在合适的时候+1操作呢?一开始智障想的是只要单点是b[i]的倍数就可以啊,但是这样就相当于单点查询的操作,铁定超时到上天,但是反过来就可以啊,直接一开始给一个数组赋值为b[i]的值,区间更新的时候所有的都更新,然后区间查询一下最小值,有0就说明有的已经正好减完b[i…
传送门 线段树基础题. 题意:给出一个序列,要求支持区间加,查询序列中所有满足区间长度在[L,R][L,R][L,R]之间的区间的权值之和(区间的权值即区间内所有数的和). 想题555分钟,写题202020分钟,调题两小时真TMTMTM好玩 我们令sss表示前缀和,s2s^2s2表示前缀和的前缀和. 首先读完题发现要求的是: ∑i=lr∑j=in(sj−sj−i)\sum_{i=l}^r\sum_{j=i}^{n}(s_j-s_{j-i})∑i=lr​∑j=in​(sj​−sj−i​) =∑i=…