07 2019 档案

摘要:题意:给你一个序列,你可以选择序列的一个前缀,把前缀分成k个连续的部分,要求这k个部分的区间和的最大值尽量的小,问这个最小的最大值是多少? 思路:首先看到最大值的最小值,容易想到二分。对于每个二分值mid,我们判断原序列是否可以构成k个区间和小于等于mid的区间,这个可以用DP来做。我们先求出序列的 阅读全文
posted @ 2019-07-30 08:32 维和战艇机 阅读(328) 评论(0) 推荐(0)
摘要:题意:给你一张无向图,设s(x)为与x直接相连的点的集合,题目中有两种操作: 1:1 l r 将读入的边的序列中第l个到第r个翻转状态(有这条边 -> 没这条边, 没这条边 -> 有这条边) 2:2 x y 询问s(x)和s(y)是否相等。 思路(官方题解):首要问题是怎么快速判断s(x)和s(y) 阅读全文
posted @ 2019-07-27 00:15 维和战艇机 阅读(390) 评论(0) 推荐(1)
摘要:题意:给你一个序列,定义ghd为一个序列中任意n / 2个数的gcd中最大的那个,现在问这个序列的ghd为多少。 思路:居然是论文题。。。来自2014年国家集训队论文《随机化算法在信息学竞赛中的应用》,作者胡泽聪。 这里大概记录一下思想:先不考虑复杂度,考虑枚举。对于每个枚举的数,我们假设它在构成g 阅读全文
posted @ 2019-07-26 19:27 维和战艇机 阅读(388) 评论(0) 推荐(0)
摘要:题意:给你一个01矩阵,问此矩阵有多少个和恰好为k的子矩形。 思路:分治,对于当前矩形,用一条中线把矩形分成两半,分治之后计算跨过中线的矩形个数。更具体的来说(假设划了一条水平中线),我们枚举矩形左右边界,然后用指针维护一下到中线的连续和为k的边界。之后通过差分就可以计算出对应的左右边界的矩形的贡献 阅读全文
posted @ 2019-07-26 19:07 维和战艇机 阅读(406) 评论(0) 推荐(0)
摘要:题意:有一个n * n的网格,每个网格中间有一颗树,你知道每棵树的高,你可以选择一个矩形区域把里面的树都围起来,但是矩形区域里面任意两棵树的高度差的绝对值不超过m,问这个矩形的最大面积是多少? 思路:前两天的牛客多校有一个最大子矩形问题,当时用的扫描线 + 单调栈过的,结果场上想了半天灭结果QAQ。 阅读全文
posted @ 2019-07-25 22:18 维和战艇机 阅读(444) 评论(0) 推荐(0)
摘要:题意:给你一个串,问满足以下条件的子串中最长的是多长:对于每个数字,要么在这个子串没出现过,要么出现次数超过k次。 思路:对于这类问题,常常转化为数据结构的询问问题。我们考虑枚举右端点,对于当前右端点,我们单独考虑每一种数的合法区间。假设当前枚举的右端点是i,考虑的数字是c,在右端点左边离i最近的数 阅读全文
posted @ 2019-07-25 11:00 维和战艇机 阅读(1072) 评论(4) 推荐(2)
摘要:题意:有四种数字,现在有若干个限制条件:每个区间中不同的数字种类必须是多少种,问合法的方案数。 思路: 定义 dp[i][j][k][t] 代表填完前 t 个位置后,{0,1,2,3} 这 4 个数字最后一次出现的位置, 排序后为 i,j,k,t(i < j < k < t) 的方案数目,则按照第 阅读全文
posted @ 2019-07-24 22:11 维和战艇机 阅读(415) 评论(0) 推荐(0)
摘要:题意:你有n个俄罗斯套娃,已知每个套娃的容积和体积,问有多少个子集满足以下条件: 1:这个子集是一个极大子集,即不能再添加其它的套娃到这个子集里。 2:子集的套娃之间的间隙和最小。 思路1:线段树优化DP: 首先把套娃按照容积为第一优先级,体积为第二优先级,从小到大排序。设ans[i].second 阅读全文
posted @ 2019-07-23 13:42 维和战艇机 阅读(444) 评论(0) 推荐(0)
摘要:题意:给你一个字符串,问是否存在一个长度为m的子序列,子序列中对应字符的数目必须在一个范围内,问是否存在这样的字符串?如果存在,输出字典序最小的那个。 思路:贪心,先构造一个序列自动机,序列自动机指向在它后面离它最近的某个字符的位置。对于当前位置,从a开始枚举字符,如果答案串的下个位置填这个字符可以 阅读全文
posted @ 2019-07-22 22:05 维和战艇机 阅读(546) 评论(0) 推荐(0)
摘要:题意:有一张白纸条,你需要给这张纸条染色。染色从颜色1开始染色,每次选择纸条的一段染色时,这一段的颜色必须是相同的。现在给你染色后的纸条,问有多少种染色方案? F1: 思路:最开始的想法是以染色顺序为一个维度,然后染色区间为另外两个维度去DP,但是最后发现不可以,因为之前的所有的染色对后面的影响不确 阅读全文
posted @ 2019-07-21 19:27 维和战艇机 阅读(388) 评论(0) 推荐(0)
摘要:题意:给你一个长度为n的字符串,只包含a, b, c3种字符,字符串中相邻字符一定不同,问是否存在一个长度为n / 2(向下取整)的子序列是回文的,有就输出。 思路:相邻的字符一定不同,并且一共只有3种字符,那么从这个字符串中的任意两个位置选择长度为2的子串,这两个子串中一定至少有一个字符是一样的。 阅读全文
posted @ 2019-07-21 16:50 维和战艇机 阅读(299) 评论(0) 推荐(0)
摘要:题意:有一个长为n的01串,两个人轮流操作,每个人可以把某个长度为m的区间变成相同颜色,谁在操作后整个串颜色相同就赢了。问最后是谁赢?(有可能平局) 思路:容易发现,如果第一个人不能一击必胜,那么他就会向平局发展。同理,如果第二个人不能在第一个人的所有第一步的可能走法之后都能一击必胜,那么他也会向平 阅读全文
posted @ 2019-07-19 17:02 维和战艇机 阅读(849) 评论(3) 推荐(0)
摘要:题意:问有多少个有(n + m)个A和(n + m)个B的字符串可以凑出n个AB和m个BA。 思路:首先贪心的发现,如果从前往后扫,遇到了一个A,优先把它看成AB的A,B同理。这个贪心策略用邻项交换很好证明。之后,我们设dp[i][j]为填了i个A和j个B的字符串不违法的方案数。什么叫不违法呢?有一 阅读全文
posted @ 2019-07-19 11:46 维和战艇机 阅读(249) 评论(0) 推荐(0)
摘要:题意:给你一个n * m的矩阵,问所有的a * b的子矩阵的最小的元素的和是多少。题目给出了矩阵中的数的数据生成器。 思路:如果这个问题是1维的,即求所有区间的最小元素的和,用单调队列O(n)就可以做。对于这个问题,我们先给每一行建一个单调队列,枚举子矩阵的行坐标的左端点和右端点。在行的左右端点的基 阅读全文
posted @ 2019-07-18 08:24 维和战艇机 阅读(323) 评论(0) 推荐(0)
摘要:题意:有n只兔子需要喂养,每只兔子被喂养后的幸福感取决于与它相邻的兔子中已经被喂养的数量。现在问喂养这n只兔子可以获得的总幸福感最多是多少? 思路:初步分析题目发现,一只兔子被喂养获得的幸福感取决于其它兔子的喂养情况,所有首先想到状压DP。但是n到3000, 所以不行。我们发现兔子获得的幸福感只取决 阅读全文
posted @ 2019-07-10 15:18 维和战艇机 阅读(179) 评论(0) 推荐(0)
摘要:题面: 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000. Input 第一行两个整数,S,W;其中S为矩阵初始值;W为矩阵大小 接下来每行为一下三种输入之一(不包含引号): "1 x 阅读全文
posted @ 2019-07-09 23:07 维和战艇机 阅读(206) 评论(0) 推荐(0)
摘要:题意:你需要维护一个multiset,支持以下操作: 1:在某个时间点向multiset插入一个数。 2:在某个时间点在multiset中删除一个数。 3:在某个时间点查询multiset的某个数的个数。 思路:该题相当于要构建一个在任意位置插入,并查询前缀操作的某个值的多少。乍一看比较棘手,搞不好 阅读全文
posted @ 2019-07-09 17:27 维和战艇机 阅读(251) 评论(0) 推荐(0)
摘要:题意:有一颗树,每个点有一个点权,边权都是1,问路径上的所有点的gcd不是1的最长路径是多少? 思路:之前补这道题的时候,用分解质因数 + 树形DP做的,其实用点分治可以更暴力一点。对于这类统计树上路径的问题,点分治是一种通用,高效的解法。对于所有的路径,无非两种情况:经过某个点,不经过某个点,我们 阅读全文
posted @ 2019-07-09 17:20 维和战艇机 阅读(438) 评论(0) 推荐(0)
摘要:题意及思路:https://blog.csdn.net/mitsuha_/article/details/86482347 如果一条边(u, v),v的拓扑序小于u, 那么(u, v)会形成环,要反向。 代码: 阅读全文
posted @ 2019-07-08 00:36 维和战艇机 阅读(404) 评论(0) 推荐(0)
摘要:题意:给你个序列,你可以给某个数加上2的幂次,问最少多少次可以让所有的数相等。 思路(官方题解):我们先给序列排序,假设bit(c)为c的二进制数中1的个数,假设所有的数最后都成为了x, 显然x >= a[n],那么最后的总花费为Σbit(x - a[i])。不妨假设x = t + a[n], b[ 阅读全文
posted @ 2019-07-07 19:34 维和战艇机 阅读(624) 评论(0) 推荐(0)
摘要:题意:给你一颗树,树的边权都是偶数,并且边权各不相同。你可以选择树的两个叶子结点,并且把两个叶子结点之间的路径加上一个值(可以为负数),问是否可以通过这种操作构造出这颗树?如果可以,输出构造方案。初始树的边权都是0。 思路:A1很简单,只要判断是否有度数为2的点就可以了。对于A2, 由于边权各不相同 阅读全文
posted @ 2019-07-07 12:30 维和战艇机 阅读(381) 评论(0) 推荐(0)
摘要:思路:看到(a + b)想到乘上(a - b)变成平方差展开(并没有想到2333), 两边同时乘上a - b, 最后式子转化成了a ^ 4 - ka = b ^ 4 - kb,剩下的就水到渠成了。 0的时候特判一下即可。 代码: 阅读全文
posted @ 2019-07-06 20:54 维和战艇机 阅读(418) 评论(0) 推荐(0)
摘要:题意:定义一个序列的beauty值为序列中元素之差绝对值的最小值,现在给你一个数组,问所有长度为k的子序列的beauty值的和是多少? 思路:(官方题解)我们先解决这个问题的子问题:我们可以求出beauty值大于等于给你值的序列有多少个(假设为p[i]),那么其实答案就是∑(i从1到max(a)) 阅读全文
posted @ 2019-07-06 20:50 维和战艇机 阅读(469) 评论(0) 推荐(0)
摘要:题意:给你一颗树,你可以在树上添加一条边,问添加一条边之后的简单路径最多有多少条?简单路径是指路径中的点只没有重复。 思路:添加一条边之后,树变成了基环树。容易发现,以基环上的点为根的子树的点中的简单路径没有增加。所以,问题相当于转化为找一个基环,使得以基环上的点为根的子树Σ(i从1到n) sz[i 阅读全文
posted @ 2019-07-06 13:57 维和战艇机 阅读(520) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/contest/356/problem/D 思路(官方题解):http://codeforces.com/blog/entry/9210 此题需要注意,直接用01背包会TLE, 需要看成多重背包,倍增优化一下。 代码: 阅读全文
posted @ 2019-07-05 16:22 维和战艇机 阅读(508) 评论(0) 推荐(0)
摘要:题意:有一个长度为n的数组a和一个长度为m的数组b,一个素数p。有n个集合,初始都只有一个1。现在,对(i从1到n)第i个集合执行以下操作: 对所有集合中的元素c,把c * (a[i] ^ b[j]) mod p 加入集合(j从1到m), 直到集合的元素不再增加为止。 问最后这n个集合的并有多少个元 阅读全文
posted @ 2019-07-04 23:36 维和战艇机 阅读(358) 评论(0) 推荐(0)
摘要:题意:有一颗数,每个点有一个颜色,定义两点之间的距离为两点路径之间不同颜色的数目,问所有路径的距离和是多少? 思路:每个颜色的贡献为路径中有这个颜色的路径数。先假设所有路径都会经过一种颜色,再减去不会经过这个颜色的路径数就是这个颜色的贡献。 看一下这个博客会好理解一些吧:https://blog.c 阅读全文
posted @ 2019-07-03 23:48 维和战艇机 阅读(448) 评论(0) 推荐(0)
摘要:题意及思路:https://blog.csdn.net/huanghongxun/article/details/49846927 在假设所有边都是最大值的情况下,如果第一个人能比第二个人先到,那就缩短这条边。 代码: 阅读全文
posted @ 2019-07-03 23:40 维和战艇机 阅读(268) 评论(0) 推荐(0)
摘要:题意:给你一个长度为n的字符串,定义两个字符串的相关度为两个串对应的子串中第一个串字典序大于第二个串的个数。现在给你相关度,和第二个串,问满足条件的第一个串有多少个? 思路:设dp[i][j]为填了前i个字符,后面的字符和s相同,相关度为j的方案数。现在有两种转移: 1:i位置填的字符大于s[i], 阅读全文
posted @ 2019-07-03 00:07 维和战艇机 阅读(243) 评论(0) 推荐(0)