- 博客(110)
- 收藏
- 关注
原创 矩阵快速幂、快速幂模板poj3070
poj3070题意就是通过,矩阵求斐波那契数列数列:普通for循环递推我们都会,可是这里的n高达10亿(109),先不说超时,就是打表数组开不了这么大。其实矩阵快速幂和快速幂一个思想来的,代码都差不多,矩阵快速幂就是把快速幂的乘法运算换成矩阵乘法,再加上一点矩阵知识其实矩阵快速幂和快速幂一个思想来的,代码都差不多,矩阵快速幂就是把快速幂的乘法运算换...
2020-03-23 17:56:55
269
原创 hash_map、unordered_map和map的效率、区别和分析
hash_map、unordered_map和map的效率、区别和分析一、前言二、三者的实现区别maphash_map和unordered_map三、三者查询效率高低时间效率三者使用选择例题:编译器报错解决方法一、前言最近在做题的时候遇到了,就分享一下自己的心得。hash_map、unordered_map和map的区别其实和hash_set、unordered_set和set的区别是一样的...
2020-03-17 22:46:37
3132
原创 C++快速读入法和ios::sync_with_stdio(false);
有时候我们会遇到“由于输入量很大,请使用快速输入法”之类的。输入还要用快速的?是不是把平时我们使用的cin换成scanf?不!还要更快!getchar();读取一个字符的getchar();这个比cin和scanf的读入还要快!直接给出模板:一般情况下把`cin`改成`scanf`都是可以过的,如果希望较小的功夫实现scanf和cin的等效可以在程序开头加一句:`ios::sync_with_stdio(false);`但是需要注意此时`cin`和`scanf`不能混用,否则程序可能会出错。
2020-03-07 17:29:21
1510
原创 可持久化01字典树解析和模板
一、可持久数据结构主要指的是我们可以查询历史版本**的情况并支持插入,利用使用之前历史版本的数据结构来减少对空间的消耗**(能够对历史进行修改的是函数式)。引用于https://www.cnblogs.com/BLADEVIL/p/3681291.html其实就是我们的数据结构的内容会不断发生变化,而我们还要查询以前的历史版本,比如某个区间的情况。**三、思路:**我们**要维护的是的异或和s[]并在==任意区间内找到s[p]使之与(s[n]^x)取得最大异或值==**,——异或+区间求异或最
2020-03-04 18:03:15
913
1
原创 01字典树解析与模板
本文将解答:1.01字典树是什么2.01字典树用途3.01字典树实现代码4.每个数按位插入顺序一、01字典树是什么首先我们都知道普通字典树(不懂?忘记了?点这里 ),字典树是插入字符串,利用字符串的公共前缀来减少查找时间,01字典树其实就是按位插入数字(将数字转化为2进制串),所谓“按位”即将该数字按2进制拆分为每一位是0或1的数字。二、01字典树的用处01字典树一般都是用于求异或...
2020-03-04 01:53:47
492
原创 字典树解析与模板C++
字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,...
2020-03-03 03:10:39
762
原创 二分法和三分法的用处和区别
“啊 ,三分你比二分多一分”最近在做题的时候发现原来还有三分法这个东东,由于本人水平有限知道应该二分可以解决,但是由于最优解的函数并不单调我不知道怎么继续分了。看了题解才发现原来三分这么好用,看来不只是简单的“比二分多一分啊”有一篇博文写的很好三分法与二分法的区别和三分法总结先说说二分法:二分法搜索法就是不断缩小解可能存在的范围,从而求得问题最优解的方法。就是把[L,R]区间为两个区间,...
2020-02-21 04:20:00
4906
原创 Tarjan算法、Tarjan缩点模板+视频讲解+例题
P3387 【模板】缩点题目背景缩点+DP题目描述给定一个 nn 个点 mm 条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。输入格式第一行两个正整数 n,m第二行 n 个整数,依次代表点权第三至 m+2 行,每行两个整数 u,vu,v,表示一条 u→v 的有向边。输...
2020-02-19 03:51:51
758
原创 2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II二进制详解
2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫IIB 牛牛的DRB迷宫II牛牛有一个n*m的迷宫,对于迷宫中的每个格子都为'R','D','B'三种类型之一,'R'表示处于当前的格子时只能往右边走'D'表示处于当前的格子时只能往下边走,而'B'表示向右向下均可以走。我们认为迷宫最左上角的坐标为(1,1),迷宫右下角的坐标为(n,m),除了每个格子有向右移动以及向下移动的限制之外,你也
2020-02-10 01:51:23
825
原创 求一个正整数的因子个数
如果你求一个大小为n的数的公因子数只会O(n)的枚举1~n的所有数这样太耗时了,有没有比较省时的方法?比如36的因子为1,2,3,4,6,6,9,12,18,36其实我们都知道当我们枚举到3时知道3可以整数36,那么就可以直接确定还有一个数12可以整除36,那么我们就不用去试12了,直接记上2个因子即可。即当i可以整除n时,n/i也可以整除n,我们就不用枚举n/i了,那么我们需要枚举的长度为 O...
2020-02-06 11:40:25
4987
原创 差分数组-P2879 [USACO07JAN]区间统计Tallest Cow
Tallest CowDescriptionFJ’s N (1 ≤ N ≤ 10,000) cows conveniently indexed 1…N are standing in a line. Each cow has a positive integer height (which is a bit of secret). You are told only the height H ...
2019-12-23 00:33:17
356
原创 线段树模板
P3372 【模板】线段树 1题目描述如题,已知一个数列,你需要进行下面两种操作:1.将某区间每一个数加上x2.求出某区间每一个数的和输入格式第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。接下来M行每行包含3或4个整数,表示一个操作,具体如下:操作1: 格式:1 x y k 含义:将区间[x...
2019-12-23 00:31:33
310
原创 Decorating The Pastures[二分图染色判断]
DescriptionFarmer John has N (1 ≤ N ≤ 50,000) pastures, conveniently numbered 1…N, connected by M (1 ≤ M ≤ 100,000) bidirectional paths. Path i connects pasture Ai (1 ≤ Ai ≤ N) to pasture Bi (1 ≤ Bi ...
2019-12-23 00:30:21
359
原创 逆序对模板
P1908 逆序对猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。Update:数据已加强。输入...
2019-12-23 00:30:00
428
原创 桶排序,基数排序,计数排序的区别
桶排序是在数组元素在某个小范围内大量数据情况下时间复杂度为O(n)的排序。假如数据的范围为0~1000我们就开一个1001大小的数组进行排序,就是假如100出现了就将100的桶b[100]++;以十进制为例,基数指的是数的位,如个位,十位,百位等基数排序就是多个桶进行桶排序,比如输入的数最多有两位,我们就先按十位进行桶排序,分为0~9的十个桶,b[0]存0 ~9的数,b[3]存30 ~39的...
2019-12-22 01:54:39
927
原创 C/C++历史版本+[Error] range-based 'for' loops are not allowed in C++98 mode解决方法
c/c++版本发展历史,我们在使用c/c++说总会遇到编译错误,明明是支持的正确语法,比如for(auto &a:v)但是就是无法运行,出现这种问题,其实是你的编译器使用的可能是历史久远的C++98,但是现在C++11,C++14都发布并成功使用多年了,我们只需修改一下编译器的编译标准就行了,[Error] range-based 'for' loops are not allowed in C++98 mode这种编译错误就解决了,程序完美运行
2019-12-17 22:28:27
3291
原创 尼姆博弈论+sg打表找规律
当sg打表超时时,我们就要打出前n项然后找sg值的规律了。给出两题:一.hdu3032Nim or not Nim?Nim or not Nim?Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3811 Accepted S...
2019-12-14 16:30:41
341
原创 hdu5857Median
MedianTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2256 Accepted Submission(s): 542Problem DescriptionThere is a sorted sequence A of ...
2019-12-05 01:18:18
189
原创 折半枚举
**折半枚举其实就是一个思想,并不能具体化为一个模板。**那么折半枚举什么时候用?当你发现必须要枚举时,看**看时间限制**居然刚好把你的暴力枚举卡掉时或者把你的暴力枚举时间砍一半之后才能过的时间,(处理数据10^9=1秒)你就可以想想如何缩短枚举时间,如果能用上折半枚举的话,同样是枚举,就会比原来的枚举缩短一半的时间!所谓**折半**?就是对半砍,让你**枚举**前一半的部分,然后枚举后一半的部分,得到结果!洛谷P1627中位数 poj2785 牛客Knapsack Cryptosystem
2019-12-04 14:28:40
374
原创 HDU 5775 Bubble Sort
hdu5775Bubble SortProblem DescriptionP is a permutation of the integers from 1 to N(index starting from 1).Here is the code of Bubble Sort in C++.for(int i=1;i<=N;++i)for(int j=N,t;j>i;–j)...
2019-12-01 23:16:42
201
原创 codeforces C. Infinite Fence
C. Infinite FenceEducational Codeforces Round 77 (Rated for Div. 2)You are a rebel leader and you are planning to start a revolution in your country. But the evil Government found out about your pla...
2019-11-29 23:05:43
511
原创 KMP模板(C++)
这是一个KMPC++的模板。相信很对同学看了大佬超详细的讲解(本文有链接),但还是不太清楚next数组的意义,或者为什么next[0]=-1,而不是1。Kmp的时间复杂度为什么是线性的
2019-11-25 22:38:05
7351
原创 树状数组模板
首先对于追求编码简单快捷的同学来说,比如ACM。树状数组可以实现的线段树都能实现。树状数组是动态维护前缀和的工具树状数组:1.单点修改,单点查询2.区间修改,单点查询3.单点修改,区间查询这三种我们使用树状数组比线段树敲起来简单,似乎还更快。至于其他,就敲线段树吧那么修改指什么呢?比如给某个数加上一个数,或者给某个区间(要结合差分数组)加上一个数查询又可以是什么呢?比如查询某个点的前缀和,进而到区间求和。至于...
2019-11-25 00:53:13
311
原创 Abandoned country
HDU5723Abandoned countryDescriptionAn abandoned country has n (n ≤ 100000) villages which are numbered from 1 to n. Since abandoned for a long time, the roads need to be re-built. There are m (m ≤ 1...
2019-11-13 13:52:25
191
原创 c++定义变量时加取址符和不加取址符的区别
函数参数调用有值调用和引用调用。值调用是指当发生函数调用时,给形参分配内存空间,并用实参来初始化形参,这一过程是参数值的单向传递过程,一旦形参获得了值便与形参脱离了关系,此后无论形参发生了怎样改变,都不会影响到实参。引用调用作为形参时直接改变的是同一地址中的数据,所以能达到形实结合,对形参的任何操作都会直接作用于实参,即任一个发生变化都会影响到另一个#include<bits/std...
2019-11-05 22:10:32
2698
3
原创 指针的正确使用
指向NULL的指针能不能直接进行操作?这个还得看具体情况,如果你的指针是简单的int或者char指针,那么程序是可以正常运行的。比如;#include<bits/stdc++.h>using namespace std;int main(void){ int *p=NULL; int b; scanf("%d",&b); p=&b; printf(...
2019-11-05 21:42:32
477
原创 pip安装第三方库时ReadTimeoutError超时解决办法
你是否在安装第三方库时遇到raise ReadTimeoutError(self._pool, None, “Read timed out.”)pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Read timed out....
2019-11-03 23:56:30
1778
1
原创 You should consider upgrading via the 'python -m pip install --upgrade pip升级pip工具
相信很多人在安装python第三方库时,(比如我在安装jieba时)cmd报错:You should consider upgrading via the 'python -m pip install --upgrade pip.然后百度为什么会这样,不约而同就是让我们用python -m pip install --upgrade pip来升级,不过问题还是老样子,无法解决。最后看了一篇...
2019-10-30 00:43:57
39912
14
原创 关于安装cmd命令行安装pyinstaller库失败的解决方法
我相信很多同学都是看了北京大学理工嵩老师的python教学视频,然后安装pyinstallet库:用cmd命令行输入pip install pyinstaller进行安装遗憾的是,我们都用cmd通过pip工具安装pyinstaller失败,具体什么原因,现在我把我成功安装的方法告诉你们:1.找到你python安装的具体位置。(不知道的话直接把idle的文件...
2019-10-22 13:38:15
12615
9
原创 多测试用例的输入方式
多测试用例并不少见,对于大多数同学来说so easy!但是我觉得这种东西还是要来谈谈,因为我们在敲代码的过程中会遇到各种各样的输入方式,多测试的数组,字符,常数等输入。本文只讨论c和c++的多测试用例输入方式:一.单独一个变量的输入:拿int举例:C:int n;while(scanf("%d",&n)!=EOF){ ……}或者更简洁:(两种等价)int ...
2019-09-28 15:18:22
2675
原创 超大背包问题
乍一看这不就是01背包吗?还真是! 还记得01背包的时间复杂度是多少吗?是怎么来的?先看看01背包的转移过程吧:所以时间复杂度为O(N*C);其中N为物品个数,C为背包总容量。但是可以从上面的例题看到,超大背包中容量C是非常大的,那么可想而知时间复杂度有多高,所以用01背包是行不通的,并且C那么大,我们开dp数组是开不出来的,爆内存了!那么用折半枚举,思路来自《挑战程序竞赛》但是可以看到超大背包的n是比较小的,我们可以利用这点。~~爆搜?~~ 没错,不过直接暴力是2^n^,我们可以利用点技巧
2019-09-27 00:46:18
1750
4
原创 01背包,完全背包,多重背包模板
收录了01背包,完全背包,多重背包的例题和代码模板,并有详细解析的大佬链接,本文只是提取重点和归纳,还有自己打的代码供大家交流学习,其中含有多重背包的二进制优化详细代码
2019-09-26 17:34:34
895
原创 动态内存分配浅谈(new/delete和malloc/free)
[一分钟学会使用new和delete]在c++中我们学过动态分配函数malloc,还有动态储存释放函数free()int* pi = new int(5): 表示动态分配一个int ,初始化为 5int* pa = new int[5]: 表示动态分配一个数组,数组大小为5类似可以定义二维数组。int *B=new int[lb];//创建B数组,长度为lbint *B=(int*)malloc(sizeof(int)*l...
2019-09-19 20:01:25
262
原创 算数级数和几何级数的时间复杂度
首先**什么是算数级数和几何级数**?几何级数:从第二项起,每一项是前一项的多少**次方**。算术级数:从第二项起,每一项均由前一项**加一个常数**所构成的序列。**时间复杂度****算数级数:与末项平方同阶****几何级数(a > 1):与末项同阶**
2019-09-19 16:21:47
2311
原创 rand随机函数和srand初始化种子函数
rand()函数产生的所谓随机数是需要种子(理解为参考,有不同的参考才能产生不同的数)的,srand()正是提供初始化种子的函数,我们要真正的随机函数,就要确保种子每次都是不同的,那么我们把每时每刻都在变化的电脑时间作为种子的话,那么就能通过不断变化的种子来得到不同的函数。如何实现呢?->`srand( (unsigned)time( NULL ) );`( **由于要产生“真随机数列”,因此要用time()函数返回值来做“随机种子”**)
2019-09-15 15:19:22
7247
原创 一维/二维开关问题(poj3276/3279)
开关(翻转)问题:一维开关问题一般n较大,无法直接模拟,在现实上建立一维依赖型数组二维开关问题一般n比较小,模拟时先指定第一行的翻转方法,依次枚举下一行,下一行要不要翻转直接由上一行可推出,具体实现和注意事项请看下面的代码。(二维参考**《程序挑战与设计》**)
2019-09-14 12:35:28
454
原创 poj3320尺取法防止超时
Jessica’s Reading Problempoj3320Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 21174 Accepted: 7243DescriptionJessica’s a very lovely girl wooed by lots of boys. Recently she has a pr...
2019-09-12 00:39:13
236
原创 简述类模板函数模板template (typename T)
相信很多刚入门c++的同学在学数据结构或者查看大佬的代码中,我们都会看到:template <typename T>类模板;template<typename T>class A {public: ……protected: ……};或者:函数模板:本文只是简单说明一下我们使用类模板和函数模板需要注意什么(因为我...
2019-09-08 15:19:24
18917
1
原创 poj1064二分搜索法
Cable master(POJ NO.1064)有N条绳子,长度分别为Li,从中切割出k条长度相同的绳子,这K条绳子最长能有多长?保留两位小数。用二分搜索法来解决。并对于本题的精度问题做出解答
2019-09-06 22:35:14
248
原创 n皇后问题-深搜回溯dfs
问题介绍:n皇后问题是一个以国际象棋为背景的问题:如何能够在 n×n 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。eg:在n×n 格的棋盘上放置彼此不受攻击的n 个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n×n格的棋盘上放置n个皇后,任何两个皇后不...
2019-08-31 15:36:29
501
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅