
知识点
SY_Pistachio
低调的前行,越努力越幸运!
展开
-
Map函数
一.Map概述Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后...转载 2018-02-03 08:59:10 · 4091 阅读 · 0 评论 -
数论 斯特林公式
斯特林公式是一条用来取n阶乘近似值的数学公式。一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用。从图中可以看出,即使在n很小的时候,斯特灵公式的取值已经十分准确。 公式为: 从图中看出,对于足够大的整数n,这两个数互为近似值。更加精确地: ...原创 2018-04-27 17:46:53 · 3472 阅读 · 0 评论 -
1013 Digital Roots 九余定理
Digital RootsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 88254 Accepted Submission(s): 27507Problem Description The digital root of a pos...原创 2018-04-29 10:23:34 · 253 阅读 · 0 评论 -
memset()函数初始化问题
总来源:点击打开链接话说刚开始使用memset的时候一直以为memset是对每一个int赋值的,心里想有了memset还要for循环对数组进行初始化干嘛。但其实memset这个函数的作用是将数字以单个字节逐个拷贝的方式放到指定的内存中去 memset(dp,0,sizeof(dp)); int类型的变量一般占用4个字节,对每一个字节赋值0的话就变成了“00000000 00000000 000...转载 2018-05-29 21:45:16 · 5056 阅读 · 1 评论 -
memset()函数源代码与fill()函数
一memset()函数: void *memset(void *s, int ch, size_t n); 作用:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作。不知道有没有像我一样把memset当作万能的初始化工具,例如:int arr[n]; memset(arr,1...原创 2018-05-30 20:43:50 · 514 阅读 · 0 评论 -
c++参考书链接
点击打开链接原创 2018-05-30 20:45:20 · 272 阅读 · 0 评论 -
优先队列
1.优先队列基于堆排序。2.优先队列自动排序,优先级高的元素先出队列。 2.1 如果是整形,降序排列(例如:输出为:8 5 1)。 #include<iostream>#include<algorithm>#include<cstdio>#include<queue>using namespace std;int...原创 2018-08-09 19:47:26 · 124 阅读 · 0 评论 -
分治
1.归并: 1.1 性能分析:时间效率:O(nlog2n) 空间效率:O(n)稳 定 性:稳定 1.2 模板程序:#include<bits/stdc++.h>using namespace std;int a[8]={3,7,8,10,2,5,11,12};int b[8];void M(int a[],int s,int m,int end,i...原创 2018-08-07 11:44:42 · 137 阅读 · 0 评论 -
电影节(贪心,结构体重载,sort)
电影节查看 提交 统计 提示 提问总时间限制: 1000ms 内存限制: 65536kB描述大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),问李雷最多可以看多少部电影。输入多组数据。每组数据开头是n(n<=100),表示共n场电影。接下来n行,每行两个整数(0到10...原创 2018-08-08 11:08:02 · 457 阅读 · 0 评论 -
A*算法
1.A*算法,A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。 2. f*(n)=g*(n) +h*(n)从初始节点 S0 出发,经过节点 n到达目标节点的 最小步数 (真实值)。 g*(n): 从S0 出发,到达 n的最少步数(真实值) ...原创 2018-08-17 14:17:30 · 450 阅读 · 0 评论 -
并查集
并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通过,运行的时间复杂度也极高,根本就不可能在比...原创 2018-03-18 09:53:58 · 546 阅读 · 0 评论 -
Eucild 第一定理(数学)
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring> using namespace std;#define maxn 100010int vis[maxn];int pri[maxn];int cnt=0;void prime_table()...原创 2018-08-24 17:46:22 · 594 阅读 · 0 评论 -
c++中的STL库 对求最大公约数的精简
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring> using namespace std;int a,b;int main(){ std::cin>>a>>b; int n=__gcd(a,b); cout<...原创 2018-08-24 17:53:05 · 2038 阅读 · 0 评论 -
c++中 1LL解释
今天看代码时发现一句 :if(dp[k]+1LL*a[j]*i+b[j] >= dp[k+(1<<j)])其中用了1LL。LL其实代表long long, * 1LL是为了在计算时,把int类型的变量转化为long long,然后再赋值给long long类型的变量。dp[]是long long类型的, if(dp[k]+1LL*a[j]*i+b[j] >= d...原创 2018-09-08 09:28:34 · 14440 阅读 · 2 评论 -
c++中关于M_PI,M_E的解释和使用,以及参考值
1.M_PI 是一个宏定义,圆周率的定义 #define M_PI 3.14159265358979323846 (参考) 此宏定义和编译器有关,TC中M_PI宏就定义在<math.h>里面。 但vc的<math.h>中没有了M_PI的宏定义。2.M_E 是自然对数的一个宏定义 #define M_E 2.7182818284590452353...原创 2018-10-11 18:44:05 · 33883 阅读 · 0 评论 -
数论 之 乘法逆元介绍(扩展欧几里得算法求解乘法逆元)
1.扩展欧几里得: 已知整数a、b,扩展欧几里得算法可以在求得a、b的最大公约数的同时,能找到整数x、y(其中一个很可能是负数),使它们满贝祖等式:。 2.乘法逆元:ax≡1 (mod p) 这个等式可以描述为: a乘一个数x并模p等于1,即 a%p*x%p=res,res%p=1;看上去就是同余定理的一个简单等式。 逆元x可以描...原创 2018-10-10 21:17:12 · 1784 阅读 · 0 评论 -
数论 错排 HDU 2049 不容易系列之(4)——考新郎
不容易系列之(4)——考新郎Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 44798 Accepted Submission(s): 16405Problem Description 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,...原创 2018-04-27 16:42:21 · 162 阅读 · 0 评论 -
数论 错排公式
1.定义: 一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。 n个元素的错排数记为D(n)。 2.推导(递推): 首先将第一个元素错排,假设将第一个元素放到第k位,那么对于第k位的元素,有两种情况 1.k放在第1位,此时相当于对处第1位与第k位的n-2个元素错排,方案数D(n-2) 2.k不放在第1位,此时可以看做将第k位与第1位交换,对...原创 2018-04-27 15:26:48 · 330 阅读 · 0 评论 -
ACM 所用数据范围 常见知识点总结
1. 取值范围:unsigned int 0~4294967295 int 2147483648~2147483647 9位unsigned long 0~4294967295long 2147483648~2147483647long long的最大值:9223372036854775807 19位lo...原创 2018-04-26 21:35:16 · 1020 阅读 · 0 评论 -
算法 背包
1. 背包:https://baike.baidu.com/item/背包问题/24169312.完全背包:http://blog.youkuaiyun.com/howardemily/article/details/552230393.各种背包:http://blog.youkuaiyun.com/howardemily/article/details/55223039...转载 2018-03-15 20:29:39 · 174 阅读 · 0 评论 -
蓝桥杯 四平方和
四平方和四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符号表示乘方的意思)对于一个给定的正整数,可能存在多种平方和的表示法。要求你对4个数排序:0 <= a <= b <= c...原创 2018-03-20 19:33:48 · 440 阅读 · 0 评论 -
c++模板 pair
1.介绍:https://blog.youkuaiyun.com/oceanlight/article/details/78905372.创建和用法:https://blog.youkuaiyun.com/sinat_35121480/article/details/54728594转载 2018-03-30 15:23:28 · 179 阅读 · 0 评论 -
动态规划 背包问题描述 状态转化方程
1. 0-1背包:总来源(https://blog.youkuaiyun.com/slience_646898/article/details/78638125) (1)状态转化方程: f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ), f[i-1,j] } 2.多重背包:总来源(https://blog.youkuaiyun.com/acdreamers/a...原创 2018-04-08 22:04:12 · 342 阅读 · 0 评论 -
欧几里得
什么是欧几里得算法:欧几里得算法就是辗转相除法,用来求得最大公约数。1.1模板一: int gcd(int a,int b){ //return b==0?a:gcd(b,a%b); return b?gcd(b,a%b):a;}1.2完整代码: #include<algorithm> #include<iostream>#include<cstdio&...原创 2018-04-15 09:54:45 · 905 阅读 · 0 评论 -
数论 扩展欧几里得模板
基本算法描述: 对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b) =ax+by。 证明:设 a>b。 1,显然当 b=0,gcd(a,b)=a。此时 x=1,y=0; 2,ab!=0 时 设 ax1+by1=gcd(a,b); bx2+(a...原创 2018-04-16 19:25:03 · 277 阅读 · 1 评论 -
青蛙的约会 POJ - 1061 扩展欧几里得
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面...原创 2018-04-16 21:31:27 · 342 阅读 · 2 评论 -
大数 Java 幂 Exponentiation
Problem F: ExponentiationTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 9 Solved: 6[Submit][Status][Web Board]DescriptionProblems involving the computation of exact values of very large magnitude and...原创 2018-04-06 11:13:00 · 239 阅读 · 0 评论 -
数论 快速幂
1.快速幂的目的就是做到快速求幂,所以以后遇到要求多次幂指数的时候,可以考虑快速幂算法。2.快速幂是基于二进制的: 假设我们要求a^b,按照朴素算法就是把a连乘b次,这样一来时间复杂度是O(b)也即是O(n)级别,快速幂能做到O(logn),快了好多好多。它的原理如下: 假设我们要求a^b,那么其实b是可以拆成二进制的,该二进制数第i位的权为2^(i-1),例如当b==11时...原创 2018-04-13 20:27:39 · 400 阅读 · 1 评论 -
poj 2109 Power of Cryptography(幂函数反解)
Power of CryptographyTime Limit: 1000MSMemory Limit: 30000KTotal Submissions: 27199Accepted: 13599DescriptionCurrent work in cryptography involves (among other things) large prime numbers and computin...原创 2018-04-24 21:12:41 · 213 阅读 · 0 评论 -
折线分割平面 递推 以及常见直线分割折线分割总结
折线分割平面Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 36381 Accepted Submission(s): 24376Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我...原创 2018-04-25 20:40:11 · 327 阅读 · 0 评论 -
递推总结和模板
1.不管什么类型的递推题目,总是有规律可循的。然而这个时候切记不可写成递归形式,递归算法最大特点就是有一个回溯的过程,必然是要超时的,要解决超时问题,还需要转化为递推算法。而递推算法与递归算法正好相反,递推是从后往前计算,而递推正好是从前往后计算。2.所做题目递推公式总结: 2.1 骨牌方格,dp[ i ] = dp [i-1] + dp[ i-2 ]; https://blog.csdn.ne...原创 2018-04-26 20:40:03 · 440 阅读 · 0 评论 -
STL cmath
#include<iostream>#include<cstdio>#include<cmath>#include<stdlib.h>using namespace std;int main(){ cout<<log2(4)<<endl; cout<<log10(1000)<<原创 2018-04-26 21:18:00 · 402 阅读 · 0 评论 -
Python写一个简单的爬虫样例(不超过50行代码)
点击转到转载 2018-11-05 11:52:40 · 2199 阅读 · 0 评论