
个人知识点总结
文章平均质量分 63
无
鸡冠花12138
这个作者很懒,什么都没留下…
展开
-
数组和指针联系
转载:http://www.cnblogs.com/yanlingyin/数组和指针经常出现于编程语言中、也许上课的时候老师也说过数组和指针有区别、参考书上也应该讲过,你是不是也不曾透彻的理清过?这篇博文主要从内存和编译的角度指出了数组和指针在访问方式上的区别、至于他们在函数调用的区别、以及它们的联系将在下一篇中详细讨论。为了说的清楚些、会先说一些基础的部分、如果你已经掌握...转载 2019-03-27 09:52:58 · 730 阅读 · 0 评论 -
源码 反码 补码详解(为什么计算机存储数值为补码形式?)
一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。那么,这里的 00000011 和 1000...原创 2018-07-20 11:32:05 · 593 阅读 · 1 评论 -
改进的筛素数法
最简单的筛素数法方法就是从2开始,将所以2的倍数去掉,然后从3开始,将3的倍数去掉。根据这样很容易写出代码,下面代码就是是筛素数法得到100以内的素数并保存到primes[]数组中。const int MAXN = 100;bool flag[MAXN];int primes[MAXN / 3], pi;void GetPrime_1(){ int i, j; pi = 0;...原创 2018-07-20 11:04:06 · 144 阅读 · 0 评论 -
hdu-4349(组合数的奇数个数-杨辉三角&Lucas定理)
Xiao Ming's HopeTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2560 Accepted Submission(s): 1751Problem DescriptionXiao Ming likes counting ...原创 2018-07-14 11:32:12 · 1140 阅读 · 0 评论 -
关于longlong与位运算
数据规模:int: -(2^31-1) ~ +(2^31-1)long long:-(2^63-1) ~ +(2^63-1) 由于默认的数字都是int型,所以在做乘法运算时会很容易想到int的溢出问题,如printf("%d\n", 100000 * 100000);输出结果:1410065408即使意识到了超int范围,用lld打印,但因为已经发生溢出,被截断,所以结果不会变printf("%l...原创 2018-07-14 10:47:58 · 3237 阅读 · 0 评论 -
字典树
Trie树(字典树)一、引入字典是干啥的?查找字的。字典树自然也是起查找作用的。查找的是啥?单词。看以下几个题:1、给出n个单词和m个询问,每次询问一个单词,回答这个单词是否在单词表中出现过。答:简单!map,短小精悍。好。下一个2、给出n个单词和m个询问,每次询问一个前缀,回答询问是多少个单词的前缀。答:map,把每个单词拆开。judge:n<=20...原创 2018-07-19 19:32:31 · 276 阅读 · 0 评论 -
指针的详细使用介绍
指针简介 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志。同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理...原创 2018-07-13 11:38:09 · 6850 阅读 · 0 评论 -
抽屉原理~
poj:3370:给出n个数,叫你从中选出任意个数,使得这些数的和是c的倍数。(n > c)2356:在n个数组成的数列中找出若干个连续数使它们之和能被n整除【抽屉原理】:原理1 把多于n个的物体放到n个抽屉里,则至少有一个抽屉里的东西不少于两件; 原理2 把多于mn(m乘以n)个的物体放到n个抽屉里,则至少有一个抽屉里有不少于...原创 2018-07-24 15:32:54 · 284 阅读 · 0 评论 -
java大数
头文件:import java.util.*;import java.math.*;Ⅰ基本函数: 1.valueOf(parament); 将参数转换为制定的类型 比如 int a=3; BigInteger b=BigInteger.valueOf(a); 则b=3; String s=”12345”; BigInteger c=BigInteger.valueOf(s); 则c=12345;2...原创 2018-04-26 20:30:17 · 316 阅读 · 0 评论 -
卡特兰数(Catalan)及其应用
卡特兰数卡特兰数是组合数学中一个常出现在各种计数问题中出现的数列。卡特兰数前几项为 : C0=1,C1=1,C2=2,C3=5,C4=14,C5=42,C6=132,C7=429,C8=1430,C9=4862,C10=167961, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440...原创 2018-05-02 18:04:44 · 806 阅读 · 0 评论 -
gcd gbd
int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}int gbd(int a,int b){ return a/gcd(a,b)*b;}原创 2018-04-30 13:41:07 · 161 阅读 · 0 评论 -
zcmu2117(普通母函数)
2117: 数的划分Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 68 Solved: 27[Submit][Status][Web Board]Description 一个正整数可以划分为多个正整数的和,比如n=3时:3;1+2;1+1+1;共有三种划分方法。给出一个正整数,问有多少种划分方法。 Input一个正整...原创 2018-04-13 13:47:41 · 283 阅读 · 0 评论 -
模运算法则
模运算与基本四则运算有些相似,但是除法例外。其规则如下: (a + b) % p = (a % p + b % p) % p (a - b) % p = (a % p - b % p) % p (a * b) % p = (a % p * b % p) % p (a^b) % p = ((a % p)^b) % p推论: 若a≡b (% p),则对于任意的c,都有(a + c) ≡ (b + c)...原创 2018-07-15 09:56:00 · 10580 阅读 · 0 评论 -
快速幂模板~
ll qpow(ll x,ll n){ ll ans=1; while(n) { if(n&1)ans*=x%mod; x*=x%mod; n>>=1; } return ans%mod;}原创 2018-07-21 12:19:53 · 203 阅读 · 0 评论 -
#include #define
#include<set>#include<map>#include<list>#include<queue>#include<deque>#include<cmath>#include<stack>#include<cstdio>#include<string>#inc...原创 2018-08-10 09:52:04 · 1119 阅读 · 2 评论 -
C++ 值传递、指针传递、引用传递详解
转载:http://www.cnblogs.com/yanlingyin/值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。指针传递:形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作...转载 2019-03-27 09:49:04 · 3115 阅读 · 0 评论 -
二维向量的叉乘判断凹凸多边形
平面上三个点:p1(x1,y1),p2(x2,y2),p3(x3,y3)s(p1,p2,p3)=(x1-x3)*(y2-y3)-(x2-x3)*(y1-y3)如果s>0 则说明 这连接这3个点时是按照逆时针的顺序,如果是s<0则说明连接这3个点是按照顺时针的顺序这样的话按顺序的遍历每三个点,如果有小于0的说明有一条直线向右拐弯了struct node{ double ...原创 2018-09-06 19:43:05 · 2579 阅读 · 0 评论 -
dijkstra+堆优化
分析:可知Dijkstra算法的复杂度是O(n*n)Dijkstra算法在寻找集合T中距离最小的顶点W(即寻找dist数组中最小值)复杂度是O(n),在更新距离操作时复杂度为O(n)。上述操作需要进行n次,将n个点的最短路径值确定因此复杂度为O(n)。可以发现外层的n次循环是不可避免的,因为需要求出源点到各个点的最短路径。可以优化的地方就在寻找dist数组最小值。可以采用合适的数...原创 2018-09-02 14:39:47 · 2007 阅读 · 0 评论 -
分层图最短路
分层图最短路,就是在分层图上解决最短路问题 第一种就是dp的思想:一般模型为:在一张图上,有k次机会可以通过一条边而不需要计算权值(免费过路),求从起点到终点的最短路线常规思路:想象将一个点拆分为k + 1个点,分别表示到这个点时,免费权消耗了0次,1次,2次......k次这样实际我们可以把这k个点想象成对应dp的不同的状态dis[i][j]表示到第i个点时,消耗了j次乘车权后的最短路...原创 2018-09-04 11:48:26 · 1695 阅读 · 1 评论 -
浅谈积性函数求前缀和
转载至https://blog.youkuaiyun.com/skywalkert/article/details/50500009前置技能积性函数的定义若f(n)f(n)的定义域为正整数域,值域为复数,即f:Z+→Cf:Z+→C,则称f(n)f(n)为数论函数。 若f(n)f(n)为数论函数,且f(1)=1f(1)=1,对于互质的正整数p,qp,q有f(p⋅q)=f(p)⋅f(q)f(p⋅q)...原创 2018-08-29 14:07:56 · 775 阅读 · 0 评论 -
最小表示法 最大表示法
最大最下表示法都一样。这里就说一个最小表示法吧! 最小表示法就是找出字符串S的的循环同构串中字典序最小的一个。 那么什么是循环同构串呢。是--设S=bcad,且S’是S的循环同构的串。S’可以是bcad或者cadb,adbc,dbca即在字符串S中从i>=0开始,从i循环到字符串末尾,再从头循环到i,所形成的字符就是S循环同构串。 因为这样的同构串不止一个,所...原创 2018-08-28 12:55:16 · 869 阅读 · 0 评论 -
离散化的思想
离散化是什么:一些数字,他们的范围很大(0-1e9),但是个数不算多(1-1e5),并且这些数本身的数字大小不重要,重要的是这些数字之间的相对大小(比如说某个数字是这些数字中的第几小,而与这个数字本身大小没有关系,要的是相对大小)(6 8 9 4 离散化后即为 2 3 4 1)(要理解相对大小的意思)(6在这4个数字中排第二小,那么就把6离散化成2,与数字6本身没有关系, 8,9,4亦是如此)...原创 2018-08-08 10:45:48 · 547 阅读 · 0 评论 -
stl-list
1.关于list容器list是一种序列式容器。list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list也具有链表的主要优点,即:在链表的任一位置进行元素的插入、删除操作都是快速的。list的实现大概是这样的:list的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域。前驱元素指针域保存了前驱元素的首地址;...原创 2018-08-12 11:05:14 · 186 阅读 · 0 评论 -
stl-stack
stack适配器,它可以将任意类型的序列容器转换为一个堆栈,一般使用deque作为支持的序列容器。元素只能后进先出(LIFO)。不能遍历整个stack。1.声明一个stack stack<int> s1; stack<string> s2; 2.stack中的操作 stack<int> s; s.push(x) ...原创 2017-08-25 11:12:37 · 215 阅读 · 0 评论 -
stl-deque
deque(双端队列) 需要包括头文件<deque>; 定义: deque<数据类型> 变量名; Eg: deque<int> que;//定义了一个整型的双端队列; 基本操作(红色标识为常用操作): que.assign(beg,end) 将[beg; end)区间中的...原创 2018-08-12 10:40:16 · 226 阅读 · 0 评论 -
斐波那契
斐波那契:通项公式:F(n)=F(n-1)+F(n-2);(比内公式:)求和公式:Sn=2an+an-1-1(文字说明:数列的最后一项的两倍加上倒数第二项再减去1)原创 2018-08-12 10:00:22 · 1540 阅读 · 0 评论 -
bitset用法
bitset经常用于状态压缩,以下是一些常见的操作bitset的操作成员函数 函数功能 bs.any() 是否存在值为1的二进制位 bs.none() 是否不存在值为1的二进制位 或者说是否全部位为0 bs.size() 位长,也即是非模板参数值 bs.count() 值为1的个数 bs.test(pos) 测试pos处的二进制...原创 2018-08-06 10:24:20 · 456 阅读 · 0 评论 -
九余数定理(hdu1163)
Eddy's digital RootsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7462 Accepted Submission(s): 4097Problem DescriptionThe digital root of a...原创 2018-04-13 11:29:41 · 288 阅读 · 0 评论 -
九余定理(hdu1013)
九余数定理一个数对九取余后的结果称为九余数。一个数的各位数字之和想加后得到的<10的数字称为这个数的九余数(如果相加结果大于9,则继续各位相加)Digital RootsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 87400 ...原创 2018-04-13 11:24:11 · 1187 阅读 · 0 评论 -
母函数(对于初学者的最容易理解的)
普通母函数:在用到母函数之前啊,恐怕很少有人听过母函数,我也一样,我当时是做杭电acm的2082题要用母函数做才去了解母函数的。当然母函数分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数,我这里说的都是普通母函数。什么是普通母函数呢,——把组合问题的加法法则和幂级数的的乘幂的相加对应起来,这句话可能一开始难以理解,不过其实学完了之后很容易理解,母函数的思想很简单—就是...原创 2018-04-12 15:26:47 · 41386 阅读 · 35 评论 -
2017-9-17pat甲级 B
B. Splitting A Linked List (25)时间限制 400 ms内存限制 65536 kB代码长度限制 8000 B判题程序 Standard 作者 CHEN, YueGiven a singly linked list, you are supposed to rearra原创 2017-09-21 14:21:10 · 329 阅读 · 0 评论 -
2017-9-17pat甲级 A
A. Cut Integer (20)时间限制 400 ms内存限制 65536 kB代码长度限制 8000 B判题程序 Standard 作者 CHEN, YueCutting an integer means to cut a K digits long integer Z into two原创 2017-09-21 14:12:22 · 363 阅读 · 0 评论 -
最长回文子串
比较基本的解法:回文为单数,例如aba;回文为偶数,例如abba;分这两个情况,对每个字符为中心进行判断代码如下:#include #include #include #include using namespace std; int main(){ string s; getline(cin, s); int l原创 2017-09-12 20:49:38 · 279 阅读 · 0 评论 -
树的建立 遍历
二叉树是采用递归定义的,实现起来代码简洁(也许并不简单)。并且它在具体的计算机科学中有很重要的运用,是一种很重要的数据结构,二叉树有三种遍历和建立的方式。今天先学习一下它的建立和打印。建立:#include#include#include#include#includeusing namespace std;typedef struct BiTNode{ char d原创 2017-09-14 10:44:58 · 312 阅读 · 0 评论 -
并查集
并查集 (Union-Find Sets)并查集:(union-find sets)是一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多。一般采取树形结构来存储并查集,并利用一个rank数组来存储集合的深度下界,在查找操作时进行路径压缩使后续的查找操作加速。这样优化实现的并查集,空间复杂度为O(N),建立一个集合的时间复杂度为O(1),N原创 2017-08-22 20:28:49 · 354 阅读 · 0 评论 -
位运算简单介绍
一、位运算符C语言提供了六种位运算符:& 按位与| 按位或^ 按位异或~ 取反>> 右移1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码转载 2017-08-15 13:00:12 · 454 阅读 · 0 评论 -
KMP算法
前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k;但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导论,32章 字符串匹配虽然讲到了对前后缀计算的正确性,但是大量的推理证明不大好理解,没有与程序结合起来讲。今天我在这里讲一讲我的一些理解,希望大家多多指教,如果有不清楚的或错误的请给我留言。 字...原创 2017-08-20 16:42:16 · 453 阅读 · 0 评论 -
stl的常见函数
整理自《ACM程序设计》 迭代器(iterator) 个人理解就是把所有和迭代有关的东西给抽象出来的,不管是数组的下标,指针,for里面的、list里面的、vector里面的,抽象一下变成了iterator 1 #include 2 #include 3 4 using namespace std; 5 6 int main(原创 2017-08-18 11:33:08 · 495 阅读 · 0 评论 -
树状数组
树状数组详解(转)第01讲 什么是树状数组?树状数组用来求区间元素和,求一次区间元素和的时间效率为O(logn)。有些同学会觉得很奇怪。用一个数组S[i]保存序列A[]的前i个元素和,那么求区间i,j的元素和不就为S[j]-S[i-1],那么时间效率为O(1),岂不是更快?但是,如果题目的A[]会改变呢?例如:我们来定义下列问题:我们有n个盒子。可能的操作为1.向盒子k添加...原创 2017-08-18 10:28:23 · 410 阅读 · 0 评论 -
大数的相加 乘 余 幂
高精度问题之大数相加(原来就是用字符串相加,模拟手算这么简单!)解题心的: 就是基本的一对一模拟手算。。借助c++的string 不用逆序运算了。很方便的补0. 最后处理下前导0的问题。#include #include string>using namespace std;// 实现大数相加 结果存放在num中 void bigIntergerAd原创 2017-08-17 18:48:26 · 389 阅读 · 0 评论