
学习笔记
han_hhh
这个作者很懒,什么都没留下…
展开
-
UML类图
类class第一层:类的名称,若为抽象类用斜体表示第二层:类的特性,字段和属性第三层:类的操作,方法和行为+:public-:private#:protected接口与类的主要区别是顶端有<<interface>>矩形表示法//飞翔接口interface IFly{ void Fly();}第一行是接口名称第二行是接口方法棒棒糖表示法//讲话接口interface ILanguage{ void Speak();原创 2021-08-29 23:46:05 · 245 阅读 · 0 评论 -
卡特兰数
卡特兰数公式通项公式: 通项公式的变形: 递推式: 基本模型以一个题目背景来解释卡特兰数题目:有一个长度为2n的01序列,其中1,0各n个,要求对于任意的整数 k ∈ [1,2n] ,数列的前 k个数中,1的个数不少于0。思路:将整个过程放在一个坐标上,起点为(0,0),1表示向右上走一步,0表示向右下走一步,因为01各有n个,所以最后必会到达(2n,0)的位置从(0,0)到(2n,0)的总的路径数为,从(0,0)到(...原创 2020-09-19 12:50:33 · 230 阅读 · 0 评论 -
char* str和char str[]的区别
真是惭愧,都要上大四了才来补这个知识点。之前只学了c的时候字符数组就是一塌糊涂,还没搞懂的时候学了C++,后来基本都是用的string,没有用过char*,今天又碰到了这个问题,一定要把他弄懂!!!事情的起因是我给一个char* str赋了初值,后来又尝试改变它,但程序一直崩溃找不到原因,最难受的是编译不会报错,但运行就会崩溃。后来查资料发现char*指向常量的时候,常量是不能够被修改的,这估计也是他们两个最大的区别了总结如下:1.含义上的区别数组表示一块内存区域,其地址和容量在生命期里不会原创 2020-09-03 21:28:28 · 480 阅读 · 0 评论 -
cin,getline(),cin.getline()
1.cin>>输入一个数字或字符;输入一个字符串,遇到“空格”“Tab”“回车”就结束;2.getline()getline(cin,str)是用来处理string的函数,第二个参数是数组类型的变量,可以接受空格并输出,需要有头文件string3.cin.getcine()cin.getline()接收字符串的变量,接收字符个数,结束字符),如果第三个省略则默认为‘...原创 2018-09-11 15:24:01 · 563 阅读 · 0 评论 -
fill与memset
memset函数 头文件为<cstring>使用: memset(a,sizeof(a),0)只能将数组初始化为0或-1fill函数 头文件为<algorithm>使用:fill(first,last,val)first为容器的首迭代器,last为容器的末迭代器,val为将要替换的值可以将容器初始化为任何值...原创 2018-09-03 09:29:12 · 305 阅读 · 0 评论 -
lowbit()
lowbit()函数用来取一个二进制最低位的一与后边的0组成的数例:5(101),lowbit(5)=1(1) 12(1100),lowbit(12)=4(100)int lowbit(int t){ return t&(-t);}原理,二进制数的负数是正数取反加一12(1100),-12(0100)...原创 2018-09-06 10:39:01 · 10932 阅读 · 2 评论 -
树状数组
先了解lowbit()我对树状数组的了解还不是很深入,慢慢学习练习,再慢慢补充树状数组经典图示数组a是输入的数组,数组c用来辅助形成树状数组,并完成数据的修改和查询操作c1=a1c2=a1+a2c3=a3c4=a1+a2+a3+a4c5=a5c6=a5+a6c7=a7c8=a1+a2+a3+a4+a5+a6+a7+a8查询操作:即求sum[i ,...原创 2018-09-06 11:14:33 · 151 阅读 · 0 评论 -
容斥定理
问题简述:有1~n个灯泡,每个灯泡都有一个开关,每个灯泡初始都是不亮的。分别进行三次操作,每次操作都选择一个素数x,将编号为x和x的整数倍所对应的灯泡开关都拨动一下(如果原来的灯是亮的则拨动后为不亮,若刚开始不亮,拨动后为亮)。求出最后亮着的灯泡个数 假设n=10.容斥定理:在不考虑重叠的情况下,计算出所有被并集合的元素数,然后再把计数时重复计算的元素数排斥出去,使得计算结果既...原创 2018-09-12 17:11:27 · 622 阅读 · 0 评论 -
文件操作
在D盘上创建一个记事本in,用来储存输入数据在in记事本上输入 1 2,再按ctrl s保存freopen("D:\\in.txt","r",stdin);stdin的意思是标准输入,in是输入,r是read的意思,总的意思是从D盘中的in.txt文件中代替标准读入(就是键盘读入)进行读入#include<iostream>#include<cstdio>...原创 2018-09-13 11:43:47 · 133 阅读 · 0 评论 -
序列问题
问题1:给出一个序列,求序列的最大连续非空子段和输入:第一行输入元素的个数,第二行输入n个元素,输出:输出最大连续非空子段和输入:72 -4 3 -1 2 -4 3输出:4问题分析:先求出来序列的前缀和数组,如果要求元素i到j字段和,就是pre[j]-pre[i],题目要求最大字段和,就用最大前缀和减去最小前缀和int cnt[maxn];ll pre[maxn]...原创 2018-09-05 15:48:55 · 509 阅读 · 0 评论 -
广度优先搜索(bfs)初识
广度优先搜索主要思想:首先以一个未被访问过的顶点做起始顶点,然后访问其相邻的所有顶点,然后对每个相邻的顶点,再分别访问他们相邻的顶点,直到所有顶点都被访问为止。#include<stdio.h>int main(void){ int que[101],head,tail,e[101][101],book[101]; int n,m,a,b,i,j; int cur; scan...原创 2018-03-12 21:28:51 · 149 阅读 · 0 评论 -
深度优先搜索(dfs)初识
思想:首先以一个未被访问过的顶点做起始顶点,沿当前顶点的边走到未被访问过的顶点,如果没有未被访问过的点,则回到上一个顶点,直到所有的顶点都被访问过。代码:变量cur:正在进行遍历的顶点数组e:图的边(邻接矩阵)book:用来记录那些顶点已经被访问过sum:已经访问过多少顶点n:图的顶点的总个数#include<stdio.h>int book[101],sum,n,i,e[101][...原创 2018-03-12 20:45:17 · 154 阅读 · 0 评论 -
栈初识
<海岛blog>问题链接:POJ1028 Web Navigation。/* POJ1028 Web Navigation */ #include <iostream> #include <string> #include <stack> using namespace std; int main() { stack...转载 2018-02-28 21:35:22 · 148 阅读 · 0 评论 -
set 初识
1.set<int>s :输入数组s begin() ,返回set容器的第一个元素end() ,返回set容器的最后一个元素clear() ,删除set容器中的所有的元素empty() ,判断set容器是否为空max_size() ,返回set容器可能包含的元素最大个数size() ,返回当前set容器中的元素个数...原创 2018-02-28 21:06:56 · 202 阅读 · 0 评论 -
数论
1.快速幂:CalculateR:= a ^ n mod m#include<stdio.h> typedefunsignedlonglongULL; //快速模幂计算函数 ULLpowermod(ULLa,ULLn,ULLm) { ULLres=1; while...转载 2018-03-01 11:50:56 · 184 阅读 · 0 评论 -
UVA10935 Throwing cards away I【模拟+queue+循环队列】
#include <stdio.h> #define N (50 + 1) int cq[N], headcq, tailcq; void pushcq(int v) //入队{ cq[tailcq++] = v; tailcq %= N; } void popcq() ...转载 2018-03-01 18:15:04 · 186 阅读 · 0 评论 -
vector初识
原博客vector容器用法详解vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化。 vector类常用的函数如下所示: 1.构造函数vector():创建一个空vecto...转载 2018-03-09 22:49:58 · 336 阅读 · 0 评论 -
结构体
struct queue{int data[100];//队列的主体,用来存储内容int head;//队首int tail;//队尾};struct:关键字queue:结构体的名字该结构体的三个成员:整型数组 data、整型 head和整型 tail注意结构体结尾的符号 ;定义结构体变量:struct queue q;访问结构体变量的内部成员:q.head=1;q.tail=1;s...原创 2018-03-02 16:50:02 · 169 阅读 · 0 评论 -
lower_bound与upper_bound
#include<iostream>#include<algorithm>int main(void){ int point[10]={1,3,7,7,9}; int tmp=upper_bound(point,point+5,7);//按从小到大算,7最多能插入数组point的哪个位置 printf("%d\n",tmp); tmp=...原创 2018-03-03 15:47:26 · 117 阅读 · 0 评论 -
map
/* CCF201612-1 中间数 */ #include <iostream> #include <map> using namespace std; int main() { map<int, int> m; //m为一个有两列的表,第一列维数组下标,第二列为对应的值 ...转载 2018-03-03 16:15:18 · 146 阅读 · 0 评论 -
模拟题
掷骰子 http://blog.youkuaiyun.com/tigerisland45/article/details/79115266扑克牌 http://blog.youkuaiyun.com/tigerisland45/article/details/79080988 http://blog.youkuaiyun.com/tigerisland45/article...转载 2018-03-01 09:03:03 · 284 阅读 · 0 评论