运输计划 二分答案 树上差分 P2680 运输计划 首先容易想到二分答案,将求解问题转换为判定,并且注意到答案显然具有单调性。 然后我们考虑如何快速判定。先预处理出所有计划路径长(\(dis[i]\)表示根节点到节点\(i\)的距离,\(dis[u]+dis[v]-2\times dis[lca(u,v)]\)即为树上\(u,v\)路径
前言 这场比赛成功的让我意识到我有多弱。 我意识到我的水平不是什么T3只会暴力,T2只会口胡,T1勉强切掉 而是T1一脸懵逼,T2,T3连题解所提到的算法都不会(LCT,树上莫队)。零分退场。 CSP-S会不会以同样的姿势退役呢? 算不出来(math) 挖坑 国王开车(tour) 先让我去学一下 LCT 树上数数 先让我去
Kruskal重构树学习笔记 为做这道题,特意去学了一波Kruskal重构树。 以下写写学习心得: 首先像Kruskal一样按权值排序, 不过将Kruskal生成树的并查集合并操作改为了新建点,为合并的两点的父亲,点权为加入的边的权值的操作 作者不要脸地剽图了 变为: 有一些性质: 1.二叉树。 2.点权大根堆
题目传送门(内部题66) 输入格式 第一行,一个正整数$n$,一个自然数$q$,一个整数$type$。 第二行,$n$个正整数,代表$a_i$。 接下来$n-1$行,每行两个正整数$u$、$v$,代表树中存在一条边$(u,v)$。接下来$q$行,每行两个正整数$r$、$k$,然后$k$个正整数$x_1,x_2,...,x_k$。询问中的$p_i=(x_i−1+la
Bob有一棵$n$个点的有根树,其中$1$号点是根节点。Bob在每个点上涂了颜色,并且每个点上的颜色不同。定义一条路径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色。Bob可能会进行这几种操作: 1 x 把点$x$到根节点的路径上所有的点染上一种没有用过的新颜色。 2 x y 求$x$
目录 后缀自动机做题记录 sp1811 sp1812 sp10570 luogu 2463 CF873F TJOI2015 弦论 AHOI2013 差异 HEOI2016/TJOI2016 字符串 HAOI2016 找相同字符 SDOI2016 生成魔咒 ZJOI2015 诸神眷顾的幻想乡 留坑待填 广义SAM 其他 NOI原题练习 后缀自动机做题记录 来填之前的坑了。
noip2018 铺设道路 货币系统 赛道修建 一眼贪心。随便实现。 旅行 环套树枚举删除环上哪条边。 填数游戏 找规律,这谁会啊。 保卫王国 动态Dp,去问这位神仙。 noip2017 小凯的疑惑 就是数论结论题,当然也可以找规律。 时间复杂度 原理都懂,大模拟。 逛公
// 例题:洛谷P3128 https://www.luogu.org/problem/P3128 // 何为差分&&为什么要用差分 见博客:https://www.zybuluo.com/Junlier/note/1232395 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int MAXN = 5e4
题意 给定一颗无根树,树上任意两个结点之间可以传递消息。当结点\(u\)向结点\(v\)传递消息时,这条消息将会经过\(u,v\)之间的所有有向边各一次 当一条消息在传递的过程中经过有向边\(u\to v\)时,如果\(u < v\)则结点\(u,v\)的权值各\(+1\)反之则各\(-1\) 在经过若干次消息传递后,树上
A. 施工 B. 蔬菜 正解还是用到了分块的思想: 1.对于出现次数很多的蔬菜,直接用前缀和累计答案。 2.对于出现次数较少的蔬菜,考虑将平方的含义转化为点对。 将一棵蔬菜定义为点$(x,y)$,那么任意相同的两棵蔬菜(可以是同一个棵)可以表示为点对$(x_1,x_2,y_1,y_2)$。 设询问
在树上进行分治的时候常常会选取一个点,通过该点将树分隔成为多个分支,在多个分支中进行分治,最终回到该点上处理各个分治之间的关系。 分治的关键步骤大概是:选点,分治,合并。 选点: 树上分治的关键在于,通过分治可以将树编程许多小的分支,从而化简时间复杂度,然而为了使平均时间最小,我
题目描述 某收费有线电视网计划转播一场重要的足球比赛。他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节点。 从转播站到转播站以及从转播站到所有用户终端的信号传输费用都是已知的,一场转播的总费用等
树上差分,顾名思义,就是在树上进行差分,以起到优化复杂度的目的。主要作用是对树上的路径进行修改和查询操作,在修改多、查询少的情况下复杂度比较优秀。实际上,树上差分能够实现的操作,用线段树、树剖、$LCT$等等也可以实现,但它的优势在于实现简单,可以避免在考场上出现写题五分钟、调试
有这样一道题目; 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个, 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子? 学了代码之后这
点分治 这道题还有很多种其它写法,什么长链剖分啦,启发式合并啦等等。 首先,我们可以把点对\((u,v)\)分成两类: 1.u到v的路径是一条链 2.u到v的路径不是一条链(废话) 对于第一类,显然\(f(u,v)\)就是链的长度,可以单独统计 对于第二类,就要在点分治上搞了 我们可以先计算出为d的倍数的点对数
感觉最近做题都做傻了,这道题居然没有任何思路,(去世摸鱼中) 种植花圃 题目描述 众所周知,蔡老板有一个巨大的庄园。蔡老板已经厌倦了庄园现有的花圃颜色,决定重新对庄园重新种植花圃。为了简化这个问题,我们把蔡老板的庄园抽象成了一个无向连通图 GG 。他的每一块花圃被抽象成
树形dp 概述 树形dp 一般用于解决树上问题,答案需要可以从子节点转移到父节点,或者相反。通常的实现方式是在dfs 的过程中顺便求出答案。 树形dp一般分为几种:子树大小统计,树上(类)背包和树上距离问题。 树形dp没有什么前置技能,可以出现在NOIP及高阶的比赛中,难度跨度较大。 子树大小统计
树上启发式合并,一种美妙的黑科技,可以用普通的优化让你$n^2$变成严格$n log$,解决一些类似(树上数颜色,树上查众数)这样的问题 首先你要知道你为什么是$n^2$的 我不知道 以这个图为例 每次你从一个节点开始向下搜,你从1节点搜到3,搜完这个子树然后你需要把3存的col等信息删去再
(这题在洛谷主站居然搜不到……还是在百度上偶然看到的) 题目描述 给一棵根为1的树,每次询问子树颜色种类数 输入输出格式 输入格式: 第一行一个整数n,表示树的结点数 接下来n-1行,每行一条边 接下来一行n个数,表示每个结点的颜色c[i] 接下来一个数m,表示询问数 接下来m行表示询问的子树
给出二叉树的根节点 root,树上每个节点都有一个不同的值。 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。 返回森林中的每棵树。你可以按任意顺序组织答案。 示例: 输入:root = [1,2,3,4,5,6,7], to_delete = [3,5] 输出:[
今天更新一篇,直奔主题。 题意: 有一棵n(4<=n<=15)个结点的树,其中一个结点有一个机器人,还有一些结点有石头。每步可以把一个机器人或石头移到一个相邻的节点。任何情况下一个结点里不能有两个东西(石头或机器人)。输入每个石头的位置和机器人的起点和终点,求最小步数的方案。如果有多解,可
点分治能够快速处理树上路径问题。 在考虑路径问题时,可以利用分治的思想。选出一个根节点,先考虑所有经过根节点的路径。路径的起点和终点分别在根节点的两个子树上。解决之后,要解决的就是各个子树的路径问题了。我们再找出每个子树的根节点,然后一样递归处理即可。 问题在于应该选哪
题目描述 传说中的暗之连锁被人们称为 Dark。 Dark 是人类内心的黑暗的产物,古今中外的勇者们都试图打倒它。 经过研究,你发现 Dark 呈现无向图的结构,图中有 N 个节点和两类边,一类边被称为主要边,而另一类被称为附加边。 Dark 有 N – 1 条主要边,并且 Dark 的任意两个节点之间都存在一
相关链接: 国家集训队论文2009: 漆子超《分治算法在树的路径问题中的应用》 点分治: 首先选取一个点将无根树转为有根树,再递归处理每一颗以根结点的儿子为根的子树。 [POJ1741]Tree [SPOJ1825]FTOUR2 边分治: 在树中选取一条边,将原树分成两棵不相交的树,递归处理。 [SPOJ2666]QTR
由于马上要考电路了,而且学物联网就很烦,不知道到底要主攻哪个方向比较好,乱七八糟。 先给出几篇宝藏博客,之后的有时间再补上 https://blog.csdn.net/wangwangbu/article/details/51453084 https://www.cnblogs.com/yyf0309/p/5972701.html https://blog.csdn.net/Stockholm_Sun/artic