BZOJ又不给题面... Luogu的翻译看不下去... 题意简述 有一个$n$个节点的树,边有权值,定义两个节点之间的距离为两点之间的路径上的最小边权 给你$Q$个询问,问你与点$v$的距离超过$k$的点有多少个 $n,Q<=100000$ 题解 很妙的做法. 并查集+离线 显然可以把询问离线,按K值排序 处理距离的话可以使用并查集,并不需要带权,只需要把边也按权值排序,用并查集维护. 具体做法:对每个点维护一个$siz$数组表示与它联通的节点数目,用类似双指针的方法把符合规则的边的两端点并起…
BZOJ5188 [Usaco2018 Jan]MooTube 突然发现BZOJ没有题目,放题面. 题意翻译 题面描述 在业余时间,Farmer John创建了一个新的视频共享服务,他将其命名为MooTube.在MooTube上,Farmer John的奶牛可以录制,分享和发现许多有趣的视频.他的奶牛已经发布了 N个视频 ( $1 \leq N \leq 100,000 \(),为了方便将其编号为\) 1 \ldots N $.然而,FJ无法弄清楚如何帮助他的奶牛找到他们可能喜欢的新视频. FJ…
hdu 1811 Rank of Tetris Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description 自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球Tetris高手排行榜,定时更新,名堂要比福布斯富豪榜还响.关于如何排名,这个不用说都知道是根据R…
题目链接 题意 用不同颜色的线段覆盖数轴,问最终数轴上有多少种颜色? 注:只有最上面的线段能够被看到:即,如果有一条线段被其他的线段给完全覆盖住,则这个颜色是看不到的. 法一:线段树 按题意按顺序模拟即可. 法二:线段树+离线 将整个过程倒过来看待,如果要加进去的线段所在的区域已经完全被覆盖,那么这条线段就没有贡献,否则就有\(1\)的贡献. 法三:并查集+离线 离线处理思想同上. 用\(fa[\ ]\)数组记录某个元素左边距其最近的没有被覆盖的点的坐标.那么对于当前覆盖的线段\([l,r]\)…
Description Byteland国家的网络单向传输系统可以被看成是以首都 Bytetown为中心的有向树,一开始只有Bytetown建有基站,所有其他城市的信号都是从Bytetown传输过来的.现在他们开始在其他城市陆 续建立了新的基站,命令“C x“代表在城市x建立了一个新的基站,不会在同一个城市建立多个基站:城市编号为1到n,其中城市1就是首都Bytetown.在建立基站的过程中他们还 会询问某个城市的网络信号是从哪个城市传输过来的,命令”Q x“代表查询城市x的来源城市. Inpu…
题面 Bzoj 洛谷 题解 最暴力的方法是直接判两个点之间的路径最小值是否\(\geq k\),用\(Dijkstra\)可以做到该算法最快效率,但是空间复杂度始终是\(O(n^2)\)的,会\(MLE\),其实仔细观察一下,会发现对于一个满足某个\(k\)的路径\(dis\),它一定会满足\(\forall k'\leq k\),同时,对于任意一条长度大于\(|dis|\)的路径,它也满足又满足这些\(k\),甚至更多的\(k'\),于是我们从这个性质入手. 具体来说,就是将询问离线化,按照\…
Connections in Galaxy War Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice ZOJ 3261 Appoint description:  Description In order to strengthen the defense ability, many stars in galaxy allied together an…
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MB Submit: 4105 Solved: 1826 [Submit][Status][Discuss] Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧道互相直接或间接地连接. 但好景不长,很快帝国又重…
Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧道互相直接或间接地连接. 但好景不长,很快帝国又重新造出了他的超级武器.凭借这超级武器的力量,帝国开始有计划地摧毁反抗军占领的星球.由于星球的不断被摧毁,两个星球之间的通讯通道也开始不可靠起来.现在,反抗军首领交给你一个任务:给出原来两个星球之间的以太隧道连通情况以及帝国打击的星球顺序,…
类似于NOI2018d1t1的离线做法,把询问存下来,排个序,然后倒着给并查集加边,每次询问并查集联通块大小 #include<bits/stdc++.h> #define ll long long #define pa pair<int,int> using namespace std; ; inline ll rd(){ ll x=;char c=getchar(); ') c=getchar(); +c-',c=getchar(); return x; } struct Ed…
题意:给出一些点,每个点有权值,然后有一些边,相连.无向的.然后有一些操作 链接:点我 query a.表示从a出发的能到达的所有点权值最大的点的编号(相同取编号最小,而且权值要比自己大) destory a,b 表示删除连接a,b的边 逆向并查集. 把没有删除的边先加入并查集,一个集合内表示连通的,根结点为权值最大的点. 然后对于查询离线读入,从最后开始操作,对于删除的点,然后重新加入到并查集中,更新最值. 查询的时候便是查询根结点的值是否大于自身的值 #include <stdio.h>…
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 5572  Solved: 2563 Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧道互相直接或间接地连接. 但好景不长,很快帝国又重新造出了他的超级武器.凭借这超级武器的力量,帝国开…
题意: 1.有n个星球,每个星球有一个编号(1-n)和一个能量值. 2.一开始将某些星球连通. 3.开战后有很多个操作,查询某个星球能找谁求救或者摧毁两颗星球之间的连通路径,使其不能连通.如果连通则可以相互求救,求救的对象要求能量比自己大并且在连通的星球中能量最大,如果能量最大的星球有多个,则找编号小的. 解题: 1.用并查集连通星球,把能量大的作为根节点,如果能量相同则把编号小的作为根节点,方便查询求救对象. 2.并查集没有断开的操作,把末态作为起始状态逆推.保存一开始的连通路径和开战后摧毁的…
链接:Destroying Array C. Destroying Array time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are given an array consisting of n non-negative integers a1, a2, ..., an. You are going to destro…
搜了题解才把题搞明白.明白之后发现其实题意很清晰,解题思路也很清晰,只是题目表述的很不清晰…… 大意如下—— 给你一个无向图,图中任意两点的距离是两点间所有路径上的某一条边,这条边需要满足两个条件:1. 这条边这两点间某条路径上的最长边:2. 这条边是这两点间所有路径上的最长边中的最短边. 简单来说,假如a到d有两条路径,一条经过b,一条经过d,其中ab = 1, bd = 3, ac = 2, cd = 2,那么abd上的最长边为3,acd上的最长边为2,则ad的距离为2. 如果a, d两点间…
题意:一颗树,定义一条路径的权值等于路径的边权之和,需要求这颗树所有路径中权值的最大值 思路: 考虑到路径权值与点权的最值有关,而最值的问题通常可以通过排序就行处理,于是想到先把点权排序. 容易看出如果某条路径的权值是通过某个点算出的最小 ,那么肯定这条路径肯定不会经过权值更小的点,于是有了两种处理思路 1.按点权从小到大删点,对于即将删除的点,比他权值小的点已经被删去了,所以只要在当前状态的森林里找一条最长路径乘以次点权就可以更新答案 2.按点权从大到小加点,显然新加进来的点权值最小,当前树里…
题意: 给你一颗N个节点的树,节点编号1到N.1总是节点的根.现在有两种操作: M v: 标记节点v Q v: 求出离v最近的标记的相邻节点.根节点一开始就标记好了. 现在给一系列操作,求出所有Q操作结果的和. 思路: 最坏情况下为整棵树成为一条链,单纯使用并查集(无压缩)查询复杂度最坏1e10.单纯使用并查集也能过. 正解应该是将查询存下来,存下每次Q操作的查询时间和查询结点,用qt和qv数组存储.另外设置mark数组存储这个结点被染色的最快时间.然后我们倒着进行查询操作,当当前查询的结点最早…
题解 给定一张图,支持删点和询问连通块个数 按操作顺序处理的话要在删除点的同时维护图的形态(即图具体的连边情况),这是几乎不可做的 我们发现,这道题可以先读入操作,把没删的点的边先连上,然后再倒序处理操作 这样的话从删点变成了加点,而且只要维护连通块的数量,用并查集可以快速的解决这个问题 代码 #include <bits/stdc++.h> using namespace std; const int maxn = 4 * 200000; int n, m, q[maxn]; vector&…
ShangHai2006 Homework Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 918  Solved: 460[Submit][Status][Discuss] Description   1:在人物集合 S 中加入一个新的程序员,其代号为 X,保证 X 在当前集合中不存在.    2:在当前的人物集合中询问程序员的mod Y 最小的值. (为什么统计这个?因为拯救 过世界的人太多了,只能取模)    Input 第一行为用空格隔开的…
Description 非常久曾经.在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器.并攻下了星系中差点儿全部的星球.这些星球通过特殊的以太隧道互相直接或间接地连接. 但好景不长,非常快帝国又又一次造出了他的超级武器. 凭借这超级武器的力量.帝国開始有计划地摧毁反抗军占领的星球.因为星球的不断被摧毁,两个星球之间的通讯通道也開始不可靠起来.如今,反抗军首领交给你一个任务:给出原来两个星球之间的以太隧道连通情况以及帝国打击的…
Description 给定一棵树,边的颜色为黑或白,初始时全部为白色.维护两个操作: 1.查询u到根路径上的第一条黑色边的标号. 2.将u到v    路径上的所有边的颜色设为黑色. Notice:这棵树的根节点为1 Input 第一行两个数n,m分别表示点数和操作数. 接下来n-1行,每行2个数u,v.表示一条u到v的边. 接下来m行,每行为以下格式: 1 v 表示第一个操作 2 v u 表示第二种操作 n,m<=10^6 Output 对于每个询问,输出相应答案.如果不存在,输出0 题解:我…
题目:https://vjudge.net/contest/323699#problem/A 题意:给你一棵树,然后有m个查询,每次查询问一条路径最大边小于给定查询的数量 思路:首先我们看到,我们其实可以计算出每个边权小于查询的所有连通块,然后sum+C(n,2),对每个连通块都加上值,然后就是答案了,但是这里注意查询数很多,我们肯定不能O(n)遍历每个查询,但是思路肯定是计算联通块里组合数的数量,怎么处理呢,我们注意到,他这个边权是的值的大小和我的连通块的有关,我们是否可以利用之前求出来的值呢…
http://acm.hdu.edu.cn/showproblem.php?pid=3938 两点之间建立传送门需要的能量为他们之间所有路径里最小的T,一条路径的T为该路径上最长的边的长度.现在 Q 个询问,问 L 能量可以选择多少种不同点对? 因为小的能量找出的点对,在大的能量下肯定也能建立传送门,因此把询问记下来,按询问的能量从小到大计算,这样离线处理. 从小到大枚举添加每条能量不超过当前能量且还没枚举过的边, 如果它连接的两个点属于不同联通块,就加上这条边. 能选择的点对就有两个联通块的点…
题目描述 现在,我想知道自己是否还有选择. 给定n个点m条边的无向图以及顺序发生的q个事件. 每个事件都属于下面两种之一: 1.删除某一条图上仍存在的边 2.询问是否存在两条边不相交的路径可以从点u出发到点v 输入 第一行三个整数n,m,q 接下来m行,每行两个整数u,v,表示u和v之间有一条边 接下来q行,每行一个大写字母o和2个整数u.v,依次表示按顺序发生的q个事件: 当o为’Z’时,表示删除一条u和v之间的边 当o为’P’时,表示询问是否存在两条边不相交的路径可以从点u出发到点v 输出…
题目传送门 这道题可以改为离线处理 倒着找答案 这样删点就变成加点了 有了这个思想题目就很好写了哇 23333 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; int read(){ ,f=,c=getchar(); ; c=getchar();} +(c-'); c=getchar();} return ans*f; } int n,m,k,tot,sum; i…
http://acm.hdu.edu.cn/showproblem.php?pid=3938 Portal Problem Description   ZLGG found a magic theory that the bigger banana the bigger banana peel .This important theory can help him make a portal in our universal. Unfortunately, making a pair of po…
LINK:Numbers on the blackboard 看完题觉得很难. 想了一会发现有点水 又想了一下发现有点困难. 最终想到了 但是实现的时候 也很难. 先观察题目中的这个形式 使得前后两个数字变成x+2y. 那么一个数字的变成两倍的次数固定 除了左端点至少可以变化一次. 有些数字 可以变换多次 这取决于什么 容易考虑到右端点 先变化一次 如果>0显然 可以和其左边进行合并一下. 然后 可以变换更多次 然后从右到左考虑这个过程就发现是正确的了. 这样 我们得到了一个nm的做法. 容易发…
统计块个数写错了调了好久啊,BZOJ1696的弱化版本. #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <map> #define fi first #define se second #define mp make_pair #define pa pair<int,int> using namespace…
题目大意:给你一棵边权树,定义两点间距离为它们唯一路径上的最小路权,求与某点距离不大于K(k为已知)的点的数量 带权并查集维护集合内元素总数 路和问题 都按权值大到小排序,枚举问题, 建权值不小于K的边,并查集维护连通性,求集合元素内总数即可 #include <bits/stdc++.h> #define N 200100 #define inf 0x3f3f3f3f using namespace std; int n,q,cnt; int fa[N],f[N]; struct EDGE{…
题意:给n个节点m条带权值边的无向图.然后q个问题,每次询问点对的数目,点对需要满足的条件是:1)连通:2)其路径的最大权值不能超过询问值. 分析:如果没次询问一次,dfs一次,很可能超时,因此可以用并查集.离线处理,把边按权值排序,把问题按大小排序.然后离线的过程就是不断向图中加边的过程. 比如样例如下: 然后离线处理,排完序后将会是一条一条的加边:问题也排了序,因此是个累加过程... #include <cstdio> #include <iostream> #include…