- 博客(16)
- 资源 (2)
- 收藏
- 关注

原创 模拟栈实现手写递归
刚刚计算机组成原理讲到汇编语言的递归,很受启发,所以分享一个用模拟栈实现递归的通用方法。在模拟递归过程中之前,肯定先得把递归过程弄明白比如对于下面的递归(伪代码):void dfs(int a0,int a1,...){ { 代码块0; } dfs(a00,a11,...); { 代码块1; }}它的执行过程如下:...
2019-03-24 16:05:43
3633
6
原创 线性筛——对i从1取到n gcd(i,n)求和
如果不会线性筛素数的话,建议先看这篇博客了解一下线性筛素数。记f(n)=∑i=1ngcd(i,n)f(n)=\sum_{i=1}^{n}\gcd(i,n)f(n)=∑i=1ngcd(i,n)容易证明f(n)f(n)f(n)一定是积性函数即f(p1t1p2t2⋯pktk)=f(p1t1)f(p2t2)⋯f(pktk)f(p_1^{t_1} p_2^{t_2}\cdots p_k^{t_k}...
2019-10-26 15:56:06
1731
1
原创 划分树
有半个多月没更新博客了,惭愧呀!!!说没时间(毕竟每天娱乐的时间都是保质保量的… )都是借口,懒才是真的。。。划分树是基于线段树的一种数据结构,主要用于在log(n)log(n)log(n)内求出序列区间的第K大值;划分树主要分为两部分,建树和查询。查个模板例题Poj 2104 K-th Number建树: 建树过程类似于快速排序,所建的树每一层都有n个元素,建树的核心就是根据根节点的...
2019-03-17 21:17:11
234
原创 LA3938 :"Ray, Pass me the dishes!" (线段树区间查询)
先呈上原题链接"Ray, Pass me the dishes!" (vjudge)(大白书刷题笔记)又是一道比较练代码能力的题目,开始的时候常数写太大了还写成了 O(n∗logn∗logn)O(n*\log n*\log n)O(n∗logn∗logn),数据范围又是 5e55e55e5 且多组数据,所以 TLE 了。。。后来全部改写过了。还有就是里面有许多细节加之平时用结构体少,历...
2019-02-16 15:41:28
185
原创 牛客网国庆七天乐Day 1 J.Princess Principal(多括号匹配,区间查询,预处理+线段树查询)
先呈上原题链接 Princess Principal这是2018年牛客网国庆集训的题目,不会也没补,后来准备参加 秦皇岛 CCPC - Winter Camp 时在第一场热身赛时又遇到了。当时热身赛都过了一半了才想起这个事,在图书馆把签到题写了,刚看到这道题就被室友叫去打篮球了。虽然一直牵挂到这道题,直到今天才补上。。。算是一道比较经典的括号序列题了吧。题意:要快速判断一个文档有没有语法错...
2019-02-13 16:27:09
198
原创 2018CCPC-Wannafly Winter Camp Day7 E. 线性探查法(离散化建图+拓扑排序)
先呈上原题链接题意:在大学里选修过数据结构的同学大部分都知道 hashhashhash 算法的线性探查法:假设有一个元素互不相同的正整数数组 a[1…n]a[1\ldots n]a[1…n],我们用以下方法得到数组 b[1…n]b[1\ldots n]b[1…n]:初始时 b[i]b[i]b[i] 都为 −1-1−1,我们对 i=1…ni=1\ldots ni=1…n 依次插入 a[i]a...
2019-01-26 19:48:12
300
原创 2018CCPC-Wannafly Winter Camp Day5 [I. Sorting] (非常优秀的题目,十分巧妙的线段树)
先呈上原题链接这是一道非常优秀的线段的题目,如此说的原因不是因为它的操作有多么新奇,而是因为解该题的思路有着很好的启发作用。题意:你有一个数列a1,a2,…,ana_1, a_2, \dots, a_na1,a2,…,an ,你要模拟一个类似于快速排序的过程。有一个固定的数字 xxx。你要支持三种操作:询问区间 [l,r][l, r][l,r] 之间的元素的和,也就是∑i=lra...
2019-01-25 20:39:56
177
原创 线性筛——约数的个数
如果不会线性筛素数的话,建议先看这篇博客了解一下线性筛素数。线性寻找约数的个数(积性函数都可以线性筛)主要是在线性筛素数的基础上得到的用 f(n)f(n)f(n) 表示 nnn 的约数的个数用 g(n)g(n)g(n) 表示 nnn 的最小质因子的个数我们知道:若 n=∏i=1npitin=\prod_{i=1}^n p_i^{t_i}n=∏i=1npiti则 f(n)=∑i=1...
2019-01-24 23:20:55
1434
1
原创 线性筛——莫比乌斯函数
如果不会线性筛素数的话,建议先看这篇博客了解一下线性筛素数。莫比乌斯函数函数(积性函数都可以线性筛)主要是在线性筛素数的基础上得到的我们知道:若 n=∏i=1npitin=\prod_{i=1}^n p_i^{t_i}n=∏i=1npiti则 μ(n)={(−1)kk=∑i=1ntiandmax(t1,t2,⋯ ,tn)≤10othersμ(n)=\be...
2019-01-23 22:20:07
1114
1
原创 线性筛——欧拉函数
如果不会线性筛素数的话,建议先看这篇博客了解一下线性筛素数。欧拉函数(积性函数都可以线性筛)主要是在线性筛素数的基础上得到的欧拉函数:φ(n)=n∗∏(1−1pi)φ(n)=n* \prod \left(1-\frac{1}{p_i}\right)φ(n)=n∗∏(1−pi1) 其中pip_ipi为nnn的质因子所以:1、当 nnn 为质数的时候 φ(n)=n−1φ(n)=n-1...
2019-01-23 21:38:41
973
原创 线性筛——素数
线性筛素数,可以保证每一个数都是被其最小的质因子筛掉的,所以可以保证时间复杂度在O(n)。实现如下:int prime[MAXN];int vis[MAXN];void oula(int n){ memset(vis,0,sizeof(vis)); prime[0]=0;//用于存素数的个数 for(int i=2;i<=n;i++) { if(!vis[i]) ...
2019-01-23 20:50:47
1604
原创 Codeforces Round #250 (Div. 1) D. The Child and Sequence(线段树+区间求模+区间查询)
先呈上原题链接[Codeforces Round #250 (Div. 1) D. The Child and Sequence]题意:给定一组数有三个操作:区间每个值对P求模;单点修改询问区间和思路:两棵线段树,一个维护区间最大值,一个维护区间和。因为求模运算每次至少是折半的,所以对需要求模的暴力修改就行了。坑点:无good luck and have fun!!!附上代...
2019-01-22 12:55:29
184
原创 Codeforces Round #532 (Div. 2) E. Andrew and Taxi(拓扑排序+二分)
先呈上原题链接[Codeforces Round #532 (Div. 2) E. Andrew and Taxi]题意:一个n个顶点m条边的有向图,每条边都有权值(即修改这条边方向所要付出的代价)目的:改变部分边的方向,使图无环。要求:寻找一种方案使改变的边的权值的最大值最小。输出权值和需要改变方向的边的编号。思路:先二分答案:答案(ans)范围在0与这个图的最大权值之间,所以直接...
2019-01-18 18:42:20
240
原创 hdu4614 Vases and Flowers(线段树+二分)
先呈上原题链接[HDU-4614]题意:有n个花瓶,每个花瓶中只能放一朵花。两种操作:第一种是从A开始放F朵花,如果有的花瓶中已经有花则跳过这个花瓶,往下一个花瓶放;第二种是将区间[A,B]之间花瓶中的花清空。如果是第一种操作,输出这次放的花的左右端点;如果是第二种操作,输出这次总共清理出了多少支花。思路:很裸的线段树的题啦。用线段树维护区间花瓶空位。第一种操作,两次二分分别寻...
2019-01-18 13:46:53
168
原创 hdu4578 Transformation (线段树多种操作)
先呈上原题连接题意:对于一个区间有4个操作:1.将a~b都加上c2.将a~b都乘上c3.将a~b都变成c4.查询a~b的每个数的p次方的和。(p=1,2,3)思路:虽说是一道很裸的线段树的题,但是却非常考验代码能力。查询p的取值只有三个,所以维护三棵线段树就行了。难点在多种操作,每个操作的更新次序是有讲究的,在下推标记的时候一般是先推置数操作,然后推乘法,最后推加法。坑点:...
2019-01-17 18:32:41
278
原创 ACM之路
ACM入坑来第一篇博客#include<bits/stdc++.h>using namespace std;int main(void){ printf("Hello 优快云!\n"); return 0;}
2019-01-17 12:31:32
204
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人