题目描述 YJC最近在学习树的有关知识.今天,他遇到了这么一个概念:最近公共祖先.对于有根树T的两个结点u.v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u.v的祖先且x的深度尽可能大.YJC很聪明,他很快就学会了如何求最近公共祖先.他现在想寻找最近公共祖先有什么性质,于是他提出了这样的一个问题:n层的满k叉树T,求对于每一对(i,j)(1≤i,j≤T的点数),LCA(T,i,j)的深度的和是多少.这个数字n层的满k叉树指一棵带标号的有根树,深度为i(0≤i 数据范围 ​对于30%…
题目 YJC最近在学习图的有关知识.今天,他遇到了这么一个概念:随机游走.随机游走指每次从相邻的点中随机选一个走过去,重复这样的过程若干次.YJC很聪明,他很快就学会了怎么跑随机游走.为了检验自己是不是欧洲人,他决定选一棵树,每条边边权为1,选一对点s和t,从s开始随机游走,走到t就停下,看看要走多长时间.但是在走了10000000步之后,仍然没有走到t.YJC坚信自己是欧洲人,他认为是因为他选的s和t不好,即从s走到t的期望距离太长了.于是他提出了这么一个问题:给一棵n个点的树,问所有点对(i…
好久没有写过题解了--现在感觉以前的题解弱爆了,还有这么多访问量-- 没有考虑别人的感受,没有放描述.代码,题解也写得歪歪扭扭. 并且我要强烈谴责某些写题解的代码不打注释的人,像天书那样,不是写给普通人看的. 原题点这(JZOJ) 描述 Description YJC最近在学习图的有关知识.今天,他遇到了这么一个概念:随机游走.随机游走指每次从相邻的点中随机选一个走过去,重复这样的过程若干次.YJC很聪明,他很快就学会了怎么跑随机游走.为了检验自己是不是欧洲人,他决定选一棵树,每条边边权为1,选…
题目描述 YJC最近在学习图的有关知识.今天,他遇到了这么一个概念:随机游走.随机游走指每次从相邻的点中随机选一个走过去,重复这样的过程若干次.YJC很聪明,他很快就学会了怎么跑随机游走.为了检验自己是不是欧洲人,他决定选一棵树,每条边边权为1,选一对点s和t,从s开始随机游走,走到t就停下,看看要走多长时间.但是在走了10000000步之后,仍然没有走到t.YJC坚信自己是欧洲人,他认为是因为他选的s和t不好,即从s走到t的期望距离太长了.于是他提出了这么一个问题:给一棵n个点的树,问所有点对…
题目描述 YJC最近在学习字符串的有关知识.今天,他遇到了这么一个概念:最长公共回文子序列.一个序列S,如果S是回文的且分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共回文子序列.YJC很聪明,他很快就学会了如何求最长公共回文子序列.他现在想把问题规模扩大一些,于是他提出了这么一个问题:给一个长度为n(1≤n≤100000)的字符串a和一个长度为m(1≤m≤20)的字符串b,求a和b的最长公共回文子序列的长度.YJC发现他不会做了,于是他来问你这个…
JZOJ [NOIP2016提高A组集训第16场11.15]兔子 题目 Description 在一片草原上有N个兔子窝,每个窝里住着一只兔子,有M条路径连接这些窝.更特殊地是,至多只有一个兔子窝有3条或更多的路径与它相连,其它的兔子窝只有1条或2条路径与其相连.换句话讲,这些兔子窝之前的路径构成一张N个点.M条边的无向连通图,而度数大于2的点至多有1个. 兔子们决定把其中K个兔子窝扩建成临时避难所.当危险来临时,每只兔子均会同时前往距离它最近的避难所躲避,路程中花费的时间在数值上等于经过的路径…
JZOJ [NOIP2016提高A组集训第16场11.15]SJR的直线 题目 Description Input Output Sample Input 6 0 1 0 -5 3 0 -5 -2 25 0 1 -3 0 1 -2 -4 -5 29 Sample Output 10 Data Constraint 题解 题意 给出\(n\)个条直线的解析式,问这些直线能组成多少个三角形 题解 发现直接求解不容易求 想到可以先求出最大数量再减去不合法的 最大数量\(C_n^3\),不合法的有两种…
题目描述 数据范围 解法 由于同一个点,同一个圆盘最多只会走一次. 把(i,j)当作一个点,表示第i个点,放第i个圆盘. 那么就可以使用最短路. 时间复杂度为O(n4∗k). 事实上存在冗余圆盘,一个相对某个圆盘又贵又小的圆盘即是冗余圆盘. 给圆盘排序,那么令(i,j)只给(k,l)连一条边使得l最小,(i,j)给(i,j+1)连一条边. 那么任意一条原图中的边就可以分解为上述两类边. 那么边数就降到n3. spfa的时间复杂度为O(n3∗k). 如果使用dijstra的时间复杂度为O(n3∗l…
题目 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? 分析 如果暴力枚举每个人被分到哪个组或不分,O(2^20)显然会超时. 我们换一种思路, 每次只枚举一半, 将前后半部分分开枚举后半部分,枚举出每种的和以及有没有被选的状态. 枚举和相同的前后部分,如果这种状态没有被选过,就ans+1,然后将这种状态打个标记,这种状态就不再产生贡献. #include <cmath> #incl…
题目描述 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? 数据范围 40%的数据满足:1<=M(i)<=1000: 对于100%的数据满足:2<=N<=20,1<=M(i)<=100000000 解法 40% 枚举每一位选或不选,设当前选的所有数的和为sum,然后使用背包求出当前每个可能的总和. 如果其中有sum/2,那么说明这种选法合法,使答案+1: 10…