淀粉质模板 Tree】的更多相关文章

Tree 题目描述 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K 输入输出格式 输入格式: N(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 接下来是k 输出格式: 一行,有多少对点之间的距离小于等于k 淀粉质感觉怎么写都不好看啊,迷.. 实现方法非常多. 大概思路: 对每一个子树的二层子节点进行遍历,处理每个点所属的二层子节点和到根节点的距离 以到根节点的距离为关键字排序,从两边进行扫描 如果当前满足,答案就加上\(r-l-\)和\(l\)…
link 给定一棵树,点有点权,边有边权,你每次修改一个点点权或者是修改一个边边权 你一开始在1号点,你每次改节点之后你需要移动到另一个节点,满足这个节点权值减去路径长度最大(下一次从这个节点移动)如果存在相同的收益,选编号最小的节点 你需要输出每次移动到的节点坐标 题解: 处理树上多条路径可以用动态淀粉质 考虑动态淀粉质,对于点分树上每个点开个线段树,下标为点分树子树中的节点,权值为这个点到子节点的收益,同时维护最大值的坐标 对于点权的修改,可以直接在点分树上暴力跳父亲 对于一条边的修改,考虑…
description 大神 wyp 手里有棵二叉树,每个点有一个点权.大神 wyp 的这棵树是质树,因为 随便找两个不同的点 u, v,只要 u 是 v 的祖先,都满足 u 和 v 的点权互质. 现在你通过偷看了解到了大神 wyp 这棵树的中序遍历的点权值,你想复原出大神 wyp 的树,或者指出不可能. 阅读样例以更好地理解本题. analysis 首先预处理质数,对于每个数,可以分解质因数 然后用一个桶前后各扫一遍分别得出每个数往前往后区间内与其都互质的最远位置 如果对于\([l,r]\)区…
简介 动态点分治的思想:还不太清楚诶怎么办. 大概是通过降低树高来降低每次修改和询问的复杂度吧,还可以把树上一个连通块的信息统计到一个点(重心)上.具体实现方式和普通的静态点分治没有太大的区别,只是把点分治时递归到的每层重心用边连起来(当然不是在原树中直接连),构成一个叫做点分树(VPT)的东西,它其实就是个弟弟递归结构. 修改原树信息时(注意这里的修改一般是围绕一个结点进行的,但不一定是单点修改),可以在点分树上找到对应的结点,然后一路爬点分树的树边修改沿路结点的信息,询问的时候和修改差不多.…
传送门 良心解析 其实以前在求某段序列上的区间统计问题时就碰到过类似于这样的思想. 当时的区间统计问题思路大致是这样: 选取一个点作为中间点,从这个点的左边和右边统计出满足条件的点对.然后当前的中间点就可以删去了,接着递归统计左右两个区间的方案数. 其实这就是个分治和分类讨论的思想. 满足要求的解无非就是这两种: 1.区间包含中间点(也就是两端点在中间点的左右两边) 2.区间不包含中间点(也就是两个端点都在中间点的左边或右边) 所以正确性显而易见 淀粉质就是把这种思想应用于树上的路径统计上,选取…
[题解]Digit Tree CodeForces - 716E 呵呵以为是数据结构题然后是淀粉质还行... 题目就是给你一颗有边权的树,问你有多少路径,把路径上的数字顺次写出来,是\(m\)的倍数. 很明显可以点分治嘛,我们可以按照图上的样子,把一条路径本来是\(12345678\)的路径,变成\(1234|5678\),我们记录图中左边的那种路径为\(f\)(往根),右边的那种路径为\(g\)(从根),记右边的那种到分治中心的深度为\(d\),那么这条路径就可以被表示成\(f\times 1…
[模板]P3806 [模板]点分治1 很好的一道模板题,很无脑经典. 讲讲淀粉质吧,很营养,实际上,点分治是树上的分治算法.根据树的特性,树上两点的路径只有一下两种情况: 路径经过根\((*)\) 路径不经过根\((**)\) 显然对于\((**)\)我们可以通过指定一个新的根使得\((**)\)变成一个子问题. 那么我们在处理的时候,分两种情况: 处理自己各个子树之间的路径\((-)\) 各个子树之内的路径\((--)\) 显然\((--)\)的问题可以通过递归\((**)\)的子问题解决 那…
Hello Kiki Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 247 Accepted Submission(s): 107   Problem Description One day I was shopping in the supermarket. There was a cashier counting coins serio…
一道淀粉质的模版题,开始是暴力 #include <bits/stdc++.h> #define up(i,l,r) for(register int i = (l); i <= (r); ++i) #define dn(i,l,r) for(register int i = (l); i >= (r); --i) #define ll long long #define re register using namespace std; template <typename…
最简单的点分治 淀粉质的思想: “分而治之”,缩小问题规模,合并求解: #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #include<iostream> using namespace std; #define up(i,l,r) for(register int i = (l); i <= (r); ++i) #define dn(i,l,r…
link 题目大意:给定一个n个点的树,每个点都有一个字符(a-t,20个字符) 我们称一个路径是神犇的,当这个路径上所有点的字母的某个排列是回文 求出对于每个点,求出经过他的神犇路径的数量 题解: 对于回文串,我们发现最多允许1个字母出现了奇数次,和%2有关 并且由于只有20个字母,说到20我就想起了二进制状压,我们对于一条链状压成20维的01向量,表示某个字符出现的次数是奇数还是偶数 说到树上静态问题我就想起淀粉质 我们考虑静态淀粉质,对于当前的树我们找出他的重心rt,然后对于每个子树DFS…
传送门:http://poj.org/problem?id=1741 题意: 求树上两点间路径长度小于k的点对个数 题解: 参考资料 守望的淀粉质略解:https://www.luogu.org/blog/user9012/dian-fen-zhi-lve-xie 粉红兔大佬的淀粉质:https://www.cnblogs.com/PinkRabbit/p/8593080.html 算法步骤 计算重心位置 计算答案 分治子问题继续求解(1~3) 代码: #include <set> #incl…
题面 传送门:https://www.luogu.org/problemnew/show/P4178 Solution 首先,长成这样的题目一定是淀粉质跑不掉了. 考虑到我们不知道K的大小,我们可以开一个splay来统计比某个数小的数的数量. 具体做法等我开淀粉质讲解的坑再满满填(咕) Code #include<iostream> #include<vector> #include<cstdio> using namespace std; long long read…
突然发现网上关于点分和动态点分的教程好像很少……蒟蒻开篇blog记录一下吧……因为这是个大傻逼,可能有很多地方写错,欢迎在下面提出 参考文献:https://www.cnblogs.com/LadyLex/p/8006488.html https://blog.csdn.net/qq_39553725/article/details/77542223 https://blog.csdn.net/zzkksunboy/article/details/70244945 前言 一般来说,对于大规模处理…
Upd \(2020/2/15\),又补了一题 LuoguP2664 树上游戏 \(2020/2/14\),补了一道例题 LuoguP3085 [USACO13OPEN]阴和阳Yin and Yang To Do List 动态点分治.这个看心情写吧......是贞德不想写qwq 嘛...上个世纪学的...好像全忘了....来写一下吧 这个应该算树上路径类问题的一类trick吧... che dan环节 点分治嘛,顾名思义,先抓树上一个点算它对答案贡献,然后把这个点割掉,会变成几棵小一点的树,然…
2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fallen Lord(sort(a+1,a+1+n,greater<int>()); 真好用) P4161 [SCOI2009]游戏 P1707 刷题比赛 2021-10-12 CF1573A Countdown P2717 寒假作业 P7868 [COCI2015-2016#2] VUDU P1660…
为什么我之前没有写呢,是因为我总是考的太lj,于是就不想写了. 这次不管考没考好都要强迫自己写,因为这是第一次参加提高组+第一次参加CSP. 当然什么初赛/复赛试题/答案什么的是不会出现的. Day -33 智商和代码能力还是都一如既往的差. CF还是没有上橙. Atc也没有做多少题. CF就更不说了. 想学的芝士点也没有学会. 接下来就是欢快的停课了...希望能稍微补救一下吧. Day -28 初赛题做得头昏眼花...而且没有什么用... 貌似和网络有关的东西每次都不知道是什么... 但愿可以…
题意 自己看. 分析 求这个平均值的最大值就是分数规划,二分一下就变成了求一条长度在[L,R]内路径的权值和最大.有淀粉质的做法但是我没写,感觉常数会很大.这道题可以用长链剖分做. 先对树长链剖分. 我们像做dsu on tree一样先做重儿子,用线段树继承重儿子的全部信息,然后做其他轻儿子 查询的时候枚举一下路径的长度len,一边单点O(1)O(1)O(1)查询长度为len的最大权值,一边线段树O(logn)O(logn)O(logn)查询长度为[L-len,R-len]的区间即可 时间复杂度…
BZOJ权限题qwq Luogu sol 树上路径当然是淀粉质辣! 考虑所有过重心的路径.开一个\(10^6\)大小的数组\(t\)表示某一路径长度的最小边数,初始化为\(inf(i>0)\),\(t[0]=0\). 枚举重心的每棵子树进行\(dfs\),假设获得了一条从重心出发边数为\(dep\)边权和为\(dis\)的路径,就可以用\(t[K-dis]+dep\)更新答案. 更新完答案后对应用\(dep\)更新\(t[dis]\) 记得还原\(t\)数组.显然不能直接memset设为\(in…
淀粉质 第二道点分治的题 关于点分治的一点理解: 所谓点分治,其实就是把要求的问题(一般与路径有关)划分成两种情况 1.路径经过rt(根节点) 2.路径在根节点的子树内 我们只需要处理情况1,因为情况2就是情况1的递归子问题 在这个过程中,要注意容斥原理的应用; //-------------------------------------------------------------------------- 关于此题: w可预先%3(不会影响答案),注意乘法原理的应用; #include<…
使用小计 1.判断是否是手机端 {$DT_TOUCH}模板中使用 2.判断句 {if}  {/if} 3.表单管理 扩展功能-----表单管理:添加表单---->管理表单选项------> 4.调用分类 自定义字段表在fields中 后台路径  moduleid是模块的id; file是页面名称的: 在module是后端的所有模板页面:  template是前端页面: 栏目分类:数据库在category中: 1第三方登录:会员管理一键登录: 栏目分类根据:数据表category表:根据arrp…
传送门 淀粉质好题啊qaq 我们先考虑随便选择一个点作为邮递中心,通过移动邮递中心找到更优的位置.将路径最大值求出,并将路径最大值对应的那一些路径拿出来考虑.可以知道,如果说这些路径中存在一条经过当前邮递中心的路径,意味着当前点就是最优的(因为不论邮递中心怎么移动,这一条路径的长度不会小于当前值,也就是说答案不会小于当前的最大值),所以只有起点和终点在同一子树内的路径的最长路径才有可能通过移动邮递中心使得答案变得更小.而如果说存在两条路径分布在不同子树内,显然也是无法通过移动使得答案更优的,因为…
洛谷题目传送门 闲话 偶然翻到一道没有题解的淀粉质,想证明一下自己是真的弱 然而ZSYC(字符串组合)早就切了 然后证明成功了,WA到怀疑人生,只好借着ZSY的代码拍,拍了几万组就出来了... 思路 是人都能想到的:路径统计,点分治跑不了了. 然而这个统计有些麻烦... 首先别看错题,是中间的一个点到两个端点的两条路径都要满足黑白相等.(因为蒟蒻就看错了) 显然,我们每次要统计经过重心的路径,但是这个中点不一定会在重心.于是,必须要更一般化地统计了. 容易想到的是差分.记\(d_x\)为\(x\…
/* 记一串数字真难. 5435 今天比赛又是hjcAK的一天. 今天开题顺序是312,在搞T1之前搞了T3 昨天某谷月赛真是毒瘤. 但是讲评的同学不错,起码T4看懂了... 构造最优状态然后DP的思路真妙 */ Problem A lcp 给出字符串S,m个询问,每个询问含有$l1,r1,l2,r2$求|S|子串$[l1,r1]$和$[l2,r2]$的LCP(最长公共前缀) 对于100%的数据$ 1 \leq |S|,m \leq 10^5 , l1 \leq r1 ,l2 \leq r2$…
无脑上二分+淀粉质完事了 每个子树算的时候把儿子按照最长路径从小到大依次做,和前面的单调队列算一波,每个儿子的复杂度不超过这个子树大小 // luogu-judger-enable-o2 #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=='-…
从联赛活了下来(虽然分数倒一……),接下来要去CDQZ集训啦…… DAY -2 2017-12-16 被老师安排负责一部分同学的住宿以及安排…… 抓紧时间继续学习,LCT真好玩啊真好玩…… 晚上放假了…… DAY -1 2017-12-17 放假进行中……下午转场到了石家庄. 与srs,wzz,wxh几个dalao住在一个宾馆,晚上出去吃饭…… DAY 0 2017-12-18 4:30早起……到机场. 似乎没有想象中的麻烦…… 很顺利的登机,起飞的时候气压的确有一些奇怪的问题……耳朵有点难受…
[HNOI2015]开店 LG传送门 蒟蒻表示不会动态淀粉质. 先把点按年龄排序, 设\(dis[i]\)表示\(i\)到根的距离. 把我们要算的东西稍微变下形:\(ans\) \[ = \sum \limits _{i = l} ^r (dis[i] + dis[u] - 2 * dis[lca(i, u)]\] \[ = \sum \limits _{i = l} ^r dis[i] + (r - l + 1) * dis[u] - 2 * \sum \limits _{i = l} ^r…
Luogu_4886 快递员 一道淀粉质的题目. 先考虑最简单的算法,那便是对每个点都求一边.时间复杂度O(NM) 然后如果我们把每个点的结果对应一个高度,我们会发现.最优解是在这个对应高度形成的三维图像中的谷底(谷缝) 也就数说,对于一条链来说,他是一个开口向上的类似二次函数的一个图形. 具有类似单调性的一类性质. 在O(NM)的算法中,可以使用其剪枝.既是如果相邻的节点的答案要大于当前节点,那么我们就不向那个节点进行搜索. 为什么? 如果相邻节点的答案小于当前点,那么说明,当前的最长链的两端…
[CF833D]Red-Black Cobweb 题面 洛谷 题解 看到这种统计路径的题目当然是淀粉质啦. 考虑转化一下信息设一条路径上有红点\(a\)个,黑点\(b\)个 则\(2min(a,b)\geq max(a,b)\) \(\Leftrightarrow 2*a\geq b\)且\(2*b\geq a\) 现在我们需要将过一个点的两条路径合并 设第一条为红\(a_1\),黑\(b_1\),第二条为红\(a_2\),黑\(b_2\) 则有 \[ 2(a_1+a_2)\geq b_1+b_…
NOI2018前的每日记录 开头 今天是\(2018.7.2\),不知不觉已经这么久了.本来还是高一的小蒟蒻,过不了多久就要成为高二的老年选手了. 再过半个月我也要去\(NOI\)打酱油了.我这种D类蒟蒻当然是去打酱油的啊 发现我自己最近状态差的不行,索性开一个坑记录一下自己每天干了些啥,状态什么的怎么样吧. 和省选前一样吧,也就是流水账+做题的一些记录,顺带加上一点自己的感悟吧. 差不多就是这样了.但是现在已经是晚上了,今天我就不写今天发生的事情了. 听说明天要考试,所以我从明天开始记录,这样…