[bzoj5507] [洛谷P5305] [gzoi2019]旧词】的更多相关文章

Descriptioin 浮生有梦三千场 穷尽千里诗酒荒 徒把理想倾倒 不如早还乡 温一壶风尘的酒 独饮往事迢迢 举杯轻思量 泪如潮青丝留他方 --乌糟兽/愚青<旧词> 你已经解决了五个问题,不妨在这大树之下,吟唱旧词一首抒怀.最后的问题就是关于这棵树的,它的描述很简单. 给定一棵 \(n\) 个点的有根树,节点标号 \(1 \sim n\),11 号节点为根. 给定常数 \(k\) . 给定 \(Q\) 个询问,每次询问给定 \(x,y\). 求: \(\sum\limits_{i\leq…
[BZOJ5507][GXOI/GZOI2019]旧词(树链剖分,线段树) 题面 BZOJ 洛谷 题解 如果\(k=1\)就是链并裸题了... 其实\(k>1\)发现还是可以用类似链并的思想,这个东西本质上就是对于当前的一个\(x\),考虑对于其他所有点的贡献,而他们的\(LCA\)一定是\(x\)到根节点链上的一个点.那么对于某个\(x\)的祖先节点,除了\(x\)所在的子树内,其他的所有子树内的点全部会产生这个点的深度的\(k\)次方的贡献.\(k=1\)的时候这个东西可以直接做的原因是因为…
题目地址:P5305 [GXOI/GZOI2019]旧词 这里是官方题解 \[\sum_{i \leq x}^{}\ depth(lca(i,y))^k\] \(k = 1\) 求的是 \(\sum_{i \leq x}^{}\ depth(lca(i,y))\) ,一堆点然后每个点和 \(y\) 求 \(lca\) 然后深度求和. 总体思路是把 \(lca\) 的值摊派到这个点到根的路径上(这个东西也叫树上差分?),再离线解决所有询问. 维护一个点权数组 \(sum\) ,初始为 \(0\)…
题目链接: [GXOI/GZOI2019]旧词 对于$k=1$的情况,可以参见[LNOI2014]LCA,将询问离线然后从$1$号点开始对这个点到根的路径链修改,每次询问就是对询问点到根路径链查询即可. 可以发现,如果一个点的贡献被记入答案,那么这个点到根的路径上所有点的贡献都会被记入答案. 那么对于$k>1$的情况,只要每次将路径上点$u$的权值都$+1$变成每次将路径上点$u$的权值都$+(dep[u]^k-(dep[u]-1)^k)$即可. 同样用线段树维护树剖序的区间权值和即可. #in…
https://www.cnblogs.com/Gloid/p/9412357.html差分一下是一样的问题.感觉几年没写过树剖了. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long long #d…
传送门 先考虑\(k=1\),一个点的深度就是到根节点的路径上的点的个数,所以\(lca(x,y)\)的深度就是\(x\)和\(y\)到根路径的交集路径上的点的个数,那么对于一个询问,我们可以对每个点\(i\le x\),把\(1\)到\(i\)路径上所有点\(+1\),然后查询\(1\)到\(y\)的点权和就行了.现在有多组询问,路径修改可以树剖+在以\(dfn\)序为下标的线段树上修改,然后套可持久化线段树保存每个\(i\)的线段树状态,每次在对应线段树上区间查询即可.可持久化线段树的区间修…
正题 题目链接:https://www.luogu.com.cn/problem/P5305 题目大意 给一棵有根树和\(k\),\(Q\)次询问给出\(x,y\)求 \[\sum_{i=1}^{x}dep_{LCA(i,y)}^k \] \(1\leq n,Q\leq 5\times 10^5,1\leq k\leq 10^9\) 解题思路 和之前\(LCA\)那题一样的思路,如果\(k\)等于\(1\)的话.加入一个点\(i\)就把\(i\)到根节点的路径上加一,然后询问节点\(x\)就查询…
前置芝士:[LNOI2014]LCA 要是这题放HNOI就好了 原题:\(\sum_{l≤i≤r}dep[LCA(i,z)]\) 这题:\(\sum_{i≤r}dep[LCA(i,z)]^k\) 对于原题,我们需要把每个询问拆成1~l-1 & 1~r再进行差分(所以这题帮我们省去了一个步骤) 先考虑\(k=1\)原题 我们先转化题意 \(dep[lca]\)\(\\)==\(\\)\(dis[1][lca]+1\)\(\\)==\(\\)\(lca->1\)的点数 所以我们每一个点(x)对答…
很像LNOI 2014 LCA那道题. 同样的套路,离线以后直接扫描线. k=1的话就是原题. 考虑一般情况. 原本的做法是对x到根的这条链做一下区间+1操作,目的是为了是的在深度为i的位置得到的贡献是i. 因此,我们只需要构造出一个任意一个位置都满足前缀和为i^k的序列即可. 然后每次把这个序列加到这条链上,由于每个点的深度固定,因此每个位置每次增加的数字也是固定的,可以区间打标记线段树维护. 考虑怎么构造这个序列,显然直接把1^k,2^k,3^k,4^k......差分就可以了. #incl…
和之前那个 [LNOI]LCA 几乎是同一道题,就是用动态树来维护查分就行. code: #include <bits/stdc++.h> using namespace std; #define N 50006 #define mod 998244353 #define ll long long #define lson t[x].ch[0] #define rson t[x].ch[1] #define get(x) (t[t[x].f].ch[1]==x) #define isrt(x)…
考虑k=1的做法:这是一道原题,我还写过题解,其实挺水的,但当时我菜还是看题解的:https://www.cnblogs.com/hfctf0210/p/10187947.html.其实就是树上差分后值为1. 考虑k>1的做法:其实可以再次树上差分,给每个点i赋值v[i]=dep[i]k-dep[i-1]k,然后还是和原来一样开一棵线段树,记录一个val[rt]表示当前节点内区间v值的和,以及sum[rt]表示区间值.修改时打标记,只需要将sum[rt]+=v*val[rt],lazy[rt]+…
LOJ#3088. 「GXOI / GZOI2019」旧词 不懂啊5e4感觉有点小 就是离线询问,在每个x上挂上y的询问 然后树剖,每个节点维护轻儿子中已经被加入的点的个数个数乘上\(dep[u]^{k}\) 新加一个点进去只会经过\(\log n\)条轻边只会更新\(\log n\)个节点 然后再维护一下每个子树里被加入点的个数,每次查询一段重链的链尾要加上重儿子个数减去从y来的那个轻儿子的子树个数乘上\(dep[u]^k\) #include <bits/stdc++.h> #define…
题目链接 [洛谷传送门] 题解 按位处理. 把每一位对应的图都处理出来 然后单调栈处理一下就好了. \(and\)操作处理全\(1\). \(or\)操作处理全\(0\). 代码 #include <bits/stdc++.h> #define gc getchar using namespace std; typedef long long ll; const int N = 1000 + 4; const int P = 1e9 + 7; const int BIT = 31; int n…
洛谷:传送门 bzoj:传送门 参考资料: [1]:https://xht37.blog.luogu.org/p5304-gxoigzoi2019-lv-xing-zhe [2]:http://www.cnblogs.com/cjyyb/p/10736124.html 题意: 一个图 n 个点 m 条边,里面有 k 个特殊点,问这 k 个点之间两两最短路的最小值是多少? 之所以做这道题,是因为早晨的时候,做CF的这道题(戳这里),题意都木有读懂(…
LOJ BZOJ 洛谷 想了一个奇葩的单调栈,算的时候要在中间取\(\min\),感觉不靠谱不写了=-= 调了十分钟发现输出没取模=v= BZOJ好逗逼啊 题面连pdf都不挂了 哈哈哈哈 枚举每一位.在这一位上与之后得到\(1\)的就是全\(1\)子矩形个数.或之后得到\(1\)的就是总举行个数减去全\(0\)子矩形个数. 单调栈算一下就好啦. 维护一个单调递增的栈.如果在右下角统计贡献,每次遇到往上延伸长度\(l\leq sk[top]\)时,会把\(sk[top]\)的一部分截断.用个变量\…
洛谷1189 SEARCH 题目描述 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且车上装有用于发射车子移动路线的装置. 那个装置太旧了,以至于只能发射关于那辆车的移动路线的方向信息. 编写程序,通过使用一张小镇的地图帮助警察局找到那辆车.程序必须能表示出该车最终所有可能的位置. 小镇的地图是矩形的,上面的符号用来标明哪儿可以行车哪儿不行.“.”表示小镇上那块地方是可以行车的,而符号“X”表示此处不能行车.拉尔夫所开小车的初始位置用字符的“*”表示,且汽车能从…
洛谷 P1471 方差 题目背景 滚粗了的HansBug在收拾旧数学书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本数学书里面发现了一个神奇的数列,包含N个实数.他想算算这个数列的平均数和方差. 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示数列中实数的个数和操作的个数. 第二行包含N个实数,其中第i个实数表示数列的第i项. 接下来M行,每行为一条操作,格式为以下两种之一: 操作1:1 x y k ,表示将第x到第y项每项加上k,k为一实数. 操作2:2 x…
Problem 洛谷P1127-词链 Accept: 256    Submit: 1.3kTime Limit: 1000 mSec    Memory Limit : 128MB Problem Description 如果单词 XXX 的末字母与单词 YYY 的首字母相同,则 XXX 与 YYY 可以相连成 X.YX.YX.Y .(注意: XXX . YYY 之间是英文的句号“.”).例如,单词dog与单词gopher,则dog与gopher可以相连成dog.gopher. 另外还有一些例…
洛谷P3384 #include <bits/stdc++.h> #define DBG(x) cerr << #x << " = " << x << endl; const int maxn = 1e5+5; using namespace std; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch < '0' || ch > '9'){if(c…
题目 :Bovine Genomics G奶牛基因组 传送门: 洛谷P3667 题目描述 Farmer John owns NN cows with spots and NN cows without spots. Having just completed a course in bovine genetics, he is convinced that the spots on his cows are caused by mutations in the bovine genome. At…
[POI 2008&洛谷P3467]PLA-Postering Description Byteburg市东边的建筑都是以旧结构形式建造的:建筑互相紧挨着,之间没有空间.它们共同形成了一条长长的,从东向西延伸的建筑物链(建筑物的高度不一). Byteburg市的市长Byteasar,决定将这个建筑物链的一侧用海报覆盖住.并且想用最少的海报数量,海报是矩形的. 海报与海报之间不能重叠,但是可以相互挨着(即它们具有公共边),每一个海报都必须贴近墙并且建筑物链的整个一侧必须被覆盖(意思是:海报需要将一…
标题很长emmm…… [USACO2008 NOV]toy 玩具 https://www.luogu.org/problemnew/show/P2917 https://www.lydsy.com/JudgeOnline/problem.php?id=1229 [BJWC2018]餐巾计划问题 https://www.luogu.org/problemnew/show/P4480 其中[BJWC2018]餐巾计划问题的数据范围更大,且数据强度可能更强,因此下文围绕该问题展开. 一个餐厅在相继的n…
题目传送门 当时一看到这题,蒟蒻的我还以为是DP,结果发现标签是搜索-- 这道题的难点在于思路和预处理,真正的搜索实现起来并不难.我们可以用一个贪心的思路,开一个dic数组记录每个单词的最小重复部分,这样搜索的时候就可以很方便地查阅dic数组,而不是每次再计算一遍. 预处理是长这样子的: void f(string a,string b,int x,int y) { int a1=a.size()-1,b1=b.size()-1; for(int i=0;i<=b1;i++) //从第一个开始枚…
洛谷P3951 小凯的疑惑 原题 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在 小凯无法准确支付的商品. 输入输出格式 输入格式: 两个正整数 a 和 b,它们之间用一个空格隔开,表示小凯中金币的面值. 输出格式: 一个正整数 N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值. 输入…
洛谷 P1381 单词背诵 洛谷传送门 题目描述 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一个).并且在背诵的单词量尽量多的情况下,还要使选出的文章段落尽量短,这样她就可以用尽量短的时间学习尽可能多的单词了. 输入格式 第1行一个数n, 接下来n行每行是一个长度不超过10的字符串,表示一个要背的单词. 接着是一个数m, 然后是m行长度不超过10的字符串,每个表示文章中的一个单词. 输…
//bzoj上的题面太丑了,导致VJ的题面也很丑,于是这题用洛谷的题面 题面描述 XOR(异或)是一种二元逻辑运算,其运算结果当且仅当两个输入的布尔值不相等时才为真,否则为假. XOR 运算的真值表如下(\(1\) 表示真, \(0\) 表示假): 而两个非负整数的 XOR 是指将它们表示成二进制数,再在对应的二进制位进行 XOR 运算. 譬如 \(12\) XOR \(9\) 的计算过程如下: 故 \(12\) XOR \(9\) = 5$. 容易验证, XOR 运算满足交换律与结合律,故计算…
P2207 Photo 题目描述 Framer Jhon 打算给他的N头奶牛照相,( 2 <= N <= 1 000 000 000) . 他们排成一条线,并且依次取1~N作为编号. 每一张照片可以拍摄到这列奶牛中一个连续的区间中的奶牛. 对于每一头奶牛,FJ都想要让Ta至少出现在一张照片里. 不幸的是,有K对关系不好的奶牛( 1 <= K <= 1000),他们拒绝出现在同一张照片里. 已知所有关系不好的奶牛所在的位置,请计算出FJ需要的最小需要拍摄的照片数量. 输入输出格式 输…
首先来看一道我编的题: 安娜写宋词 题目背景 洛谷P5664 Emiya 家今天的饭[民间数据] 的简化版本. 题目描述 安娜准备去参加宋词大赛,她一共掌握 \(n\) 个 词牌名 ,并且她的宋词总共有 \(m\) 个不同的 主题 . 为了方便描述,我们对词牌名从 \(1\) ~ \(n\) 编号,对主题从 \(1\) ~ \(m\) 编号. 安娜准备了若干首诗,每首诗都有 恰好一个 词牌名与 恰好一个 主题. 更具体地说,安娜为第 \(i\) 个词牌名第 \(j\) 个主题准备了 \(a_{i…
首先来看一道题题: 安娜写宋词 题目背景 洛谷P5664 Emiya 家今天的饭[民间数据] 的简化版本. 题目描述 安娜准备去参加宋词大赛,她一共掌握 \(n\) 个 词牌名 ,并且她的宋词总共有 \(m\) 个不同的 主题 . 为了方便描述,我们对词牌名从 \(1\) ~ \(n\) 编号,对主题从 \(1\) ~ \(m\) 编号. 安娜准备了若干首诗,每首诗都有 恰好一个 词牌名与 恰好一个 主题. 更具体地说,安娜为第 \(i\) 个词牌名第 \(j\) 个主题准备了 \(a_{i,j…
(neng了好久好久才糊弄懂得知识点...) 一.李超线段树 在线动态维护一个二维平面直角坐标系, 支持插入一条线段, 询问与直线x = x0相交的所有线段中,交点y的最大/小值 (若有多条线段符合条件,输出编号最小的线段的编号) 洛谷板子题-Segment[HEOI2013]-洛谷T4097 二.add操作 整个李超线段树的核心就是add操作 1.特判 l == r 已经到了一个点 如果该点之前没有维护线段,直接维护现在的线段 如果该点已经维护过,选择纵坐标靠上的直线(点),纵坐标相同,选择编…