NKOJ-4573 Falsita】的更多相关文章

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4573 Problem Description Remember our childhood? A few naked children throw stones standing on the same position, the one throws farther win the game. Aha, of course, there are some naughty boys who care…
[BZOJ3683]Falsita 题目大意: 一个\(n(n\le3\times10^5)\)个结点的树,每个结点有一个权值\(w_i\),\(m(m\le3\times10^5)\)次操作,操作包含以下\(3\)种: 将结点\(u\)的权值加上\(d\): 将以\(u\)为根的子树中的每一个结点加上\(d\): 询问任取一个以\(u\)为LCA的点对\((x,y)\),\(w_x+w_y\)的期望值. 思路: 首先可以用一遍树形DP求出不考虑修改的答案\(ans_i\). 对于操作\(1\)…
http://www.lydsy.com/JudgeOnline/problem.php?id=4573 http://blog.csdn.net/lych_cys/article/details/53515748# lct的难点大概是转换的部分. 这道题需建两种权值不同的点,每次更换生长节点建立权值为0的虚点,生长新点建立权值为1的实点,因为最开始有一个带权值的生长节点,那么建一个虚点一个实点来表示. 因为求的东西追根溯源只是链,每棵树从根到某点的链的结构都是交错的所以可以这样压缩点以及点点之…
[LOJ 2092][BZOJ 4573][UOJ 195][ZJOI 2016]大森林 题意 给定一个树序列, 初始时所有树都只有一个点, 要求支持三种操作: 区间种树(在某个特定点上长出一个子结点) 区间更改种树点(就是改上面那个操作中的「特定点」) 查询某棵树上两个点间的距离 \(n\le 1\times 10^5, q\le 2\times 10^5\). 不强制在线. 长出来的点标号一致, 与种树操作的顺序一致. 保证2操作合法. 题解 ZJOI都是神仙题啊QAQ... 首先这题序列上…
bzoj 4573 大森林 由于树上路径是唯一的,查询合法的两个点间路径长度显然与其他加点操作无关,所以可以离线处理,将所有的查询放在加点后. 这样我们可以对每棵树都在上颗树的基础上处理好形态后,处理这颗树上的询问. 考虑若没有操作 \(1\) ,则所有树都一模一样.那么两棵树的形态不同,一定是某一颗执行了操作 \(1\) ,另一个却没有.只需要在每个关键位置(修改开始或结束时)将原来生长点所有子树挂到新的生长点下. 若暴力移动子树,当子树数目较大时就会很劣.可以对每个操作 \(1\) 建立一个…
问题描述: 到海边了呢...... 如果没有那次选择,现在是不是会好些呢...... 都过去了. 仰望着星空,迎面吹过一阵阵海风,倚靠着护栏,Fine 在海边静静地伫立着,在一个个无际的长夜后,Fine 终于放下了往事的痛楚,得到了治愈. 但是作为 Fine 的另一重人格的 Falsita 就没那么幸运了.她仍然被各种繁忙的事务困扰着. 虽然同在一副躯体中,Fine 与 Falsita 的精神世界却相差甚远,Fine 可以轻易地构造出幻梦时,Falsita 却只能停留在现实的痛楚中. 但是为了生…
发现自己简直是个智障:T1模数写成1e9+9:T2居然没有考虑刚好一个周期的情况:T4用"%lld"读入"unsigned long long".~qwq~ T1: 跳马(nkoj 8374) 问题描述: 果果上课觉得无聊,于是掏出一枚中国象棋中的"马"棋子开始玩了起来. 中国象棋中的"马"走 "日" 字,即横坐标跳1.纵坐标跳2,或者横坐标跳2,纵坐标跳1. 果果把"马"放在一个二维网…
意料之中..... A:nkoj 3900 AC小程序 http://oi.nks.edu.cn/zh/Problem/Details/3900 A题比较简单,单独分析一下A和C,其实就是一个斐波那契数列的变形. 代码免了 B: nkoj 3789 营养午餐 http://oi.nks.edu.cn/zh/Problem/Details/3789 B题m的范围只有15,很明显是状压,但因为位运算不是太熟,卡了很久. 下面是AC代码: C:nkoj 1349 罐头到期 http://oi.nks.…
http://poj.org/problem?id=3683 思路:2-SAT,输出任意一组方案,O(m+n) #include<cstdio> #include<iostream> #include<cmath> #include<cstring> #include<algorithm> ],next[],tot,go[]; ],Next[],Tot,Go[]; ],a[],n,ru[],low[],dfn[]; ],belong[],inst…
题解 这道题维护方法比较简单,也有点奇妙 我们可以很容易求出经过所有点的路径条数,和初始时分子的大小 然后单点修改的时候,相当于给当前点\(v\)加上\(delta * (siz[v] - 1)\) \(v\)到根的路径上每个祖先都要加上设\(t\)为\(k\)在路径上的儿子,\(delta * (siz[k] - siz[t])\) 如果想把这种操作快速修改的话,我们把这个操作放到重链上,这样只有重链顶端的父亲需要特殊处理,剩下的值都已经计算好了,用一个标记在线段树上维护就好 然后考虑区间加,…