关闭

果树

题目大意问一棵树上有多少条路径不包含同色点。 一种颜色最多20个点。瞎做对于同色点提取出来两两形成一个约束。 这样约束只有n*20个。 因为最坏情况是每种颜色都出现20次。 那么n/20*20^2=n*20。 接下来变成了owaski的那道A,可以在本博客内搜索。#include #include #include #define fo(...
阅读(82) 评论(0)

三部曲

题目大意对一颗n个节点的树操作。 有两种操作,第一种是对子树j,j的点权+k,j的儿子们点权+k+1,j的孙子们点权+k+2,以此类推。 第二种操作询问子树点权和。线段树修改操作实际上是对子树每个点i加上k-d[j]+d[i] 标记可以写成(a,b)表示一个点权为x的点i经过后变成x+a+d[i]*b 显然这个标记可合并而且容易求和。 线段树维护即可。#include #i...
阅读(110) 评论(0)

[hackerrank]Counting on a tree

题目大意给你一棵树,每个点有一个颜色 若干询问,每次询问两条树路径上,存在多少点对(i,j)满足以下条件: 1、i不等于j 2、i和j颜色相同 3、i在第一条树路径上,j在第二条树路径上第一种算法我们先将颜色离散化,然后统计每种颜色有多少个点。 先不考虑第一个限制,假设对于一种颜色c,我处理出了d数组d[x]表示x到根路径上有多少个颜色为c的,那么一个询问x->y和u->v答案为(d[x]...
阅读(206) 评论(0)

[JSOI2016]轻重路径

题目大意给定一颗二叉树。 每次删除一个叶子节点,并要求输出所有重链指向结点编号之和。 初始也要输出一次。 初始时,如果一个结点的两个儿子大小相同,则选择左儿子为重儿子。 一次删除操作后,如果一个结点的两个儿子大小相同,则不改变原先的重儿子选择。发现如果删除一个叶子,重儿子指向可能会发生改变的一定是该结点到根节点的路径上的结点。 其中表现为——路径上的重边可能会变成轻边。 这个就不好处理…...
阅读(667) 评论(0)

法法塔的奖励

题目大意给定一颗树,求任意结点子树内任意叶子节点到其路径包括该节点的最长不下降子序列的长度的最大值。水你可以搞dfs序 你可以搞Treap的启发式合并 你可以搞线段树合并#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; const int maxn=10000...
阅读(277) 评论(0)

[bzoj1036]树的统计

题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。   我们将以下面的形式来要求你对这棵树完成一些操作:   I. CHANGE u t : 把结点u的权值改为t   II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值   III. QSUM u v: 询问从点u到点v的路径上的节点的权值和   注意:从点u到点v的路径上的节点包括u和v...
阅读(409) 评论(0)
    个人资料
    • 访问:211293次
    • 积分:9145
    • 等级:
    • 排名:第2014名
    • 原创:689篇
    • 转载:4篇
    • 译文:0篇
    • 评论:181条
    最新评论
    文章分类