首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
hnoi2016网络题解
2024-09-03
[HNOI 2016]网络
Description 一个简单的网络系统可以被描述成一棵无根树.每个节点为一个服务器.连接服务器与服务器的数据线则看做 一条树边.两个服务器进行数据的交互时,数据会经过连接这两个服务器的路径上的所有服务器(包括这两个服务 器自身).由于这条路径是唯一的,当路径上的某个服务器出现故障,无法正常运行时,数据便无法交互.此外, 每个数据交互请求都有一个重要度,越重要的请求显然需要得到越高的优先处理权.现在,你作为一个网络系统的 管理员,要监控整个系统的运行状态.系统的运行也是很简单的,在每一个时刻,
【LG3250】[HNOI2016]网络
[LG3250][HNOI2016]网络 题面 洛谷 题解 30pts 对于\(m\leq 2000\),直接判断一下这个个点是否断掉一个交互,没断掉的里面取\(max\)即可,复杂度\(O(m^2\log n)\). 另20pts 对于无删除操作的,用线段树维护, 我们将一条路径的补集全部打上那条路径重要度的标记,这样我们断一条边时直接单点查询即可. 据说这样子再改改可以变成一种树剖加堆的做法,但是好像现在在bzoj被卡了 100pts 想到二分答案,若所有权值\(\geq mid\)的路径都
【BZOJ4538】[Hnoi2016]网络 整体二分+树状数组
[BZOJ4538][Hnoi2016]网络 Description 一个简单的网络系统可以被描述成一棵无根树.每个节点为一个服务器.连接服务器与服务器的数据线则看做一条树边.两个服务器进行数据的交互时,数据会经过连接这两个服务器的路径上的所有服务器(包括这两个服务器自身).由于这条路径是唯一的,当路径上的某个服务器出现故障,无法正常运行时,数据便无法交互.此外,每个数据交互请求都有一个重要度,越重要的请求显然需要得到越高的优先处理权.现在,你作为一个网络系统的管理员,要监控整个系统的运行状态.
Luogu-3250 [HNOI2016]网络
Luogu-3250 [HNOI2016]网络 题面 Luogu-3250 题解 CDQ分治...这个应该算是整体二分吧 二分重要度,按照时间从小到大加入大于重要度的边 对于一个询问,如果经过这个点的边数不等于加入的边数,那就说明有比重要度大而且不经过这个点的边,然后分成两部分继续做 看Candy?大佬的博客学会了一种加边方法:记录dfn序,对于一条边\(u\),\(v\).让端点的\(cnt\)++,\(lca\)和\(fa[lca]\)的--,找经过一个点边数只需要查询他的子树大小就好啦 代
BZOJ 4538: [Hnoi2016]网络 [整体二分]
4538: [Hnoi2016]网络 题意:一棵树,支持添加一条u到v权值为k的路径,删除之前的一条路径,询问不经过点x的路径的最大权值 考虑二分 整体二分最大权值,如果\(k \in [mid+1,r]\)中的路径有不经过x的,那么这个询问的答案在\([mid+1,r]\)中 链修改,点查询\(\rightarrow\)点修改,子树查询,方法是\(u,v +1\ ;\ lca,fa[lca] -1\) 用树状数组就可以完成 这里的整体二分不需要对每个询问保存当前贡献,因为每次只需要考虑一段的贡
4538: [Hnoi2016]网络
4538: [Hnoi2016]网络 链接 分析: 整体二分. 对于一次操作,可以二分一个答案mid,判断权值大于mid的路径是否全部经过这个点.如果是 ,那么这次询问的答案在[l,mid-1]之间,否则在[mid,r]之间. 判断是否所有的路径经过一个点:等价于数经过这个点的路径条数,对于一条路径(u->v),可以在u,v处+1,在lca处-1,在fa[lca]处-1,然后询问一个点的子树和即可. 多次询问,整体二分即可. 代码: #include<cstdio> #include&l
[HNOI2016]网络 树链剖分,堆
[HNOI2016]网络 LG传送门 表示乱搞比正解难想. 整体二分很好想吧. 但是为了好写快乐,我们选择三个\(\log\)的乱搞. 先树剖,线段树套堆维护区间最大值.对于一次修改,如果是插入,就把树上除了这条链的地方加上这个重要度,如果是删除则反之.注意线段树可以标记永久化,这里用的堆是一种(可能)叫懒惰堆的东西,直接看代码都能理解. //written by newbiechd #include <cstdio> #include <cctype> #include <
【题解】HNOI2016网络
整体二分是个好东西!可我忘记了它QAQ其实当你知道这题可以整体二分的时候就已经不难了(个人觉得这是最难想到的一点啊).整体二分的话,我们就可以把问题转化为是否有一条权值 \(>= k\) 的链经过某一点,这个可以通过树上差分做到 \(logn\) 的复杂度.而由于每次二分答案之后,都可以将询问和操作分成两个部分,所以是满足整体二分的性质的. 以及自己的代码能力还有待提升啊……(:д:) #include <bits/stdc++.h> using namespace std; #defi
(BZOJ4538)HNOI2016 网络
HNOI2016 Day1 T2 网络 Description 一个简单的网络系统可以被描述成一棵无根树.每个节点为一个服务器.连接服务器与服务器的数据线则看做一条树边.两个服务器进行数据的交互时,数据会经过连接这两个服务器的路径上的所有服务器(包括这两个服务器自身).由于这条路径是唯一的,当路径上的某个服务器出现故障,无法正常运行时,数据便无法交互.此外,每个数据交互请求都有一个重要度,越重要的请求显然需要得到越高的优先处理权.现在,你作为一个网络系统的管理员,要监控整个系统的运行状态.系统的
ZJOI2012网络 题解报告【LCT】
题目描述 有一个无向图G,每个点有个权值,每条边有一个颜色.这个无向图满足以下两个条件: 对于任意节点连出去的边中,相同颜色的边不超过两条. 图中不存在同色的环,同色的环指相同颜色的边构成的环. 在这个图上,你要支持以下三种操作: 修改一个节点的权值. 修改一条边的颜色. 查询由颜色c的边构成的图中,所有可能在节点u到节点v之间的简单路径上的节点的权值的最大值. 输入输出格式 输入格式: 输入文件network.in的第一行包含四个正整数N, M, C, K,其中N为节点个数,M为边数,C为边的
[洛谷P3250][HNOI2016]网络
题目大意:给定一棵树.有三种操作: $0\;u\;v\;t:$在$u$到$v$的链上进行重要度为$t$的数据传输. $1\;x:$结束第$x$个数据传输. $2\;x:$询问不经过点$x$的数据传输中重要度最大的是多少(无解输出$-1$). 题解:可以发现一条路径对所有不在这条路径上的点有贡献,所以可以把这些区间给排除(树链剖分中的每一条链存下来),把其他位置加上一个数,可以给每个点维护一个大根堆. 考虑删除一个数,可以再开一个大根堆,表示删除的数,若两个堆顶元素相同,就弹出. 卡点:无 C++
BZOJ4538:[HNOI2016]网络(树链剖分,堆)
Description 一个简单的网络系统可以被描述成一棵无根树.每个节点为一个服务器.连接服务器与服务器的数据线则看做 一条树边.两个服务器进行数据的交互时,数据会经过连接这两个服务器的路径上的所有服务器(包括这两个服务 器自身).由于这条路径是唯一的,当路径上的某个服务器出现故障,无法正常运行时,数据便无法交互.此外, 每个数据交互请求都有一个重要度,越重要的请求显然需要得到越高的优先处理权.现在,你作为一个网络系统的 管理员,要监控整个系统的运行状态.系统的运行也是很简单的,在每一个时刻,
并不对劲的bzoj4538:loj2049:p3250:[HNOI2016]网络
题意 有一棵\(n\)(\(n\leq 10^5\))个点的树,\(m\)(\(m\leq 2\times 10^5\))个操作.操作有三种:1.给出\(u,v,k\),表示加入一条从\(u\)到\(v\)权值为\(k\)的路径:2.给出\(k\),表示删除\(k\)时刻加入的路径:3.给出\(x\),表示询问不经过点\(x\)的路径的权值最大值. 题解 3操作看上去很奇怪,先假装它是"询问经过\(x\)的路径的权值最大值". 这样1操作就可以看成区间修改为最大值,3操作可以看成单点求
P3250 [HNOI2016]网络
LINK:网络 一棵树 每次添加一条路径 或者删除之前的一条路径 或询问除了不经过某个点之外剩下的最大值. 一个显然的思路 对于一条路径的权值我们直接把权值塞上去 标记永久化一下即可. 考虑如何求答案 一个比较暴力的思想 我们取所某个节点的所有标记 和全局标记从小到大一一比对即可. 这样复杂度还是Q^2的. 可以发现对于一条链的权值 如果不放到链上 而是放到这条链之外的所有的点上 那么我们求答案其实就变成了单点查询. 可以在树剖的时候把要覆盖的链求出来 排个序就得到了补集.(不过这种做法nlog
BZOJ4538 : [Hnoi2016]网络
求出这棵树的dfs序,对于一条链$u-v$,假设$st[u]\leq st[v]$,那么一条链不经过点$x$当且仅当它满足下面任意一个条件: 1.$st[v]<st[x]$ 2.$st[u]>en[x]$ 3.$st[x]<st[lca(u,v)]\leq en[x]$ 4.$st[u]<st[x],st[v]>en[x]$ 前3种情况可以通过线段树做到$O(\log n)$修改,$O(\log n)$查询. 第4种情况可以通过kd-tree做到$O(\log n)$修改,$
HNOI2016 网络
题目 朴素算法 在线. 树链剖分套一个堆. 时间复杂度\(O(n (\log n)^3)\). 分治 朴素算法中,套一个堆是为了支持删除操作. 采用以下分治可以避免删除操作: 每次对时间\([l,r]\)分治,先取一个中点\(m=(l+r) / 2\),对于一个请求(不妨设其作用范围为\([p,q]\))而言, 如果它跨越了\(m\),就是说\(p<m\)且\(q > m\),那么我们在该层计算它对询问的贡献,并且它不进入下一层. 所以可以去掉一个堆,时间复杂度\(O(n (\log n)^2
bzoj 4538: [Hnoi2016]网络
Description 一个简单的网络系统可以被描述成一棵无根树.每个节点为一个服务器.连接服务器与服务器的数据线则看做一条树边.两个服务器进行数据的交互时,数据会经过连接这两个服务器的路径上的所有服务器(包括这两个服务器自身).由于这条路径是唯一的,当路径上的某个服务器出现故障,无法正常运行时,数据便无法交互.此外,每个数据交互请求都有一个重要度,越重要的请求显然需要得到越高的优先处理权.现在,你作为一个网络系统的管理员,要监控整个系统的运行状态.系统的运行也是很简单的,在每一个时刻,只有可能
luogu P3250 [HNOI2016]网络
传送门 考虑只有一个询问,怎么使用暴力枚举最快的得到答案.因为要求最大的,所以可以把链按权值从大往小排序,然后往后扫,找到一个没有交的就是答案,直接退出 一堆询问,可以考虑整体二分,先二分一个值\(mid\),然后从前往后扫,如果是加入/删除操作,并且权值\(> mid\)就把这个操作贡献记上;如果是询问,然后如果经过这个点的链个数\(\ne\)当前存在的链个数,说明答案\(>mid\),否则\(\le mid\) 然后剩下的套一个整体二分板子就好了.答案的话如果取值范围的\(l=r\),就可
BZOJ4538 HNOI2016网络(树链剖分+线段树+堆/整体二分+树上差分)
某两个点间的请求只对不在这条路径上的询问有影响.那么容易想到每次修改除该路径上的所有点的答案.对每个点建个两个堆,其中一个用来删除,线段树维护即可.由于一条路径在树剖后的dfs序中是log个区间,所以其补集也是log个区间. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm>
【bzoj】4538: [Hnoi2016]网络
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4538 维护一个数据结构支持对于一颗树的操作,需要支持: 1.对于树上的一条路径上的每个点上放一个值. 2.撤销某次操作的路劲放. 3.查询除了经过这个点的路径的最大值. 往一个路径上丢值相当于往不经过条路径的所有点上丢值. 用一个树链剖分即可维护,对于操作区间取反. 直接查询单点最大值即可. 为了维护单点最大值,线段树中的每一个点对应两个堆,用于维护插入誉删除. 防止爆空间,所以标记永久
2019.01.13 bzoj4538: [Hnoi2016]网络(树链剖分)
传送门 树链剖分一眼题. 题意简述: 给定一棵树,有三种操作: 加入一条路径 删除一条已加入的路径 询问不过一个点x的路径的最大值. 思路: 直接树链剖分维护答案. 因为询问的事不过点xxx的最大值,因此对于一条路径我们只需要修改它的补集. 考虑到树上一条到根节点的路径映射到序列上只有logloglog段,因此它的补集也只有logloglog段,这样就可以修改了. 然后有了一种叫做删除的操作. 不难想到可以用可删堆+永久化标记. 代码很简单. 代码: #include<bits/stdc++.h
热门专题
sql server 查询阻塞
struts2 接收json
生成 vue.config.js 文件
使用hadoop 对一个文件进行压缩
centos重命名文件】
js 数组重复 并返回索引
vs2008编译error prj0002从cl.exe返回
微服务rpc接口如何配置
Navicat 15 for MySQL 破解包
iphone wifi 代理存储
linux自动巡检并生成exel
git两个版本不一致在落后的版本上编辑
vue项目能实现动静分离么
global mapper 添加mapbox
jquery 控制inptu radio
iOS让View旋转90度
vue 根据页面修改css样式
matlab散点密度图的画法三
json long转字符串
0x80070003 无法读取配置文件