摘要: 强连通分量(有向图) void tarjan(int x) { dfn[x]=low[x]=++cnt; stac[++top]=x; vis[x]=1; for(int i=hd[x];i;i=nxt[i]) { int y=go[i]; if(!dfn[y])//树边 {tarjan(y);lo 阅读全文
posted @ 2024-11-27 11:41 storms11 阅读(4) 评论(0) 推荐(0) 编辑
摘要: bitset 超级好用的东西.由于内存地址是按字节即 byte 寻址,而非比特\(bit\) ,一个 \(bool\) 类型的变量,虽然只能表示 \(0/1\) , 但是也占了 \(1byte\) 的内存。 bitset 就是通过固定的优化,使得一个字节的八个比特能分别储存 \(8\) 位的 \(0 阅读全文
posted @ 2024-11-27 09:48 storms11 阅读(2) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2024-11-26 21:37 storms11 阅读(2) 评论(0) 推荐(1) 编辑
该文被密码保护。 阅读全文
posted @ 2024-11-25 19:57 storms11 阅读(3) 评论(1) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2024-11-21 16:54 storms11 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 前置知识 树状数组(不会就学一下再来) 简介 因为树状数组可以非常简洁解决序列上的一些问题,所以考虑能否用树状数组解决矩阵(二维序列)的问题。 比较暴力的想法是对于每一横行建一个树状数组,再对每一列建一个树状数组统计答案。 但这样显然要\(n+m\)个树状数组,但是我们发现这些树状数组复用了一些节点 阅读全文
posted @ 2024-11-07 14:36 storms11 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目链接 主要算法 分治(最大值分治),st表 思路 1.因为我们考虑最主要的限制条件是最大值和排列,所以如果我们知道最大值就知道答案的长度。所以考虑按最大值分治,统计左边对右边的贡献。 2.接下来就是如何快速考虑一个区间是否合法,一个显然的是没有相同数,所以可以记前一个数的位置的最大值,如果小于左 阅读全文
posted @ 2024-11-06 19:43 storms11 阅读(9) 评论(1) 推荐(1) 编辑
摘要: 题目链接 主要算法: 线段树(虚假的),奇技淫巧(真正的) 思路: 1.初步:考虑如何保证一个区间坐好后是一个矩形,有一个思路从另一个题中启示我们维护 \(xmin,xmax,ymin,ymax\) ,但是这样无法保证在中间挖一个空的情况(有一个别的题解,可以染色后维护四个角和一个判框的东西),但我 阅读全文
posted @ 2024-11-02 14:11 storms11 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 考前 考前考了几场noip和一场csp模拟赛,也考得的还行吧,虽然每一次基本上都有一点挂分,自我感觉还行,所以考前就写了一些模板,但最后一个也没用上。 考中 先通读了一遍题,发现第一题简单,二三题貌似可做,第四题貌似不可做。 所以决定先写快速写完第一题。第一题确实很简单,一眼就是贪心,然后自己搞了个 阅读全文
posted @ 2024-10-30 15:17 storms11 阅读(2) 评论(0) 推荐(0) 编辑
摘要: SA 基本应用 读入一个长度为 $ n $ 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序(用 ASCII 数值比较)从小到大排序。 解法 1.将每个后缀取出来,直接排序 \(O(n^2 \log n)\) 2.用hash二分LCP比较下一位,\(O(n \log^2 n 阅读全文
posted @ 2024-10-30 12:20 storms11 阅读(7) 评论(0) 推荐(2) 编辑