暴力乱搞
Acnext
这个作者很懒,什么都没留下…
展开
-
集合的子集枚举
子集的枚举有三种方法: 1.二进制法:这种方法最为简便 就是直接遍历数字 我们看每个数字的二进制 如果当前位为1 表示此在集合中 反之不在 当然 二进制还支持 集合的模拟操作 比如集合的合并 用| ;集合的交 用 & ;集合的对称差 (A-B)并(B-A) 用^; 2.递归枚举(位向量法) 我们用 vis[n]数组 来打标记 表示这一位的数字 是否选入集合 这种做法的复杂度是2的n+原创 2017-08-13 22:20:30 · 1041 阅读 · 0 评论 -
cf 442 div2 D bfs最短路
题意:本题就是说 给你一个n m的矩阵 n,m 思路:不难想到是一个裸的bfs题目,但我最终tle了 orz 我自己的优化是这样的 对于当前位置 x,y 如果现在他前进的方向 之前走过 我们记录一个跳转的值 表示从这一位置能跳过的长度 这样能够减少不必要的判断(写丑了) 本题还有一些重要剪枝 :1 我们在拓展位置的时候 如果拓展到答案直接退出 而不是等到从queue 中front 出答案才原创 2017-10-24 14:00:55 · 284 阅读 · 0 评论 -
分块算法
题目:http://www.qscoj.cn/#/contest/show/209虽然早就知道分块的思想,但是却没有自己做过,这算第一次分块题,题目大意是区间修改,值查询(这里的查询查某个值是否存在于当前数组中如果存在找到其最前或最后的位置),数据范围询问和数组个数均为1e5 这个题我并没想到怎样用线段树进行查询 因为线段树处理的是某个位置的值或者某个区间的值问题 此题也无法用区间最大值...原创 2018-05-07 18:28:44 · 674 阅读 · 0 评论