10 2021 档案

摘要:这是啥? 栈是一种数据结构,遵循先入后出(FILO)原则。 具体来说,可以把栈想象成一堆书。 如果要把一本书放进书堆里,就要把这本书放在这堆书的最上面。 如果要拿出书堆中的一本书,就要从这堆书的最上面拿出这本书。 代码怎么写? 手写栈用数组模拟即可,这里不再过多介绍。 如果要使用 STL 栈,需要 阅读全文
posted @ 2021-10-29 17:26 Jijidawang 阅读(63) 评论(12) 推荐(0) 编辑
摘要:栈 普通栈 P1739 P1449 单调栈维护单调子序列 P2866 P2947 P5788 阅读全文
posted @ 2021-10-29 16:55 Jijidawang 阅读(3) 评论(0) 推荐(0) 编辑
摘要:可以想到一个结论:(不会证) 在原字符串中的相同字符,经过操作后相对位置不变。 思路 我们可以给 'a'-'z' 每个字符开个数组, 它们各自在目标字符串中的出现位置存到一个“桶”里。 然后再把这个“桶”对应到原字符串里,就会得到一个数组。 比如说,aabcba 这个字符串,它的目标字符串就是 ab 阅读全文
posted @ 2021-10-20 16:54 Jijidawang 阅读(2) 评论(0) 推荐(0) 编辑
摘要:看几个常见问题: Q1: 这题连状态都没有,怎么搜? A1: 从低位到高位一位一位地搜,把当前的数字当成状态。 Q2: 1010,质数怎么筛? A2: 先写个正常的筛: for(int i = 2;i <= 10000000;++i) {if(!np[i]) pri[cnt++] = i; 阅读全文
posted @ 2021-10-19 19:50 Jijidawang 阅读(6) 评论(0) 推荐(0) 编辑
摘要:基本思路都是一样的:扫一遍桶,算 i=0199j=1ai1ja 是桶) 我们知道, T2直接把数 mod200 扔进桶里是会 WA0pts 的(痛失100pts) 因为很明显如果 i<200 的正数,那么 $i\bm 阅读全文
posted @ 2021-10-19 16:54 Jijidawang 阅读(1) 评论(0) 推荐(0) 编辑
摘要:题意 一个数列,每次操作把一个位置改成 1, 每次操作后,求数列中有多少段连续的 1。 思路 分类讨论,考虑每次操作的位置的左右两边的数(只是两个数): 左右两边的数都是 0:...0 1 0... 这个位置单独构成一段,答案加一。 左右两边的数都是 1:...01...1 1 1...10... 阅读全文
posted @ 2021-10-18 20:44 Jijidawang 阅读(2) 评论(0) 推荐(0) 编辑
摘要:A 科普 getline 在 OI 中,经常用 getline(cin, s) 读入一行(包含空格)到 s 中。 string::find 假如有两个叫 a,b 的 string。 那么 a.find(b) 返回 b 在 a 中第一次出现的位置的下标。 如果 b 没有在 a 中出现过,返回 -1。 阅读全文
posted @ 2021-10-17 16:02 Jijidawang 阅读(3) 评论(0) 推荐(0) 编辑
摘要:前置知识:线段树求区间最大值 思路 先考虑暴力的做法: 开一个桶 cnt,记录当前区间内的值出现个数。 我们可以发现,每次区间移动后,不需要重新统计, 只需要把 cnt[新加入区间的值]++,cnt[退出区间的值]--即可。 询问时输出出现次数最多的值的个数,也就是 cnt 阅读全文
posted @ 2021-10-14 18:57 Jijidawang 阅读(5) 评论(0) 推荐(0) 编辑
摘要:引入 给你一个矩阵,你需要维护一种数据结构,要 O(1) 询问子矩阵和,应该怎么写? 我们都知道,一维的子段和可以前缀和维护,可以考虑把前缀和扩展到 2 维。 假设二维前缀和矩阵是 s,也就是 $s_{xy}=\sum\limits_{i=1}^x\sum\limits_{j=1}^ya_{ 阅读全文
posted @ 2021-10-14 11:28 Jijidawang 阅读(5) 评论(0) 推荐(0) 编辑
摘要:概念: 可见山,不可见山:字面意思。 块:两个可见山之间的部分。参考下图: invxx 的逆元。 前置芝士: 逆元 只需知道 abmodP=(amodP)×(invbmodP)modP 即可。 求积公式 为了方便表达,$∏\limits_{i 阅读全文
posted @ 2021-10-11 21:06 Jijidawang 阅读(1) 评论(0) 推荐(0) 编辑
摘要:考场脑抽T2读错题了 T1 签到题。 模拟大家都会,下面是 O(1) 做法: #include <iostream> using namespace std; int w, k, a, n; int main() { cin >> w >> k >> a >> n; if(n > k) cout 阅读全文
posted @ 2021-10-04 09:39 Jijidawang 阅读(6) 评论(0) 推荐(0) 编辑

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