随笔分类 -  2020牛客暑期多校训练营

摘要:J. The Escape Plan of Groundhog 首先这道题肯定只能O(n3)来写,暴力来求的话是O(n4),那么我们只需要优化一个O(n)就好了。 优化的方法是用一个枚举子矩形宽的长度,然后再依次遍历每一行,首先要满足要求(两条高上的点需要全是1),下底的点全为1,最后一 阅读全文
posted @ 2020-08-09 12:27 caoanda 阅读(147) 评论(0) 推荐(0) 编辑
摘要:J. Pointer Analysis 读题的时候一定要仔细啊…比赛的时候读错题,写了半天都是 wa 的 其实只要把思路理清了,实现起来就很方便了。 对于每一个大写字母,只需要保存其可指向的对象即可,因为最多只有26个,因此直接用状态压缩即可,而且对于合并操作也很方便。 // Created by 阅读全文
posted @ 2020-08-02 14:32 caoanda 阅读(151) 评论(0) 推荐(0) 编辑
摘要:B. Binary Vector fn的意思是随机生成 n 个 n 维向量,这 n 个向量线性无关的概率。 线性无关指的是向量之间不能相互表示,既不存在解(至少要有一个 k 非0)使得k1+...+kn=0这个式子成立。 依次选取n个向量: 第一个向量非零即可,有$2n 阅读全文
posted @ 2020-07-28 10:20 caoanda 阅读(523) 评论(0) 推荐(0) 编辑
摘要:C. Count New String 参考:Count New String(广义SAM) 把所有的字符串都存进去,然后再求出不同的子串个数即可。 // Created by CAD #include <bits/stdc++.h> #define ll long long using names 阅读全文
posted @ 2020-07-26 14:33 caoanda 阅读(156) 评论(0) 推荐(0) 编辑
摘要:G. Operating on a Graph 这道题需要注意的点是,合并的时候需要用链表O(1)进行合并或者用 vector 启发式合并,这样才不至于复杂度过大,另外,去重的时候,如果用哈希 map 会导致超时,而用 map 则不会 // Created by CAD #include <bi 阅读全文
posted @ 2020-07-19 23:44 caoanda 阅读(145) 评论(0) 推荐(0) 编辑
摘要:C. Operation Love 先判断给定点是顺时针还是逆时针,然后再判断长度为6的边是在长度为9的边的左边还是右边即可 // Created by CAD #include <bits/stdc++.h> using namespace std; bool judge(vector<doubl 阅读全文
posted @ 2020-07-19 10:14 caoanda 阅读(152) 评论(0) 推荐(0) 编辑
摘要:G. Greater and Greater 参考:2020牛客多校第二场 G题Greater and Greater(bitset) 要仔细观察规律,当看不出规律的时候,可以试着排序一下,看看能不能进行优化。 bitset 运算的复杂度为O(n/32),可以加快运算速度 // Created 阅读全文
posted @ 2020-07-18 09:29 caoanda 阅读(172) 评论(0) 推荐(0) 编辑
摘要:A. All with Pairs 参考:A. All with Pairs (哈希值+next) 需要用到的东西是字符串哈希和前缀数组。 首先用字符串哈希将每一个后缀都统计一下,并用不同的后缀会映射为不同的哈希值,所以这样就可以在O(1)的时间复杂度内比较出两个字符串是否一样。 还要考虑到的事 阅读全文
posted @ 2020-07-16 12:59 caoanda 阅读(154) 评论(0) 推荐(0) 编辑
摘要:A. B-Suffix Array 参考:2020年牛客多校A题 将字符串化为B数组之后,会发现,它其实是由两部分组成的。例如aaaabaaab的B数组为011102114,那么我们可以将B拆成两半,前面一部分是01110,后面一部分是2114。我们会发现,所有长度的B数组前面部分的格式都是一样的, 阅读全文
posted @ 2020-07-15 09:17 caoanda 阅读(208) 评论(0) 推荐(0) 编辑
摘要:I. 1 or 2 依次遍历所有的点,对于遍历的当前点,选择所需的边,直到度数饱和。当遍历点的序号 大于n时,则证明该解法时是可行的。 但是要注意的时候,遍历之前需要将节点按照邻接表的大小进行排序,这样时间复杂度会低一点。 解法也算是暴力吧,只不过优化了一下。 // Created by CAD o 阅读全文
posted @ 2020-07-14 16:15 caoanda 阅读(378) 评论(0) 推荐(0) 编辑
摘要:Boundary 参考:2020牛客多校(第二场) B. Boundary (计算几何) 因为三点确定一个圆,其中原点是固定的,所以只用遍历另两个点就可以了。这样复杂度是O(n2)的。另外还要用一个 map 来保存所有的圆心,以此来统计相同的圆心的个数。 要注意的是判断三点一线的情况,这种情况 阅读全文
posted @ 2020-07-14 13:42 caoanda 阅读(404) 评论(0) 推荐(0) 编辑
摘要:Fake Maxpooling 在初始化数组的时候如果直接求可能会t,所以用这种筛法,把复杂度降为O(nm),最后用单调队列来维护区间最大值。 for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) if(!a[i][j]) for(int k=1;k*i<=n& 阅读全文
posted @ 2020-07-14 09:26 caoanda 阅读(175) 评论(0) 推荐(0) 编辑
摘要:Cover the Tree 就当作是一个结论吧…当要用链覆盖所有的边时,对叶子节点根据dfs序排序后,根据(i,i+s/2)的配对规则进行配对即可,如果有奇数个叶子节点,则将其与根节点相连。 // Created by CAD on 2020/7/13. #include <bits/stdc 阅读全文
posted @ 2020-07-13 20:58 caoanda 阅读(158) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示