【CSU 1079】树上的查询】的更多相关文章

题意:询问树上从u到v的路径是否经过k 思路:把树dfs转化为有根树后,对于u,v的路径而言,设p为u,v的最近公共祖先,u到v的路径必定是可以看成两条路径的组合,u->p,v->p,这样一来便可以将判断条件转化为(LCA(u,k)=k  || LCA(v,k)=k) && LCA(k,p)=p.由于这个LCA询问里面需要用到中间结果p,所以这种方法用tarjan离线不行,只能用dfs+RMQ. #pragma comment(linker, "/STACK:1024…
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1079 现有一棵有N个顶点的树,顶点的标号分别为1, 2, …, N.对于每个形如a b k的询问,你需要回答在从点a到点b的路径上是否包含点k. DFS序&欧拉序列  LCA-最近公共祖先 看完这两篇文章就会做了 首先找出a,b的最近公共祖先p(Because 树上路径→(a→p→b)),我们要找这条路上是否存在点k 转换:k要在p的子树中 && (a||b)任意一点在p的子树中.…
题意: 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些事件发生在一个二维平面上.小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表 示,其中Hi为第i栋楼房的高度.如果这栋楼房上任何一个高度大于0的点与(0,0)的连线没有与之前的线段相交,那么这栋楼房就被认为是可见的. 施工队的建造总共进行了M天.初始时,所有楼房都还没有开始建造…
1798: 小Z的城市 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 60  Solved: 16[Submit][Status][Web Board] Description 小Z身为A国的君王,A国的所有城市都归小A所有,A国中从任意一个城市出发都能到达其他任意一个城市,每两个直接相邻的城市xi , yi之间都有一条已知长度的路径相连.A国共有n个城市(编号为1~n),被n-1条无向边相连.小Y和小X的开国功臣,但是小X擅文,小Y好武,所以他们…
浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3110 外层一个权值线段树,内层一个位置线段树.对于外层权值线段树上的结点\(p\),它所属的内层线段树上记录每个点上有多少个值在外层的\(l,r\)内. 对于加数,直接把外层线段树权值区间包涵要加的权值的所有点所属的内层线段树的区间\(l,r\)加一. 对于查询,直接在外层…
这场比赛打完后可以找何神玩了orz(orz)* T1Rikka with Chess 嘿嘿嘿.输出n/2+m/2即可. 我能说我智商捉鸡想了4min吗? T2Rikka with Graph 由于N个点的连通块最少有N-1条边,所以至多删两条. 暴力枚举然后并查集判判即可. T3Rikka with Array 奥妙重重的数位dp. 设f[i][j][d1][d2][d3]表示前i位,x1与x2的数位差为j.大小关系如下: d1=0 x1<x2d1=1 x1=x2d1=2 x1>x2d2=0…
才知道knight念奈特,而不念科耐特 这个题显然是一个数据结构题目,我搬运的CF上的题 CF的题解好长超长哒,而且可以在线,但是并不能看懂 于是自己想了一个一种做法A掉了,唯一的缺陷就是做法有些繁琐 首先我们把所有操作离线,之后给节点打上时间标记,从来没有被暴揍过的城市时间为m+1 之后我们考虑对于一个查询,什么样子的城市国王不会休息 显然这个城市的时间标记>=val,但是这样还不够,如果这个城市的时间标记大于当前时刻i,证明在当前查询的时候它并没有被暴揍 所以一个城市国王不会休息的充要条件是…
[题目描述] 菊菊是一个码农,他很喜欢码一些高(e)级(xin)数据结构. 有一天,菊菊在打网赛时遇到了 wfj.wfj 觉得他很有前途,可以做下一代码农大神. 于是乎,wfj 给菊菊出了一道题,来检验一下菊菊的代码能力: 这是一个简单的数据结构题,你只需在树上维护如下几个简单操作: type=1:树上单点修改,给定 x,v,把 x 的值改为 v. type=2:树上子树修改,给定 x,v,把 x 子树上的所有数加上 v. type=3:树上路径修改,给定 x,y,v,把 x 到 y 路径上的所…
Description 有n个带标号的珠子,第i个珠子的价值为a[i].现在你可以选择若干个珠子组成项链(也可以一个都不选),项链的价值为所有珠子的价值和.现在给所有可能的项链排序,先按权值从小到大排序,对于权值相同的,根据所用珠子集合的标号的字典序从小到大排序.请输出第k小的项链的价值,以及所用的珠子集合. Input 第一行包含两个正整数n,k(1<=n<=1000000,1<=k<=min(2^n,1000000)). 第二行包含n个正整数,依次表示每个珠子的价值a[i](1…
题意 给一个数列,每次询问一个区间内有没有一个数出现次数超过一半 题解 主席树,一个数出现次数>一半,这个区间内只有这一个数满足,那么主席树直接维护所有数的出现次数,直接在树上二分查询 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll;…