05 2019 档案

摘要:题意及思路:https://www.cnblogs.com/Yuzao/p/8494024.html 最小割树的实现参考了这篇博客:https://www.cnblogs.com/coder-Uranus/p/9771919.html 代码: 阅读全文
posted @ 2019-05-31 12:47 维和战艇机 阅读(299) 评论(0) 推荐(0)
摘要:题意:给你一颗以点1为根的数,有两种操作,一种是把x及其子树的所有点都灌满水,一种是把x及其所有祖先都放空水,一种是询问,问某个点里有没有水? 思路:看网上大多数是树剖,但实际上5e5的数据树剖还是有点慌的。。。我只用了线段树。我们发现,只要一个点被清空之后,如果没有灌水,那么这个点将一直是空的。同 阅读全文
posted @ 2019-05-30 23:48 维和战艇机 阅读(356) 评论(0) 推荐(0)
摘要:题意及思路:https://blog.csdn.net/tianyizhicheng/article/details/90369491 代码: 阅读全文
posted @ 2019-05-28 09:50 维和战艇机 阅读(197) 评论(0) 推荐(0)
摘要:题意及思路:https://blog.csdn.net/yzyyylx/article/details/90145400 这题主要巧妙在分析了最短路算法的性质,得出大小小于等于3的连通块一定不会被再次访问的结论。 代码: 阅读全文
posted @ 2019-05-27 20:39 维和战艇机 阅读(301) 评论(0) 推荐(0)
摘要:题意:给你一个长度为n的序列,有q次询问,每次询问给出两个位置x和y(x < y),问是否可从x到达y?可达的定义是:如果存在一个序列(假设长度为k),其中p1 = x, pk = y,并且这个序列中a[pi] & a[p(i + 1)] != 0。 思路:设dp[i][j]是从i位置及其之后的位置 阅读全文
posted @ 2019-05-27 20:29 维和战艇机 阅读(635) 评论(0) 推荐(0)
摘要:题意:给你一个括号序列,这个括号序列将确定一颗二叉树。有q次询问,每次询问输出这颗树的直径。 思路:https://blog.csdn.net/Huah_2018/article/details/89788074 代码: 阅读全文
posted @ 2019-05-24 21:41 维和战艇机 阅读(355) 评论(0) 推荐(0)
摘要:题意:给你一颗树,有q次询问,每次询问给你若干个点,这些点可以最多分出m组,每组要满足两个条件:1:每组至少一个点,2:组内的点不能是组内其它点的祖先,问这样的分组能有多少个? 思路:https://blog.csdn.net/BUAA_Alchemist/article/details/86765 阅读全文
posted @ 2019-05-24 14:49 维和战艇机 阅读(380) 评论(0) 推荐(0)
摘要:题意:给你一张图,问最少保留多少条边,使得这张图是边双联通分量。 思路:如果一个点集中的点已经是边双联通分量,那么从这个点集中的点x出发,经过若干个不是点集中的点,回到点集中的点y(x可能等于y),那么这条路径上的点和原来的点就构成了一个新的边双联通分量。 设dp[i]是状态i中的点构成边双联通分量 阅读全文
posted @ 2019-05-23 16:18 维和战艇机 阅读(379) 评论(0) 推荐(0)
摘要:题意:给你一个长度为n的字符串,有q次询问,每次询问会给字符串x的末尾添加一个字符y,或者删除字符串x末尾的字符,询问过后,要判断长度为n的字符串中是否有3个不重合的子序列,是这3个字符串。 思路:设dp[i][j][j]为3个字符串的长度分别为i, j, k时,匹配的最靠前的位置。那么就枚举是通过 阅读全文
posted @ 2019-05-21 21:40 维和战艇机 阅读(266) 评论(0) 推荐(0)
摘要:题意:给你一颗树,树边的权值可能是0或1,问先走0边,再走1边,或者只走1边的路径有多少条? 思路:对于一个点,假设通过0边相连的点一共有x个(包括自己),通过1边相连的有y个(包括自己),那么对答案的贡献为x * y - 1,意思是以x个点为起点,以y个点为终点了路径条数,-1是因为自己到自己的不 阅读全文
posted @ 2019-05-20 21:04 维和战艇机 阅读(347) 评论(0) 推荐(0)
摘要:题意:给你一个数组,问里面最多能匹配出多少对,满足abs(a[i] - a[j]) >= k; 思路:首先肯定要排序。 思路1(尺取法):看了dreamoon的代码明白的。我们可以寻找一个最长的段,这段的最大值和最小值的差小于k,假设数组长度是n,那么答案是min(n / 2, n - mx)。为什 阅读全文
posted @ 2019-05-20 20:42 维和战艇机 阅读(532) 评论(0) 推荐(0)
摘要:题意:给你一张无向图,无向图中每条边有颜色。有两种操作,一种是询问从x到y是否有双彩虹路,一种是在x到y之间添加一条颜色为z的边。双彩虹路是指:如果给这条路径的点编号,那么第i个点和第i - 1个点相连的边与第i个点和第i + 1个点相连的边颜色一样,其中i是偶数。 思路:这个问题相当于初了最后一步 阅读全文
posted @ 2019-05-20 16:52 维和战艇机 阅读(416) 评论(0) 推荐(0)
摘要:题意:给你一张无向图,有若干次操作,每次操作会修改一条边的边权,每次修改后输出1到n的最短路。修改相互独立。 思路:我们先以起点和终点为根,找出最短路径树,现在有两种情况: 1:修改的边不是1到n的最短路上的边,那么可能出现的情况就是这条边的权值变得足够小,出现了新的最短路,那么我们只需判断一下是不 阅读全文
posted @ 2019-05-20 09:12 维和战艇机 阅读(1219) 评论(0) 推荐(0)
摘要:题意:给你一个集合,让你构造一个长度尽量长的排列,使得排列中任意相邻两个位置的数XOR后是集合中的数。 思路:我们考虑枚举i, 然后判断集合中所有小于1 << i的数是否可以构成一组异或空间的基,如果可以就可以通过深搜构造出来。判断的方法是通过高斯消元。找到最大的i,我们通过深搜的方式构造答案,深搜 阅读全文
posted @ 2019-05-18 16:05 维和战艇机 阅读(342) 评论(0) 推荐(0)
摘要:题意及思路:https://www.cnblogs.com/dd-bond/p/10859864.html 代码: 阅读全文
posted @ 2019-05-17 23:15 维和战艇机 阅读(199) 评论(0) 推荐(0)
摘要:题意:给你一个数组,你可以选择数组中的一个数,把它插入数组的其它位置,问∑ i * a[i]的最大值为多少? 思路:设dp[i]表示把第i个数向左边插入可以获得的最大增量,我们假设向左边插入,设插入的位置是j,当前位置是i,那么变化为sum[i - 1] - sum[j - 1] - (i - j) 阅读全文
posted @ 2019-05-17 14:54 维和战艇机 阅读(303) 评论(0) 推荐(0)
摘要:题意:给你一个函数f,计算∑(i = 1 to n)(j = i to n) f(i, j)。f(i, j)的定义是:取出数组中i位置到j位置的所有元素,排好序,然后把排好序的位置 * 元素 加起来。比如[7, 4, 2, 1], f(1, 4)是1 * 1 + 2 * 2 + 3 * 4 + 5 阅读全文
posted @ 2019-05-16 21:59 维和战艇机 阅读(356) 评论(0) 推荐(0)
摘要:题意:给你一个长度为n的数组,以及数组中的数的取值范围1 - m,问有多少个区间[l, r],使得删除了数组中数值为[l, r]的数之后,数组是非递减的。 思路:我们记录一下每一个数出现的最左端和最右端的位置,这样形成的若干个区间,如果数组是非递减的,那么一定是下列这种情况:范围1 - n中有若干个 阅读全文
posted @ 2019-05-16 19:29 维和战艇机 阅读(498) 评论(0) 推荐(0)
摘要:题意:给你一张图,每个城市有一些人,有不超过10个城市有避难所,避难所有容量上限,问最快多久可以让所有人进入避难所? 思路:二分时间,对于每个时间跑一遍最大流,判断最大流是不是人数即可。我们还需要用二进制优化一下,对于每个二分的时间,我们需要预处理出某个城市可以到达哪些避难所,表示成状态。如果在当前 阅读全文
posted @ 2019-05-15 18:19 维和战艇机 阅读(291) 评论(0) 推荐(0)
摘要:题意:在一颗森林有n颗数,编号从1到n,第i棵树高度是a[i]。有一个伐木工想要砍伐这片森林,它的电锯每次可以将树的高度减少1,然后就必须要充电,充电的代价是他已经砍倒的树种编号最大的那颗树的代价(b[i]),问他砍完这片森林的最小代价。(a严格单增,b严格单减,a[1] = 1, b[n] = 0 阅读全文
posted @ 2019-05-13 15:06 维和战艇机 阅读(284) 评论(0) 推荐(0)
摘要:题意:给你一个字符串s,以及两个字符串s1,s2.s中有些位置是*,意思是可以随便填字母,s的子串中如果出现一次s1,就加一分,如果出现一次s2,就减一分。问这个字符串s最多可以得多少分? 思路: 设dp[i][j][k]为到s串的i位置,s1的匹配长度是i,s2的匹配长度是j的情况下可以获得的最多 阅读全文
posted @ 2019-05-11 21:33 维和战艇机 阅读(427) 评论(0) 推荐(0)
摘要:题意:给你一个长度为n序列,和一个数m,问这个序列有多少个子序列,满足这个子序列的所有子序列的和是m的倍数?答案对1e9 + 7取模,n, m范围到5e3; 思路:容易发现,如果一个子序列的长度是n,子序列的所有的元素的和是sum的话,它的所有的子序列的和是sum * 2 ^ (n - 1),那么我 阅读全文
posted @ 2019-05-11 18:12 维和战艇机 阅读(294) 评论(0) 推荐(0)
摘要:题意:你有一个字符串, 有两种操作,一种是改变字符串,一种是某个用户询问这个字符串,如果一个用户每次查询字符串的时候都是他的用户名,他就会高兴。问最多有多少个用户会高兴? 题意:容易发现,在两个1操作之间,如果有多个用户的的询问,只能满足一个。换句话说,如果满足了其中的一个,那么其它的便不能满足。我 阅读全文
posted @ 2019-05-09 21:27 维和战艇机 阅读(223) 评论(0) 推荐(0)
摘要:题意:给你一个数组,如果数组中的某个位置是-1那就可以填1到m的数字中的一个,但是要遵守一个规则:不能出现长度为奇数回文的子串,问合法的填法有多少种? 思路:不出现长度为奇数的回文子串,只需不出现长度为3的回文子串就可以了,那么i位置和i - 2位置填的数字不能一样。所以,我们可以把这个数组拆成2部 阅读全文
posted @ 2019-05-09 09:35 维和战艇机 阅读(326) 评论(0) 推荐(0)
摘要:题意:有一颗由长度为2 * n的合法的括号序列构成的字典树,现在你需要在这颗字典树上选择一些不连接的边,问最多可以选择多少条边? 思路:不考虑题目条件的话,我们只考虑在随意的一棵树上选择边,这是一个贪心的问题,只需要每次选择叶子结点和它的父亲这条边,然后把它和它父亲节点删除就可以了,不断进行这个操作 阅读全文
posted @ 2019-05-08 09:20 维和战艇机 阅读(219) 评论(0) 推荐(0)
摘要:题意:我方有n个士兵,敌方有m个,每方士兵都有一个血量,现在有k轮无差别炮火打击,每次都会从存活的士兵中随机选一人,这名士兵的HP就-1,问对方被团灭的概率有多大? 思路:因为n和m的范围很小,我们可以考虑暴力搜索,中间使用记忆化。这里状态压缩有一个小技巧,我们的正常想法是:因为士兵总数最多只有10 阅读全文
posted @ 2019-05-07 20:40 维和战艇机 阅读(285) 评论(0) 推荐(0)
摘要:题意:给你一个数组a,设函数f(l, r)为数组a中权值在[l, r]之间的连通块的数目,比如a = [1, 3, 2, 1], f(1, 2) = 2, 连通块是位置1和位置3,4。问Σ(i = 1 to n)(j = i to n) f(i, j)的和是多少。 思路:这种求各种情况的总答案的问题 阅读全文
posted @ 2019-05-05 20:19 维和战艇机 阅读(347) 评论(0) 推荐(0)
摘要:题意:有个人想收拾行李,而n个物品散落在房间的各个角落里(n < 24)。现在给你旅行箱的坐标(人初始在旅行箱处),以及n个物品的坐标,你一次只能拿最多两个物品,并且拿了物品就必须放回旅行箱,不能暂时放在地上。问最小的花费是多少?花费是笛卡尔距离的平方。 思路一看n 只有24,应该很容易想到要用状压 阅读全文
posted @ 2019-05-01 12:38 维和战艇机 阅读(286) 评论(0) 推荐(0)