返回顶部

随笔分类 - 

摘要:D. Treelabeling 题意:给你一颗$n$个节点的树,让你给每个点赋不同值$[1,n]$,博弈,先手先选起点$u$,之后每次选相邻的点$v$,同时满足$u \oplus v\le min(u,v)$.问你如何赋值,使得先手选择并且能赢的起点最多. 题解:先看$u\oplus v\le mi 阅读全文
posted @ 2021-11-16 10:48 _Kolibri 阅读(193) 评论(0) 推荐(0)
摘要:题意:有$n$对夫妻,假设某一对夫妻感情不合,那么男人会去找自己以前的情人私奔,然后情人的老公也会找自己以前的情人私奔,如果每个人都重新配对上了,那么这一对夫妻的婚姻就不安全,问你每对夫妻的婚姻是否安全 题解:对于每对夫妻,先将他们的匹配断开,然后匈牙利算法, 判断合不合法即可 代码: #inclu 阅读全文
posted @ 2021-11-03 11:59 _Kolibri 阅读(96) 评论(0) 推荐(0)
摘要:题意:有一张$n$个点的有向图,\(u-(I/C)>v\),表示$u$说$v$是$I/C$,假如$u$是$C$那么他说的是真话,否则是假话,现在要你给所有点赋值$I/C$,问你怎么赋值才能保证合法且$I$的数量最大。 题解:\(u-(I)>v\),假如$u$是$I$,那么$v$是$I$,假如$u$是 阅读全文
posted @ 2021-10-12 15:28 _Kolibri 阅读(107) 评论(0) 推荐(0)
摘要:题意:有一张DAG,每条边都有边权,每一天都需要计算$1$到$m$的最短路,但是有些点在某些天不能到达,假设某一天的路径和前一天的路径不同,需要额外的$k$个费用,保证任何时候$1$到$m$一定连通,问你$n$天下来的最少总费用。 题解:假设$dp[i]$表示前$i$天的最少总费用,$cost[i] 阅读全文
posted @ 2021-10-12 15:15 _Kolibri 阅读(43) 评论(0) 推荐(0)
摘要:题意:一本书有$n$个chapters,想要读懂某个chapter需要先读懂其他chapters,你每次只能从第一章读到最后一章,问你最少读多少次可以将所有chapters都读懂。 题解:对某个chapter,我们从它所需要读懂的chapter连一条有向边到它,不难发现,某个chapter能读懂,当 阅读全文
posted @ 2021-09-22 17:11 _Kolibri 阅读(64) 评论(0) 推荐(0)
摘要:传送门 A - Blood Pressure 水题 B - Cycle Hit 水题 C - chokudai 题意:给你一个字符串$S$,问你有多少子序列能构成$chokudai$,答案$\mod 1e9+7$. 题解:根据每个连续性,当遍历到某个字符时,状态一定只从它在模板串的上一个字符转移过来 阅读全文
posted @ 2021-09-07 22:15 _Kolibri 阅读(95) 评论(0) 推荐(0)
摘要:题意:有一张$n$个点,$m$条边的无向图,每条边都有边权,$q$个询问,每次问一个$q_i$,将所有边权减去$p_i$后不小于$0$的边为有效边,问有多少对点能相互到达。 题解:一张图,两个点连通,不难想到最小生成树,进而想到保留边权最大的边最优,即转化成了最大生成树,那么我们就可以将询问离线存下 阅读全文
posted @ 2021-09-04 19:38 _Kolibri 阅读(132) 评论(0) 推荐(0)
摘要:题意:初始你在$(0,0,0)$,有$n$个宝藏,每个宝藏的坐标是$(x_i,y_i,z_i)$,每秒你都可以瞬间抓到一个宝藏,但是所有宝藏每秒都会下沉$v_i$个单位,那么在$t$秒时某个宝藏的坐标为$(x_i,y_i,z_i+t*v_i)$.抓宝藏的贡献为原点到距离的平方. 题解:因为每秒都会对 阅读全文
posted @ 2021-08-12 19:18 _Kolibri 阅读(130) 评论(0) 推荐(0)
摘要:题意:有一个$n$x$n$的矩阵,有$m$个单位有权值,其他单位均为空,给你两个数组$a$和$b$,$a[i]$表示第$i$行的最大元素,$b[i]$表示第$i$列的最大元素,你需要在这$m$个单位中填值,在满足$a$和$b$数组的条件下求矩阵最小$sum$. 题解:将最大值为$k$的$a[i]$和 阅读全文
posted @ 2021-07-27 17:11 _Kolibri 阅读(83) 评论(0) 推荐(0)
摘要:传送门 分析:对于给出的邻接矩阵,用并查集维护牧场,并求两点的距离,然后对所有点跑一个floyd(因为只有连通的点我们才求了距离,所以可以直接对所有点跑),对于一个牧场,我们可以求出它里面每个点到其他点的最远距离,以及牧场的直径,那么我们再去枚举任意两个点,如果它们不在一个集合内,那么可以得到这两个 阅读全文
posted @ 2021-05-01 16:22 _Kolibri 阅读(63) 评论(0) 推荐(0)
摘要:题意:有一只老鼠,有$n$个位置,刚开始老鼠可能出现在任意位置,然后每次跑去第$a_i$个位置,如果$i=a_i$那么它就会停下,你可以在第$i$个位置花费$c_i$放置老鼠夹,你想要话费最小的代价来保证能抓到老鼠,问最小代价是多少. 题解:我们可以把数组$a$抽象成一张有向图,容易发现,对于一条链 阅读全文
posted @ 2021-04-29 16:59 _Kolibri 阅读(54) 评论(0) 推荐(0)
摘要:题意:有一组数$a$,如果$gcd(a_i,a_{i+1},...,a)=min(a_i,...,a{i+1},...,a)$,那么$i$和$j$之间就可以连一条边,边权为$min(a_i,...,a{i+1},...,a)$.$i$和$i+1$之间都可以连一天边权为$p$的边,现在给你这$n$个点 阅读全文
posted @ 2021-04-14 11:33 _Kolibri 阅读(111) 评论(0) 推荐(0)
摘要:题意:给你一个有向图,求最大半连通子图的总节点数和不同最大半连通子图的方案数. 题解: 用tarjan缩点后,注意缩点后建边的时候要判重,因为两个连通子图之间可能有很多条边,跑拓扑排序然后dp更新节点数和方案数即可,具体看代码. 代码: #include <bits/stdc++.h> #defin 阅读全文
posted @ 2021-04-01 13:23 _Kolibri 阅读(75) 评论(0) 推荐(0)
摘要:题意:有一张有向图,每个点都有点权,求某一路径的最大权值,重复经过的点的权值只计算一次. 题解:因为存在环什么的,所以我们直接求肯定不好搞,那么我们可以先进行缩点,当找完一个强连通分量后,将其中的所有点权贡献给缩完后的点,缩完点后可以再建新边,注意这里我为了省空间没有记录两个强连通分量之间的重边,但 阅读全文
posted @ 2021-03-31 11:45 _Kolibri 阅读(57) 评论(0) 推荐(0)
摘要:题意:有$n$个点,$m$条边,问你最少加多少条边,使得点$s$可以走到任何一个点. 题解:我们直接用tarjan缩点后,判断除了$s$以外强连通分量的入度为$0$的个数即可. 代码: #include <bits/stdc++.h> #define ll long long #define fi 阅读全文
posted @ 2021-03-31 11:30 _Kolibri 阅读(51) 评论(0) 推荐(0)
摘要:题意:有一张有向图,每个点的权值为点$1$到该点的最短距离(每条边的长度为$1$),对于一条路径,这条路径上最多只能有一条边,这条边起点的权值不小于终点,现在要求每个点能到达路径上的点的最小权值. 题解:首先我们先用bfs求出每个点的权值,并且在求的同时用桶将点存起来,方便之后枚举权值的时候用,然后 阅读全文
posted @ 2021-01-19 14:49 _Kolibri 阅读(103) 评论(0) 推荐(0)
摘要:题意:有$n$个点,$m$条单向边,保证每条边的起点小于终点,每个点都有权值,找到联通的点的两个点的最大差值. 题解:因为题目说了起点小于终点,所以我们可以反向存边,然后维护连通边的前缀最小值,如果当前点的入度不为$0$,则更新答案. 代码: #include <bits/stdc++.h> #de 阅读全文
posted @ 2021-01-17 15:45 _Kolibri 阅读(119) 评论(0) 推荐(0)
摘要:题意:给你一张图,要你去边,使其成为一个边数为$n-1$的树,同时要求树的最小边权最大,如果最小边权最大的情况有多种,那么要求总边权最小.求生成树后的所有简单路径上的最小边权和. 题解:刚开始想写最大生成树的,但是很明显不能满足总边权最小的要求.所以这里我们可以用二分,二分最小边权的值,然后再去跑k 阅读全文
posted @ 2020-12-26 17:10 _Kolibri 阅读(211) 评论(0) 推荐(0)
摘要:题意:一个棋盘上有一些"车",现在要让这些"车"跑到左倾斜的对角线上,每次可以移动一个棋子,但是棋盘的任意时刻都不能出现一个"车"能吃另一个"车"的情况.问最少需要移动多少次才能满足条件.("车"的个数小于对角线的格子数). 题解:对于某个棋子的位置$(x,y)$,我们可以$x->y$来建边,如果棋 阅读全文
posted @ 2020-12-21 20:22 _Kolibri 阅读(343) 评论(0) 推荐(0)
摘要:题意:给你带边权的树,有$m$次询问,每次询问有多少点对$(u,v)$之间简单路径上的最大边权不超过$q_i$. 题解:真的想不到用最小生成树来写啊.... 我们对边权排序,然后再对询问的$q_i$排序,我们可以枚举$q_i$,然后从last开始遍历边权,如果边权不大于$q_i$,那么就可以用并查集 阅读全文
posted @ 2020-11-27 09:58 _Kolibri 阅读(81) 评论(0) 推荐(0)