摘要: 静态链表 #include<iostream> using namespace std; const int N = 1e5+10; int ne[N]; //存放当前节点下标的下一个位置的下标 int e[N]; //存放每个节点的数据 int idx; //存储当前已经用到了那个节点 int h 阅读全文
posted @ 2020-11-07 15:45 Acm_walker 阅读(54) 评论(0) 推荐(0)
摘要: 双指针算法 模板 for (int i=0;i<n;i++) { while(j<i && check(i,j)) j++; /* 这里面 的 j 相比于两重循环,不用 回调 所以时间复杂度低 */ //具体问题的逻辑 } /* 常见问题分类: (1) 对于一个序列,用两个指针维护一段区间 (2) 阅读全文
posted @ 2020-07-03 18:49 Acm_walker 阅读(141) 评论(0) 推荐(0)
摘要: [toc] Tallest Cow(差分) 题目 Description FJ's N (1 ≤ N ≤ 10,000) cows conveniently indexed 1.. N are standing in a line. Each cow has a positive integer h 阅读全文
posted @ 2020-05-11 12:57 Acm_walker 阅读(172) 评论(0) 推荐(0)
摘要: lowbit lobit 操作 得到将 十进制 数 对应 二进制数 从后往前出现的第一个 1 及其以后 的数(直接砍掉) x & x 通过lowbit 操作计算 1的个数 根据砍掉的次数 阅读全文
posted @ 2020-05-10 12:30 Acm_walker 阅读(148) 评论(0) 推荐(0)
摘要: 排列 (next_premutation的应用) next_premutation() STL中提供下一个 排列组合的函数 按照字典序返回 组合值 返回值: 如果有 下一个排列组合 返回 true ,没有 返回 false 作用对象:通常是 数组 中的元素 时间复杂度:O(n) 排列的范围:[fir 阅读全文
posted @ 2020-05-10 12:25 Acm_walker 阅读(258) 评论(0) 推荐(0)
摘要: 圆桌问题(Vector 的应用) 题干 Problem Description 圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排 阅读全文
posted @ 2020-05-10 12:22 Acm_walker 阅读(404) 评论(0) 推荐(0)
摘要: [toc] 差分 概述 :差分 是 与 前缀和 互逆 的一种运算 如果 数组 b 是 a 的 差分 数组,s 是 a的前缀和数组的 话 那么 b数组的前缀和 就是a 数组,所得到的a 数组的前缀和 对应 就是 s数组 ;s 数组 的差分数组就是 a ,a数组 的差分数组 是 b 数组 引入差分数组的 阅读全文
posted @ 2020-05-09 21:20 Acm_walker 阅读(341) 评论(0) 推荐(0)
摘要: 归并排序 阅读全文
posted @ 2020-05-09 20:00 Acm_walker 阅读(93) 评论(0) 推荐(0)
摘要: [toc] "前缀和" 一维前缀和 Tips 快速计算一个区间内数的和 [l,r] 定义一个数组 ,下标要从1 开始 ,边界值 定义 s[0]=0 (如果是全局变量 的 数组 不必再 初始化,若不是 记得初始化s[0]=0),记录 s[i] 为 数组 a 中第 i个数之前所有数的和 s[i] = s 阅读全文
posted @ 2020-05-07 09:25 Acm_walker 阅读(232) 评论(0) 推荐(0)
摘要: 计数(桶)排序 适用: 通常是处理需要从小到大(排序),并且统计出现次数的问题,比如有出现一次的,没出现的这种。 整数排序 //因为使用数组下标记录的 有 确定范围 的整数 算法思想:将待排序集合中的每个元素值本身大小作为下标,依次进行存放。而记录的次数,就是为了确定该元素值出现了几次。 过程: 开 阅读全文
posted @ 2020-05-05 19:54 Acm_walker 阅读(129) 评论(0) 推荐(0)