10 2018 档案
摘要:题目传送门 题意:有一棵数,每个节点有颜色,黑色或者白色,树边有边权,现在有2个操作,1修改某个点的颜色, 2询问2个白点的之前的路径权值最大和是多少。 题解: 边分治思路。 1.重构图。 因为边分治在菊花图的情况下情况不理想,所以需要先把图重新构建一下,是每个点的度数不超过3。 2.找在新图里面
阅读全文
摘要:题目传送门 题意:在一颗树上,求多少对点的距离 <= k. 先吐槽这个题目, f**k, 题目中说了l 和 n的范围, 我还以为k的范围也小于1001, 结果k的范围是没有确定的,直接写了一个树状数组疯狂re。。。。。。 题解:很裸的点分治。 1.找重心。 2.算多少个点对经过重心且满足题意。 3.
阅读全文
摘要:题目传送门 题意:在一个星空中,按着时间会出现一些点,现在john想知道,在某个时间内有多少个星星是的坐标是满足条件的。(x1<=x<=x2, y1 <= y <= y2, z1 <= z <= z2).题解:先简化问题,如果我们就统计出现所有 x <= x2 , y <= y2, z <= z2的
阅读全文
摘要:题目传送门 题目要求一个3维偏序点的最长子序列,并且字典序最小。 题解: 这种题目出现的次数特别多了。如果不需要保证字典序的话直接cdq就好了。 这里需要维护字典序的话,我们从后往前配对就好了,因为越前面的点权重越大。(对于字典序来说) 代码: 1 #include<bits/stdc++.h> 2
阅读全文
摘要:题目传送门 题意:刚开始有一个气球体积为空,现在有n个充气点,从1->n遍历这n充气点,每个充气点有vi,di,vi为走到这个充气点之后可以为气球充气vi的体积,di为选择了在这个点充气的时候,每次往后走气球会漏di的气体。 题解:李超线段树裸题。 李超树主要是维护优势线段。 每一个节点存一条线段的
阅读全文
摘要:题意:现在有一个点堆, 一开始先给你m个点,然后再用题目中的rand函数生成剩下的n个点,问在这个点堆中可以找到的最长严格递增序列的长度是多少。 题解: 很常见的一个3维CDQ。 先按照z轴 sort 一遍,然后对于当前的序列去cdq分治。对于CDQ的每一层来说,都是用左边的点的值去更新右边点的值,
阅读全文
摘要:题目传送门 题解: 对整个修改的区间进行分治。对于当前修改区间来说,我们对整幅图中将要修改的边权都先改成-inf,跑一遍最小生成树,然后对于一条树边并且他的权值不为-inf,那么这条边一定就是树边了。然后我们把这些点都缩成一个点。然后,我们继续对当前修改区间来说,我们把要修改的边的边权都修改成inf
阅读全文
摘要:题目传送门 题解:现在需要维护的每次的询问矩形和前面插入的所有矩形有公共部分的个数。 我们试着直接去维护这个东西, 发现可能的情况太多,不好维护,所以我们维护每次询问的时候在当前矩阵个数下,有多少个矩阵是一定在外面的。对于一个矩阵来说, 我们只需要统计到目前位置, 多少个矩形的下底线 在询问矩形的上
阅读全文
摘要:题目传送门 题意:现在有一棵树,每条边的长度都为1,然后有一个权值,求存在多少个(u,v)点对,他们的路劲长度 <= l, 总权重 <= w. 题解: 1.找到树的重心。 2.求出每个点到中心的长度和权值。 3.对所有点都询问出合法点的个数(包括同一颗子树)加到答案上。 4.对于每一棵子树内部都找到
阅读全文
摘要:题目传送门 题意:给你一颗树,问你有多少个点对满足他们的距离恰好为k。 题解: 很裸的一个点分治。 1.找到重心。 2.对每一棵子树中的每一个点,都直接询问k-deep的个数,加到答案里,每次处理对一棵子树询问完之后,把这个树的每个节点的深度加到deep的个数里。 3.对个数清0,然后处理每一棵子树
阅读全文
摘要:题目传送门 题意:给你一个序列,长度为n,m次询问,询问一段区间的第k大。 题解:CDQ分治,对整个值域进行分治。每次取一个mid, 计算出整个区间内mid <= 的数目,如果 num >= k, 那么就可以第k大的数一定落在[ l, mid]之间, 否者就会落在 [mid+1, r]之间, 然后我
阅读全文
摘要:题目传送门 题意:现在有3种操作, 1 t x 在t秒往multiset里面插入一个x 2 t x 在t秒从multiset里面删除一个x 3 t x 在t秒查询multiset里面有多少x 事情是按照输入顺序发生的,这个人有一个时光机,可以穿梭到那一秒去执行操作。 题解:CDQ分治。3维偏序,第一
阅读全文
摘要:园丁的烦恼 题解:如果 x 和 y 足够小的话, 我们就可以用2维树状数组去单点修改,区间查询去计算答案。但是现在 x 和 y 都足够大, 我们没办法去这样操作。 现在我们转换思路,按 x 为第一权重, y 为第二权重去排序, 这样我们就可以只用一颗树状数组去维护 x到当前为止y的数目。 然后对于查
阅读全文
摘要:先来看这样一道题目 给你N个点,M条双向边,要求求出1号点到其他所有点的距离。其中 2 <= N <= 1e5, 1 <=M <= 1e6. 对于这样的一道题目 我们当然不可能开一个数组edge[N][N]来记录边的信息,根本不可能开的下。 假如开下了也会有很多边为-1,浪费了很多空间。 所以可以对
阅读全文
摘要:dijkstra算法 是一种单源点最短路算法求出一个点到其他所有点的最短路。 给你这样的一个图,需要求出1号点到其他点的最短距离是多少。 首先我们开一个数组 d[N],d[x] 代表着从起点出发到x点的距离是多少。 开一个数组vis[N], vis[x]数组代表着某个点d[x]是不是成为定值,不会再
阅读全文
摘要:Marriage Match IV 题意:现在有n城市,m条单向路,现在男生在A城市,女生在B城市,现在男生要从A -> B 去看女生,每条路只能走一次,并且男生很懒,他第一次走的是A -> B的最短路,以后每次走的路都不能超过这个,求 男生从A->B次数最多有多少次。 题解:就是求有多少个不相干的
阅读全文
摘要:Kakuro Extension 题意:现在有一个n*m的矩形,现在每个白色的点都可以填 [1, 9] 中的一个数字。现在要求每行加起来的值等于左边的那个黑块的右值,每列加起来等于上边那个黑块的左值,求合法方案数。 题解:因为每个点至少是1,如果直接建边跑最大流的话会导致某些点的值为0,现在要保证每
阅读全文
摘要:Marriage Match II 题意:有n个男生,n个女生,现在有 f 条男生女生是朋友的关系, 现在有 m 条女生女生是朋友的关系, 朋友的朋友是朋友,现在进行 k 轮游戏,每轮游戏都要男生和女生配对,每轮配对过的人在接下来中都不能配对,求这个k最大是多少。 题解:二分 + 网络流check
阅读全文
摘要:Escape 题解:如果一个人一条边和适应星球连一条流量为1的边,那么结果因为点数太多,边数太多而TLE。现在我们把所有的适应星球状态一样的人放在一起,然后在同一个状态的人的边一起连边,从而减少边数和点数。 代码: 1 #include<bits/stdc++.h> 2 using namespac
阅读全文
摘要:UVA - 10480 Sabotage 题意:现在有n个城市,m条路,现在要把整个图分成2部分,编号1,2的城市分成在一部分中,拆开每条路都需要花费,现在问达成目标的花费最少要隔开那几条路。 题解:建图直接按给你的图建一下,然后呢跑一下最大流,我们就知道了最小割是多少,答案就是最小割了 。 现在要
阅读全文
摘要:Control 题意:有一个犯罪集团要贩卖大规模杀伤武器,从s城运输到t城,现在你是一个特殊部门的长官,可以在城市中布置眼线,但是布施眼线需要花钱,现在问至少要花费多少能使得你及时阻止他们的运输。 题解:裸的最小割模型,最小割就是最大流,我们把点拆成2个点,然后将原点与拆点建边,流量为在城市建立眼线
阅读全文

浙公网安备 33010602011771号