摘要: 可能是太旧了 先执行: sudo yum install epel-release 然后再安装所需要的包 阅读全文
posted @ 2022-04-24 15:54 传说中的水牛 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 二分法的简单用法为 查找单调数组里的数据。 详见: https://www.cnblogs.com/kingbuffalo/p/15500058.html 此外,如果一个问题非常难以解决,但又知道应该问题的答案具有如下性质: 存在 -∞s 之前,答案合法 ; s+∞:不合法。 答案具有单调性。 那么 阅读全文
posted @ 2022-02-25 14:25 传说中的水牛 阅读(47) 评论(0) 推荐(0) 编辑
摘要: ######前缀 前缀的是指使用sum[NMAX] 来表示 arr[NMAX] 的前缀和 即: sum[n] = arr[0] + arr[1] + ... arr[n-1]+arr[n] ######差分 差分是指使用d[NMAX] 来表示arr[NMAX] 的差项 即: d[0] = arr[0 阅读全文
posted @ 2022-02-18 18:36 传说中的水牛 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 二分法是比较简单的算法,不过容易写错。所以在这里总结一下。 必然存在的二分法 int a[MAXN]; int indexOf(int l,int r,int val){ while(l<=r){ int mid = l+(r-l)>>1; if ( a[mid] == val ) return m 阅读全文
posted @ 2021-11-02 17:39 传说中的水牛 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 单调队列:是指队列中存在递增/递减。 这个在求Sliding Window的时候特别好用。 比如。需要求这一区间的最小值。 则只需维持一个递增队列,当存在比队列中更小的数字时,将队列中所有比这个数大的都pop出去。 如果用stl中的list来的话,不能使用二分法。来快速pop出。 所以还是使用数组来 阅读全文
posted @ 2021-11-02 17:19 传说中的水牛 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 并查集算法是用于查找/分辨 某单个与另某单个是否为同一个群体。 比如,可以通过询问N组的 A B 是否为同一社团,然后问xxxa与xxxb 是否在同一社团。 又或者,可以识别,A与B是朋友 B与C是敌人,那么A与C 因为是敌人的敌人是朋友,所以A与C也是朋友。 也可以在最小生成树的时候,判断2个顶点 阅读全文
posted @ 2021-10-22 17:21 传说中的水牛 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 线段树是一种用于区间更新,单点更新,区间查询的一种算法。 比如:区间染色,区间求和(也可用树状数组),区间最值(也可用RMQ算法,但RMQ为数值不可更新) 主要思路是,t[1]为根节点,t[k<<1],t[k<<1|1] 为 t[k] 的左右节点 t[k]的值为节点的值 如果一个数组长度为N,那么以 阅读全文
posted @ 2021-10-22 11:07 传说中的水牛 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 请看一个题 设有一个长度为N的数组arr,求 0<=a<=b<N ab 的最大值(或最小值) 会求很多次 最简单的算法就是弄一个二维数组,先算好 ab 的 最大最小值。但是这样太浪费内存了。 RMQ 算法 就是为了巧妙地运用2的幂数/对数 解决这个问题的。 设 dp[i][j] 为 以i为起点,1< 阅读全文
posted @ 2021-06-15 20:46 传说中的水牛 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 马拉车算法查找 字符串的最大回文子串。 其算法本质上是中心扩展法。 中心扩展法 vector<int> v(strLen,0); //v[i] 是指以i为中心的回文字符串长度的半径 for (int i = 1; i < strLen - 1; i++) while (str[i + 1 + v[i 阅读全文
posted @ 2021-02-24 19:55 传说中的水牛 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 先从最简单的开始: 一个数组,需要高效查询区间和。如果这个数组的值不变的话,那么只需要弄个前缀和就可以了。 sum[0] = arr[0]; for( int i=1;i<arr.size(); i++){ sum[i] = sum[i-1] + arr[i]; } // query i~j aut 阅读全文
posted @ 2021-02-23 11:42 传说中的水牛 阅读(116) 评论(0) 推荐(0) 编辑