摘要: 数据结构篇: 树状数组:logn判断一个数前面/后面有几个数比它大/比它小,就是求逆序对数量。很常用。 线段树:区间推平问题(tag标记颜色,珂朵莉树也行),区间覆盖问题(并查集也行),开方取log问题(几次后必定不变了,用tag标记) 单调队列:滑动窗口取最值问题,也可以单独维护过期性。 ST表: 阅读全文
posted @ 2022-12-02 21:45 Herkaii 阅读(82) 评论(0) 推荐(0)
摘要: 朴素是n解决,但可以logn解决,前面有几个数大于等于它,大于它,小于它,小于等于它。后面有几个数xxx。这些操作都可以logn解决,线段树就行,树状数组实在是不好理解。 阅读全文
posted @ 2023-01-07 11:58 Herkaii 阅读(36) 评论(0) 推荐(0)
摘要: P3031 [USACO11NOV]Above the Median G P1637 三元上升子序列 P1908 逆序对 阅读全文
posted @ 2023-01-06 19:45 Herkaii 阅读(34) 评论(0) 推荐(0)
摘要: https://www.cnblogs.com/yzm10/p/7346327.html 阅读全文
posted @ 2022-12-08 18:02 Herkaii 阅读(28) 评论(0) 推荐(0)
摘要: 有k次机会可以免费走一条路/可以走一次特殊路径,每一层之间连0边/特殊路径。 例题:P8724,P4568 阅读全文
posted @ 2022-12-08 11:33 Herkaii 阅读(20) 评论(0) 推荐(0)
摘要: 很重要的算法,蓝桥杯遇到n次了 #include<bits/stdc++.h> #define int long long using namespace std; int n,m; int a[1000010],c[1000010],b[1000010]; int lowbit(int x) { 阅读全文
posted @ 2022-12-06 20:02 Herkaii 阅读(90) 评论(0) 推荐(0)
摘要: 用处:滑动窗口维护区间最值 核心思想:双端队列,队首放最大值/最小值的下标,1.清除不是更优的(队尾弹出)。2.清除过期的(队首弹出)。 例题: https://www.luogu.com.cn/problem/P3088 https://www.luogu.com.cn/problem/P1886 阅读全文
posted @ 2022-12-04 17:36 Herkaii 阅读(59) 评论(0) 推荐(0)
摘要: https://www.luogu.com.cn/problem/P3028 阅读全文
posted @ 2022-12-02 21:39 Herkaii 阅读(14) 评论(0) 推荐(0)
摘要: //康托,康托逆 #include<bits/stdc++.h> #define int long long using namespace std; int n,k; int a[10010],f[10010]; void jiecheng(int n) { f[0]=f[1]=1; for(in 阅读全文
posted @ 2022-12-02 17:57 Herkaii 阅读(23) 评论(0) 推荐(0)
摘要: https://www.luogu.com.cn/problem/P2912 阅读全文
posted @ 2022-11-22 10:28 Herkaii 阅读(12) 评论(0) 推荐(0)