题目链接 bzoj5293: [Bjoi2018]求和 题解 暴力 对于lca为1的好坑啊.... 代码 #include<cmath> #include<cstdio> #include<algorithm> inline int read() { int x = 0,f = 1; char c = getchar(); while(c < '0' || c > '9')c = getchar(); while(c <= '9' &&…
Description master 对树上的求和非常感兴趣.他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的k  次方和,而且每次的k 可能是不同的.此处节点深度的定义是这个节点到根的路径上的边数.他把这个问题交给 了pupil,但pupil 并不会这么复杂的操作,你能帮他解决吗? Input 第一行包含一个正整数n ,表示树的节点数. 之后n-1 行每行两个空格隔开的正整数i,j ,表示树上的一条连接点i 和点j 的边. 之后一行一个正整数m ,表示询问的数量. 之后每行…
Description master 对树上的求和非常感兴趣.他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的k  次方和,而且每次的k 可能是不同的.此处节点深度的定义是这个节点到根的路径上的边数.他把这个问题交给 了pupil,但pupil 并不会这么复杂的操作,你能帮他解决吗?   Input 第一行包含一个正整数n ,表示树的节点数. 之后n-1 行每行两个空格隔开的正整数i,j ,表示树上的一条连接点i 和点j 的边. 之后一行一个正整数m ,表示询问的数量. 之后…
裸的树上倍增. #include<cstdio> #include<cstring> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) using namespace std; ,mod=; ]; ],sm[N][],pow[N][]; int h[N],cnt,n,m,x,y,k; void add(int u,int v){ e[++cnt].to=v; e[cnt].nxt…
[BZOJ5293][BJOI2018]求和(前缀和,LCA) 题面 BZOJ 洛谷 题解 送分题??? 预处理一下\(k\)次方的前缀和. 然后求个\(LCA\)就做完了?... #include<iostream> #include<cstdio> using namespace std; #define MOD 998244353 #define MAX 300300 inline int read() { int x=0;bool t=false;char ch=getch…
P4427 [BJOI2018]求和 同[TJOI2018]教科书般的扭曲虚空 懒得写了(雾 #include<bits/stdc++.h> #define il inline #define vd void typedef long long ll; il int gi(){ int x=0,f=1; char ch=getchar(); while(!isdigit(ch)){ if(ch=='-')f=-1; ch=getchar(); } while(isdigit(ch))x=x*1…
Description master 对树上的求和非常感兴趣.他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的\(k\) 次方和,而且每次的\(k\) 可能是不同的.此处节点深度的定义是这个节点到根的路径上的边数.他把这个问题交给了pupil,但pupil 并不会这么复杂的操作,你能帮他解决吗? Input 第一行包含一个正整数\(n\),表示树的节点数. 之后\(n-1\) 行每行两个空格隔开的正整数\(i,j\),表示树上的一条连接点\(i\) 和点\(j\)的边. 之后…
这是一道巨狗题,我已无力吐槽为什么我怎么写都不过 我们对于这种无修改的边权题目有一个经典的树上差分套路: \(ans=sum_x+sum_y-2\cdot sum_{LCA(x,y)}\) 这里的\(sum\)表示的是从根到这个点的边权前缀和 然后这里求的是点权,我们还是用一样的策略,就是树上查分后加上这个点的点权即可,即: \(ans=sum_x+sum_y-2\cdot sum_{LCA(x,y)}+node_{LCA(x,y)}\) 然后我们发现\(1\le k\le 50\),所以我们预…
Description master 对树上的求和非常感兴趣.他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的k 次方和,而且每次的k 可能是不同的.此处节点深度的定义是这个节点到根的路径上的边数.他把这个问题交给 了pupil,但pupil 并不会这么复杂的操作,你能帮他解决吗? Input 第一行包含一个正整数n ,表示树的节点数. 之后n-1 行每行两个空格隔开的正整数i,j ,表示树上的一条连接点i 和点j 的边. 之后一行一个正整数m ,表示询问的数量. 之后每行三…
Description 公元 2044 年,人类进入了宇宙纪元. L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连通了 L 国的所有星球. 小 P 掌管一家物流公司, 该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从 ui 号星球沿最快的宇航路径飞行到 vi 号星球去.显然,飞船驶过一条航道是需要时间的,对于航道 j,任意飞船驶过它所花费的时间为 tj,并且任意两艘飞船之间不会产生任何干扰. 为了鼓励科技创新, L 国国王同意小 P…
link 其实可以用$sum(i,j)$表示从$i$到$1$的$k$次方的值,然后就是$lca$的基本操作 注意,能一起干的事情就一起搞,要不会超时 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define int long long #define mod 998244353 using namespace std; ; inline int read…
https://oj.gxu.edu.cn/contest/7/problem/D 描述 有一个所有元素皆为0的数组A,有两种操作: 1 l r x表示将A区间[l,r]内所有数加上x: 2 l r表示将A区间[l,r]内从左往右数第i个数加上i: 给出m个操作,请输出操作结束后A中的最大值. 输入 第一行一个整数m,表示操作的个数 接下来有m行,表示操作的内容,具体格式与题目中一致 0<=m<=10^6 1<=l<=r<=10^6 0<=x<=10^9 输出 输…
题目描述 给出两个n*n的矩阵,m次询问它们的积中给定子矩阵的数值和. 输入 第一行两个正整数n,m. 接下来n行,每行n个非负整数,表示第一个矩阵. 接下来n行,每行n个非负整数,表示第二个矩阵. 接下来m行,每行四个正整数a,b,c,d,表示询问第一个矩阵与第二个矩阵的积中,以第a行第b列与第c行第d列为顶点的子矩阵中的元素和. 输出 对每次询问,输出一行一个整数,表示该次询问的答案. 样例输入 3 2 1 9 8 3 2 0 1 8 3 9 8 4 0 5 15 1 9 6 1 1 3 3…
题目描述 master 对树上的求和非常感兴趣.他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的 kkk 次方和,而且每次的 kkk 可能是不同的.此处节点深度的定义是这个节点到根的路径上的边数.他把这个问题交给了pupil,但pupil 并不会这么复杂的操作,你能帮他解决吗? 输入输出格式 输入格式: 第一行包含一个正整数 nnn ,表示树的节点数. 之后 n−1n-1n−1 行每行两个空格隔开的正整数 i,ji, ji,j ,表示树上的一条连接点 iii 和点 jjj 的…
https://codeforces.com/contest/1151/problem/C 题意 有两个等差数列(1,3,5,..),(2,4,6,...),两个数列轮流取1,2,4,...,\(2^n\)组成一个新的数列,然后询问区间l,r的和 题解 一开始总想着怎么计算中间那一段,其实用前缀和很好处理 数太大,第二个数也要取模才能相乘 代码 #include<bits/stdc++.h> #define ll long long using namespace std; const ll…
\(\Large\textbf{Description: } \large{一颗n个节点的树,m次询问,每次查询点i到点j的路径上所有节点点深度的k次方的和并对998244353取模(1\leq n,m \leq 300000,1\leq k\leq 50).}\\\) \(\Large\textbf{Solution: } \large{一开始看到这道题并没有思路,但是注意到k很小,所以我们可以预处理出每个节点到根节点1的路径上点的1到50次方的和,然后每次O(1)查询即可.\\}\) \(\…
题目链接:https://www.luogu.org/problemnew/show/P2671 这是noip2015普及组的第三题,谁说的普及组的题就一定水的不行,这道题就比较有意思的 这道题的暴力想法就是双重循环寻找所有情况 但是这会爆时间的 -------------------------- 做这题,需要找到一个结论 y-x=z-y的意思其实是x+z是偶数,也就是x,z是同奇偶的 这个结论有了当然就可以暴力了,虽然不能过 正解的思路 我们首先对每一个数来查找他的贡献... 但是单纯的查找…
预处理,树上差分.注意深度减一 #include <cstdio> #include <iostream> #include <cstring> #include <algorithm> #include <cmath> #define R(a,b,c) for(register int a = (b); (a) <= (c); ++(a)) #define nR(a,b,c) for(register int a = (b); (a) &…
6.17考试总结(NOIP模拟8) 背景 考得不咋样,有一个非常遗憾的地方:最后一题少取膜了,\(100pts->40pts\),改了这么多年的错还是头一回看见以下的情景... T1星际旅行 前言 考试的时候用一个自己感觉非常妙的思路骗了20pts,因为是双向边,所以分成两个边存,边的tot从2开始,这样可以保证没一组边的序号通过取\(xor\)可以相互转化. 然后对于每一个边记录经过次数,并且记一下经过次数为1和2的边的总数,然后对于dfs时转移的就是状压的每组边的状态,当然也可以拿Hash存…
5326. LCA 的统计 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description Input Output Sample Input 2 2 1 1 Sample Output 17 Data Constraint Hint 题解 树形dp 枚举now=lca(i,j),快速算出符合条件的i的权值和与j的权值和的乘积,更新答案. 有三种情况 1. i和j在不同的子树中,设lca(u,v)的所有子节点权值和为…
2019/10/25 \([LNOI2014]\ LCA\) \([Luogu\ P2774]\) 方格取数问题 \(Gauss\)消元板 \([JSOI2008]\)球形空间产生器 2019/10/26 \([BJOI2018]\)求和 铺地毯 2019/10/28 \([SDOI2006]\)线性方程组 传纸条 方格取数 乌龟棋 愤怒的小鸟 2019/10/29 考试题\(T1,T2\) 2019/10/30 考试题\(T1,T2\) 2019/10/31 换教室 玩具装箱 联合权值 高精度…
1.luogu P4315 月下"毛景树" 题目链接 前言: 这大概是本蒟蒻A掉的题里面码量最大的一道题了.我自认为码风比较紧凑,但还是写了175行. 从下午2点多调到晚上8点.中间小错不断.最后还是借助了郭神的AC代码.. %%%stO郭神Orz%%% 还是我代码能力不够.以后要多写一些这样的题练练手. 解析: 题目相当裸.树链剖分+线段树维护区间最大值. 需要注意的点大致如下: 1.边权化点权 2.线段树需要实现的功能:区间加,区间赋值,区间查询最大值. 看起来貌似有手就行其实对于…
突然意识到有一些题目的计划,才可以减少大量查水表或者找题目的时间. 所以我决定这样子处理. 按照这个链接慢慢做. 当然不可能只做省选题了. 需要适时候夹杂一些其他的题目. 比如\(agc/arc/cf\)的题目,以及\(loj\)上的一些省的集训题目,还有\(uoj\)的各种\(round\)的题目. 大块大块的做题记录就在这里记录一下,省选后再来看结果,至少努力过就不曾后悔了不是吗? 首先先是省选题的记录,然后有比赛的记录,做到每周至少完成一整场\(CF\)或者\(AtCoder\)比赛的题解…
[LG4248][AHOI2013]差异 题面 洛谷 题解 后缀数组版做法戳我 我们将原串\(reverse\),根据后缀自动机的性质,两个后缀的\(lcp\)一定是我们在反串后两个前缀的\(lca\). 那么原式不就是求树上两两点对的距离和, 树上一条边的权值可以通过差分求出,就是\(i.len-i.fa.len\). 然后就统计每一条边的贡献就行了. 感觉少个log效率还跟sa差不多啊 代码 #include <iostream> #include <cstdio> #incl…
题目大意:n个字符串,m个操作,可以插入字符串,也可以询问某T个字符串的最长后缀 题解:Trie+lca Trie树的插入与查询操作.把字符串反转就相当于求公共前缀. lca的深度就是公共前缀的长度. 代码: //biology include<iostream> #include<cstring> #include<cstdio> #define maxn 1000009 using namespace std; ],dad[maxn][]; char s[maxn]…
由于要找后缀的前缀,所以先用反串建立SAM. link边组成了后缀树. 两个子串的最长公共前缀是LCA的step 树形dp即可. #include<iostream> #include<cstring> #include<cstdio> #include<cstdlib> #include<cmath> #include<algorithm> #define maxn 1200000 using namespace std; stru…
随着评讲的进行代码和题解会逐步放上来 2018天梯赛第一次训练 1001 : 进制转换 Time Limit(Common/Java):1000MS/10000MS     Memory Limit:65536KByteTotal Submit: 78            Accepted: 42 Description 输入一个十进制数N,将它转换成R进制数输出. Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16) Output 为每个测…
官方文档 https://www.postgresql.org/docs/10/static/ltree.html ltree是俄罗斯Teodor Sigaev和Oleg Bartunov共同开发的PostgreSQL contrib扩展模块,它包含数据类型的实现.为树状结构组织的数据提供索引和查询. http://www.sai.msu.su/~megera/postgres/gist/ 关于GIST索引的一些介绍 https://yq.aliyun.com/articles/68244 一.…
补题进度:7/11 1001 待填坑 1002 待填坑 1003(set) 题意: 给定长度为n(n<=5e5)的数组(是n的一个排列)和一个整数k(k<=80),f[l,r]定义为区间[l,r]内的第k大的数,求所有区间的f值的和 分析: 倒过来考虑,考虑每个数a[i]对答案有多少贡献 将n个数字从大到小依次插入对应位置,已经插入的当作障碍点(可以用set来维护) 那么对于一个i,可以枚举其左边有x个右边有k-x个去统计答案,因为k<=80,所以是OK的 注意边界情况 时间复杂度O(n…
WARNING:以下代码未经测试,若发现错误,欢迎指出qwq~ Trie树(字典树) 一种简单的数据结构,可存储大量字符串,可在$O(len)$的时间内完成插入,删除,查找等操作. 下面是一个简单的例子,对于abc,abd,abcd,bcd这四个字符串建Trie树,如下图: 其中,红色节点为一个字符串的结尾.对于任意节点,从根节点到该节点路径上字符组成的字符串即为该节点表示的字符串. 基本操作 相关变量 ][],son[]; ]; void init(){ memset(flag,false,s…