Loading

摘要: 写一篇不用 vector 的分块题解 我们可以用一个b数组来代替a数组,然后使用分块的思想达到局部有序 如果是修改操作,单点修改后对一整个块进行重构 如果是查询,则整块使用lower_bound,散块暴力统计 复杂度是$O(m\sqrt{n}\log \sqrt{n})$ 代码 #include < 阅读全文
posted @ 2021-10-06 09:41 Miraii 阅读(70) 评论(0) 推荐(0)
摘要: 1. 中位数 第一眼看这道题,想到可以先开一个数组,每加入一个数就用$sort$​去排序,然后取中间的数,复杂度是$O(n^2logn)$,所以可以使用$vertor$,因为$vertor$​​支持在数组中随意插入一个数,所以我们只要找到这个数在哪里就行了,进而想到可以二分,然后就可以了。 这里介绍 阅读全文
posted @ 2021-08-04 20:50 Miraii 阅读(53) 评论(2) 推荐(1)
摘要: 考场配置: (setq c-default-style "awk") (tool-bar-mode 0) (menu-bar-mode 0) (global-linum-mode t) (show-paren-mode t) (ido-mode t) (setq-default cursor-typ 阅读全文
posted @ 2021-04-08 18:09 Miraii 阅读(111) 评论(1) 推荐(1)
摘要: 负环 定义:给定一张有向图(无向图可以看作有向图),每条边有一个权值。若一条边的权值为负数,则称它为负边权。若图中存在一个环,环上的各边权之和为负数,则称这个环为“负环”。 ——\(from\)《算法竞赛进阶指南》 而处理负边权我们就可以使用$SPFA$了 设$cnt[x]$表示从1到x的最短路径包 阅读全文
posted @ 2021-04-02 21:14 Miraii 阅读(193) 评论(1) 推荐(0)
摘要: 一道超级妙的题 先咕着,有时间一定写 阅读全文
posted @ 2021-03-12 21:46 Miraii 阅读(58) 评论(3) 推荐(0)
摘要: 基本思路 因为这道题要我们求两点之间任意一条路径上最大的最小点,所以我们建图的时候就可以用$kruskal$算法来建一棵最大生成树,把一些不必要的边去掉,这样建图的问题就解决了。 接着我们就要求出每个点的深度,倍增求lca中的$fa$数组...但是题目中有一句话“如果货车不能到达目的地,输出 -1” 阅读全文
posted @ 2021-03-05 20:40 Miraii 阅读(220) 评论(1) 推荐(0)
摘要: 前言 链式前向星是很常用也很实用的数据结构,主要用来存储边的各种信息,它的空间复杂度比邻接矩阵好了太多太多,可以说是图论中最基础的东西了。 代码 inline void add(int x,int y,int z){ ver[++tot]=y,edge[tot]=z,nxt[tot]=head[x] 阅读全文
posted @ 2021-02-23 16:10 Miraii 阅读(85) 评论(2) 推荐(0)
摘要: 什么是LCA LCA(Least Common Ancestors),有一棵树,若结点z既是结点x的祖先也是结点y的祖先,且z的深度最大,那么称这个结点x是结点a,b的最近公共祖先。 倍增法是什么 其实求LCA,有一个极为朴素的方法,就是先比较两个结点的深度,然后dfs大的直到深度和小的一样,然后这 阅读全文
posted @ 2021-02-21 09:55 Miraii 阅读(177) 评论(2) 推荐(0)
摘要: [noi2001]食物链 嗯哼,noi里的绿题... 首先,这道题要用并查集应该很容易看出来,因为有"x和y是同类","x吃y"这样的句子,我一开始想的方法是搞三个并查集(好家伙),后来经过尝试无果,因为出现了(xxx,xx,xxxx,yy,y,yyyy)这些我取的不太友好的名字,所以为了易读,就只 阅读全文
posted @ 2021-02-19 20:30 Miraii 阅读(196) 评论(1) 推荐(1)
摘要: 好耶,花了将近一上午,且在$Quick$_$AK$的帮助在a了这道模板题 简要思路 这道模板题有两个区间操作 将某区间每一个数乘上 x 将某区间每一个数加上 x 有两种操作,那岂不是要两个$tag$? (⊙v⊙)嗯,是的 举个栗子: 假设我们维护一个量$a$,它有两个标记$+b$和$*c$ 因为线段 阅读全文
posted @ 2021-02-08 11:10 Miraii 阅读(145) 评论(2) 推荐(0)