暑假集训
canxuezhinuanyang
这个作者很懒,什么都没留下…
展开
-
2019牛客第十场题解(C/F)
C题意:第i天在原来字符串的基础上在字符串的前面或者后面添加一个字符。问添加完字符后有多少种不同长度的循环节。定义循环节为能把原字符串分割成长度为k的一个或多个部分。并且后面可以有或者没有循环节的开头部分。也就是说 s[1]~s[n-x] == s[x+1]~ s[n] 则说明循环节为x 。做法一 hash+二分:1.明显,对于长度为len的字符串,最少有一个长度为len的循环...原创 2019-08-19 21:22:14 · 168 阅读 · 0 评论 -
2019牛客多校第九场题解(D/E/J)
D给你最多36个数和 一个定值s,找一个子集使这些数的和为s做法将集合分成两个部分,先对右边部分用二进制数枚举选取情况,然后求和之后用map存下来,键值为值,值为对应的二进制数然后对左边部分用二进制数枚举选举情况,求和后用s-sum,看map中是否存在这个键值,如果存在则找到了答案,则将相应的二进制数分左右部分分别输出出来。复杂度 ( map查询有一个log(n)的复杂度...原创 2019-08-15 20:42:29 · 335 阅读 · 0 评论 -
2019牛客多校第八场题解(A)
A给你一个n*m的01矩阵,求出所有最大全1矩阵的数量,保证任意两个矩阵不相互包含。考虑单调栈求最大矩形面积的做法。对于矩阵0 0 0 00 0 1 00 1 1 01 1 110 0 0 0我们先预处理h[i][j] 为以该行为底的最大高度。那么我们只要知道这个矩形最左边的能够到达的位置L由于每次我们是从左到右遍历数据的 所以我们可以确定右边界R ,并且...原创 2019-08-16 22:24:31 · 168 阅读 · 0 评论