题目描述 分析 对于测试点\(1\).\(2\),直接搜索即可 对于测试点\(3 \sim 6\),树退化成一条链,我们可以将其看成序列上的染色问题,用线段树维护颜色相同的最长序列 对于测试点\(7\).\(8\),肯定是车的速度越大能经过的道路越少,所以我们用类似并查集的方法从大到小依次维护联通块的直径,这里要用到一个结论:如果两个点集\(A\).\(B\)的直径分别为\((v_1,v_2)(u_1,u_2)\),那么\(A \cup B\)的直径一定出现在这\(C_4^2\)种选择之中,只要…
LINK:因懒无名 20分显然有\(n\cdot q\)的暴力. 还有20分 每次只询问一种颜色的直径不过带修改. 容易想到利用线段树维护直径就可以解决了. 当然也可以进行线段树分治 每种颜色存一下直径的端点即可. 考虑100分. 考虑到直径两个端点有区间可加性 所以直接外面套一个线段树维护区间端点即可. 修改采用上述做法两种均可.然后就做完了. code //#include<bits/stdc++.h> #include<iostream> #include<cstdio…
题目背景 $Maxtir$最喜欢最大值. 题目传送门(内部题128) 输入格式 第$1$行输入四个正整数$n,m,q$. 第$2$至$n+1$行中,第$i+1$行输入魔法晶石$i$的三种属性$(x_i,y_i,p_i)$. 接下来$q$行,每行两个正整数$l_i,r_i$,数据保证$[l_i,r_i]$互不包含. 输出格式 输出一行一个正整数$ans$表示答案. 样例 样例输入: 3 3 21 1 5000000042 2 3333333363 3 11 22 3 样例输出: 数据范围与提示 样…
题目传送门(内部题96) 输入格式 第一行一个整数$n$,接下来$n$行每行三个整数$a_i,b_i,w_i$. 输出格式 一行一个整数表示最大权值和. 样例 样例输入: 54 4 12 3 31 5 14 2 25 2 3 样例输出: 数据范围与提示 对于$10\%$的数据,$n\leqslant 8$. 对于$40\%$的数据,$n\leqslant 200$. 对于$70\%$的数据,$n\leqslant 3,000$. 对于$100\%$的数据,$1\leqslant n\leqsla…
题目描述 辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了.他每天都被$katarina$大神虐,仗着自己学过一些姿势就给$katarina$大神出了一道题.有一棵$n$个节点的以$1$号节点为根的树,每个节点上有一个小桶,节点$u$上的小桶可以容纳个小球,$ljh$每次可以给一个节点到根路径上的所有节点的小桶内放一个小球,如果这个节点的小桶满了则不能放进这个节点,在放完所有小球之后就企图去刁难$katarina$大神,让$katarina$大神回答每个节点的小桶内的小球有多少种颜色.…
题目描述 $D$先生,是一个了不起的甜甜圈制造商.今天,他的厨房准备在日出之前制作甜甜圈.$D$先生瞬间完成了$N$个油炸圈饼.但是,这些油炸圈饼得先经过各种装饰任务才可以成为甜甜圈销售:填充奶油,浸入巧克力,打顶可爱,丰富多彩的东西等等. 装饰任务有$K$个,任务编号为$1$到$K$,并且每一个甜甜圈都必须严格按照$K$个任务以$1,2,...,K$的顺序仅完成一次,才能成为销售物品. $D$先生将$N$个甜甜圈排成一列,他似乎打算一次完成每个装饰任务.但是,昨天晚上熬夜的$D$先生每个任务只…
题目描述 小$w$来到天堂的门口,对着天堂的大门发呆.大门上有一个二分图,左边第$i$个点连到右边第$p_i$个点.(保证$p_i$是一个排列).小$w$每次可以找左边某个对应连线尚未被移除的点$i$,付出$c_i$的代价之后删除左边第$i$个点到右边第$p_i$个点的连线,以及所有和它们相交的连线.请问小$w$最少要花多少钱来删除所有连线? 输入格式 一行一个整数$n$表示两边点的个数.一行$n$个整数表示$p_i$.一行$n$个整数表示$c_i$. 输出格式 一行一个整数表示答案. 样例 样…
题目传送门(内部题12) 输入格式 第一行,一个整数$n$,代表树的点数.第二行,$n$个整数,第$i$个整数是$B_i$,描述排列$B$.接下来$n−1$行,每行两个整数$u,v$,描述一条树边$(u,v)$.保证$1\leqslant B_i\leqslant n$,$1\leqslant u\neq v\leqslant n$.保证数据合法. 输出格式 输出一个整数表示答案对${10}^9+7$取模的值. 样例 样例输入1: 52 1 3 5 41 22 32 44 5 样例输出1: 样例…
题目传送门(内部题49) 输入格式 第一行四个整数$n,q,a,b$.接下来$n$行每行一个整数$p_i$. 输出格式 一行一个整数表示答案. 样例 样例输入: 10 3 3 7 样例输出: 数据范围与提示 对于$30\%$的数据:$n,q\leqslant 2,000$对于所有数据:$1\leqslant n,q\leqslant {10}^5$$1\leqslant p_i\leqslant n$ 题解 首先,我们考虑$30\%$的算法怎么办? 考虑$DP$,定义$dp[i][j]$表示到了…
题目链接 题解 早就想写线段树分治的题了. 对于每条边,它存在于一段时间 我们按时间来搞 我们可把一条边看做一条线段 我们可以模拟线段树操作,不断分治下去 把覆盖\(l-r\)这段时间的线段筛选出来,用并查集维护联通性,回溯时撤销操作 注意不能使用路径压缩(不能破坏树的结构,方便撤销操作) Code #include<bits/stdc++.h> #define LL long long #define RG register using namespace std; inline int g…