题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2325 题解 可以参考线段树动态维护最大子段和的做法. 对于线段树上每个节点 \(o\),维护 \(ls_{0/1}, rs_{0/1}, s_{0/1, 0/1}\) 分别表示从最左边的上面/下面的格子进入最多走的方块数量,从最右边的上面/下面的格子进入最多走的方块数量,从最左边的上面/下面到最右边的上面/下面的做多走的方块数量. 然后合并的时候也类似与线段树最大字段和.\(ls\) 的话保…
题目描述 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到 人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱.这样的 想法当然非常好啦,但是她们也发现她们面临着一个问题,那就是店开在哪里,面 向什么样的人群.很神奇的是,幻想乡的地图是一个树形结构,幻想乡一共有 n 个地方,编号为 1 到 n,被 n-1 条带权的边连接起来.每个地方都住着一个妖怪, 其中第 i 个地方的妖怪年龄是 x_i.妖怪都是些比较喜欢安静的家伙,所以它们并 不希望和很多妖怪相邻.所以这个…
2243: [SDOI2011]染色 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=2243 Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”.“222”和“1”. 请你写…
[SDOI2011]染色Description给定一棵有n个节点的无根树和m个操作,操作有2类:1.将节点a到节点b路径上所有点都染成颜色c:2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”.“222”和“1”.请你写一个程序依次完成这m个操作.Input第一行包含2个整数n和m,分别表示节点数和操作数:第二行包含n个正整数表示n个节点的初始颜色下面 行每行包含两个整数x和y,表示x和y之间有一条无向边.下面 行每行描述一个操作:“C…
Relief grain Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5029 Description The soil is cracking up because of the drought and the rabbit kingdom is facing a serious famine. The RRC(Rabbit Red Cross) organizes…
题意 现在有m个人,每一个人都特别喜欢狗.另外还有一棵n个节点的树. 现在每个人都想要从树上的某个节点走到另外一个节点,且满足要么这个人自带一条狗m,要么他经过的所有边h上都有一条狗. 2<=n<=2*10^4,1<=m<=10^4 输入格式 第一行为两个整数n,m,分别表示树的大小和人数. 接下来有n-1行,每一行有两个整数u,v,表示书上有一条u-v的边. 再接下来有m行,每一行两个整数x[i],y[i]表示第i个人想从x[i]走到y[i]. 输出格式 第一行为一个整数k,表示…
题目分析: 好题.本来是一道好的非套路题,但是不凑巧的是当年有一位国家集训队员正好介绍了这个算法. 首先考虑静态的情况.这个的DP方程非常容易写出来. 接着可以注意到对于异或结果的计数可以看成一个FWT的过程,进一步地可以注意到FWT在中途没有还原的必要.从FWT的过程中我们可以发现FWT具有可加性和交换律结合律. 这样原问题可以在静态的情况下通过树形DP做到$O(nm)$. 考虑动态的问题.根据<神奇的子图>命题报告及其拓展中描述的算法五,我们应该不难想到基于树链剖分的这样的做法. 首先对树…
<题目链接> 题目大意: 有一棵点数为 N 的树,以点 1 为根,且树点有权值.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a . 操作 3 :询问某个节点 x 到根的路径中所有点的点权和. Input 第一行包含两个整数 N, M .表示点数和操作数.接下来一行 N 个整数,表示树中节点的初始权值.接下来 N-1  行每行三个正整数 fr, to , 表示该树中存在一条边 (fr, to) .再…
<题目链接> 题目大意: 给定一棵无向树,这棵树的有边权,这棵树的边的序号完全由输入边的序号决定.给你一个人的起点,进行两次操作: 一:该人从起点走到指定点,问你这段路径的边权总和是多少. 二:对指定序号的边的权值做一些改变. 解题分析: 本题用的是树链剖分,同时用线段树去维护剖分出的树链.并且,本题也是无向边权转点权的典型例题,这部分要重点掌握. #include <cstdio> #include <cstring> #define Lson l,mid,rt<…
<题目链接> 题目大意: 给定一颗带点权的树,进行两种操作,一是给定树上一段路径,对其上每个点的点权增加或者减少一个数,二是对某个编号点的点权进行查询. 解题分析: 树链剖分的模板题,还不会树链剖分可以看这里 >>> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define Lson l,mid,rt<<…