
数据结构
文章平均质量分 92
qq_1291799550
这个作者很懒,什么都没留下…
展开
-
欧拉降幂加快速幂
题:https://ac.nowcoder.com/acm/contest/634/D求4的n次方减一借个大佬的图#include<iostream>#define ll long longusing namespace std;ll er(ll n){//前n个数中与n互质的个数 ll ans=n; ll i; for(i=2;i*i<=n;i+...原创 2019-04-20 16:14:53 · 369 阅读 · 0 评论 -
三项式与组合数(lucas板子)
1 、三项式展开 其实可以推广到多项式展开 2、排列组合%%%大佬博客:https://blog.youkuaiyun.com/qq_34531807/article/details/797952611、当n,m都很小的时候直接用杨辉三角求C(n,m)=C(n-1,m)+C(n-1,m-1)2、利用乘法逆元 (初始化完之后如果需要多次计算组合相...原创 2019-04-20 22:51:36 · 635 阅读 · 0 评论 -
约瑟夫环问题
先贴着 慢慢研究 : https://www.cnblogs.com/cmmdc/p/7216726.html原创 2019-02-24 21:43:37 · 154 阅读 · 0 评论 -
素数
判断素数一个大于5的素数一定在6的倍数周围bool is_prime(ll n){ if(n<2) return false; if(n==2 || n==3) return true; if(n%6!=1 || n%6!=5) return false; for(ll i=5;i<=n;i+=6){ if(n%i==0 || n%(i+2)==0) re...原创 2019-05-02 11:26:22 · 161 阅读 · 0 评论 -
洛谷P1538迎春舞会之数字舞蹈
题目: https://www.luogu.org/problemnew/show/P1538输出:坑。。。。。。。。。#include<iostream>#include<cstring>using namespace std;int main(){ int k; char a[260]; int b; cin>>k; ci...原创 2018-11-01 13:29:15 · 197 阅读 · 0 评论 -
ALGO-114 黑白无常
问题描述 某寝室的同学们在学术完之后准备玩一个游戏:游戏是这样的,每个人头上都被贴了一张白色或者黑色的纸,现在每个人都会说一句话“我看到x张白色纸条和y张黑色的纸条”,又已知每个头上贴着白色纸的人说的是真话、每个头上贴着黑色纸的人说的是谎话,现在要求你判断哪些人头上贴着的是白色的纸条,如果无解输出“NoSolution.”;如果有多组解,则把每个答案中贴白条的人的编号按照大小排列后组成一个数(...原创 2019-02-27 20:42:35 · 231 阅读 · 0 评论 -
P1135奇怪的电梯--------蒟蒻的深搜入门
输入:5 1 53 3 1 2 5输出:3蒟蒻终于能写出一道题了~~~~~#include<iostream>using namespace std;int n,a,b;int num[205],ans=20001;int pd[1001];void dfs(int q,int ma){ if(q==b){ ans=min(ans,ma);...原创 2018-11-06 18:38:00 · 343 阅读 · 0 评论 -
ALGO-156 表达式计算
题目:http://lx.lanqiao.cn/problem.page?gpid=T419万分感谢大佬 :https://blog.youkuaiyun.com/reidsc/article/details/54669433#include<iostream>#include<stack>#include<cstring>#include<algor...原创 2019-02-24 21:27:42 · 209 阅读 · 0 评论 -
判断添加一个字符后字符串是否为回文串
添加等价于删除即判断删除一个字符后是否为回文串即可题目:自从 Applese 学会了字符串之后,精通各种字符串算法,比如……判断一个字符串是不是回文串。这样的题目未免让它觉得太无聊,于是它想到了一个新的问题。如何判断一个字符串在任意位置(包括最前面和最后面)插入一个字符后能不能构成一个回文串?输入描述:仅一行,为一个由字母和数字组成的字符串 s。输出描述:...原创 2019-01-29 19:54:17 · 856 阅读 · 1 评论 -
后缀数组
膜拜大佬:https://www.cnblogs.com/victorique/p/8480093.html#autoid-1-3-1题目:https://www.luogu.org/problemnew/show/P3809简单的后缀排序#include<iostream>#include<cstdio>#include<cstring>#...原创 2019-04-17 01:38:50 · 126 阅读 · 0 评论 -
最长不下降子序列
定义:设有由n个不相同的整数组成的数列,记为:a(1)、a(2)、……、a(n)且a(i)<>a(j) (i<>j)例如3,18,7,14,10,12,23,41,16,24。若存在i1<i2<i3< … < ie (1<=i<=n)且有a(i1)<a(i2)< … <a(ie)则称为长度为e的不下降序列。...原创 2018-11-23 00:18:29 · 1689 阅读 · 0 评论 -
动态规划 -----入门练习1
现在1~Q个时间段内有n(n<100)个工作,每个工作都有各自的开始时间start,结束时间end和工作所得钱p,工作时间有重叠 ,现问在这段时间内所得钱最多为多少?输入:81 4 53 5 10 6 84 7 43 8 65 9 36 10 28 11 4输出:13#include<iostream>using namespac...原创 2018-11-12 20:34:24 · 158 阅读 · 0 评论 -
洛谷P1216数字三角形
题目描述观察下面的数字金字塔。写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的样例中,从7 到 3 到 8 到 7 到 5 的路径产生了最大输入输出格...原创 2018-11-21 21:12:59 · 181 阅读 · 0 评论 -
动态规划-------入门练习2
题目一:假设有n个数 从n个数中找出任意个不相邻的数求和 计算出这个和的最大值输入: 54 1 1 9 1输出:13(最好的方案为4+9=13)#include<iostream>using namespace std;int n;//n个数 int a[100]={0};int mmax=0;int dp[100];int OP...原创 2018-11-13 13:03:58 · 165 阅读 · 0 评论 -
背包
一、01背包(每个物品放一次)一维有N个物品 背包总容量为V 每个物品有w(重量)v(价值) 每个物品放一次 在不超过V的前提下求背包所装最大价值题目:https://www.luogu.org/problemnew/show/P1048for(int i=1;i<=N;i++){ for(int j=V;j>=w[i];j--) f[j]=...原创 2018-12-03 23:22:53 · 289 阅读 · 0 评论 -
排序---逆序对
题目:https://www.acwing.com/problem/content/description/109/在进行冒泡排序的同时也就是在进行求逆序队的操作 但是复杂度较高O(n2) 级别利用归并排序可以将复杂度降至O(nlogn)级别更有趣的是 在进行归并排序时在归并的时候我们对于两个子序列求逆序对数(递归推出这两个子序列一定是有序的) 例:4 5...原创 2019-04-07 20:12:41 · 422 阅读 · 0 评论 -
数据结构C语言版(作业)之 图的创建及有关图的操作
1 邻接矩阵存图#include<iostream>#define MAXINT 32767#define MVNUM 100using namespace std;typedef char elementype;typedef struct{ elementype vexs[MVNUM];//顶点 int arcs[MVNUM][MVNUM];//矩阵 ...原创 2018-12-12 12:43:14 · 3429 阅读 · 13 评论 -
数据结构---------------线性表(下篇)之单链表
单链表特点:储存空间不连续结点(数据元素组成):数据域(储存数据)和指针域(指针)A1若用p来指向 则数据域为p->date 指针域为p->next链式储存结构: 单链表、循环链表、双向链表根据链表结点所含指针个数、指针指向、指针连接方式可将链表分为单链表、循环链表、双向链表、二叉链表、十字链表、邻接表、邻接多重表等非线性结构:二叉链表、十字链表、邻...原创 2018-09-27 22:40:59 · 801 阅读 · 0 评论 -
数据结构-----------------线性表(下篇)之循环链表
循环链表的判空L->next=L;将两个循环链表合成一个循环链表(ps: 循环链表的头指针在队尾)A->next=B->next->next;B->next=A->next;原创 2018-10-16 10:44:59 · 135 阅读 · 0 评论 -
数据结构-----------线性表(下篇)之双向链表
//----------双向链表的存储结构------------typedef struct DuLNode{ ElemType date; struct DoLNode *prior; struct DoLNode *next; } DoLNode,*DoLinkList;1)双向链表的循环判空L->next=L; // L->prior=L;...原创 2018-10-16 11:39:59 · 149 阅读 · 0 评论 -
数据结构C语言第二版(53页作业)
#include<iostream>using namespace std;typedef struct //定义顺序表 { int *elem; int length;}SqList;typedef struct LNode //定义单向链表 { int date; struct LNode *next;}LNode,*Linklist;typedef s...原创 2018-11-01 13:21:42 · 1311 阅读 · 0 评论 -
数据结构-----------------栈
栈先进后出(first int last out) #include<iostream>#define OVERFLOW -2#define OK 0#define MAXSIZE 100#define ERROR -1顺序栈//-----------------顺序栈的存储结构-------------------#define MAXSIZ 10...原创 2018-11-04 23:19:18 · 150 阅读 · 0 评论 -
数据结构----------串
串的存储结构//------串的定长顺序存储------- 作用局限 其实就是 限定长度的 string#define MAXSIZE 255typedef struct{ char ch[MAXSIZE+1]; }SString;//------串的堆式顺序存储结构----- 不限长度的stringtypedef struct{ cha...原创 2018-11-07 13:30:57 · 158 阅读 · 0 评论 -
数据结构-----------------数组
数组是由类型相同的数据元素构成的有序集合数组的顺序存储二维数组a[m][n]以一维方式存储时按位置查询首元为a[0][0]时 以行存储 LOC(i,j)=LOC(0,0)+(n*i+j)L 以列存储 LOC(i,j)=LOC(0,0)+(m*j+i)L首元为a[1][1]时 以行存储 LOC(...原创 2018-11-07 15:12:21 · 235 阅读 · 0 评论 -
数据结构----------------广义表
广义表 Ls=( a1,a2,…,ai,…,an)。①ai 是原子或者是一个广义表。②Ls是广义表的名字,n为它的长度③若ai是广义表,则称它为Ls的子表、④广义表是递归定义的(1)广义表常用表示 ① E=() E是一个空表,其长度为0。 ② L=(a,b) L是长度为2的广义表,它的两个元素都是原子,因此它是一个线性表 ③ A=(x,L)=(...原创 2018-11-07 15:26:13 · 338 阅读 · 0 评论 -
数据结构--------------队列
队列 FIFO(first in first out)#include<iostream>#define OVERFLOW -2#define OK 0#define ERROR -1#define MAXQSIZE 100循环队列//------------循环队列的顺序存储结构-----------typedef struct{ QElemTy...原创 2018-11-05 11:13:49 · 192 阅读 · 0 评论 -
数据结构C语言版(作业)之 进制转换
1)转换为八进制(栈实现)#include<iostream>using namespace std;#define MAXSIZE 100typedef struct{ int *base; int *top;}SqStack;void InitStack(SqStack &S)//初始化{ S.base=new int [MAXSIZE]; S....原创 2018-11-14 23:13:20 · 1557 阅读 · 0 评论 -
数据结构C语言版(作业)109页
1)统计字符串中不同字符出现的次数,要求 即使多次查找字符时 时间复杂度仍为O(n)#include<iostream>using namespace std;char s;int a[62]={0};int main(){ cout<<"请输入一串字符(#结尾):"; cin>>s; while(s!='#') { if(s&l...原创 2018-11-14 23:37:29 · 705 阅读 · 0 评论 -
数据结构C语言版(作业)之 二叉树的创建,遍历(递归、非递归)
1)二叉树的创建,递归遍历,深度,结点数,叶子数#include<iostream>using namespace std;typedef struct bitnode{ char data; struct bitnode *lchild,*rchild;}bitnode,*bitree; void createbitree(bitree &T){//创建二叉...原创 2018-11-20 23:33:21 · 1273 阅读 · 0 评论 -
floyd算法----------求最短路问题
floyd算法原理:动态规划问题,核心思想就是从i到j的最短路问题,但是如果存在k,使得i->k->j的距离小于i->j的距离就更新dp[i][j]值先建立一个二维数组dp[][],用来存放i->j的距离(如果dis(i,j)<0,这个算法便不能使用了)时间复杂度O(n^3) 空间复杂度O(n^2)核心代码:for(int k=0;k<...原创 2018-11-23 16:49:26 · 455 阅读 · 0 评论 -
数据结构----------哈夫曼树的创建与编码
哈夫曼树定义:哈夫曼树又称最优树,是一类带权路径最短的树。结点的带权路径:结点所代表的数乘以从根到改结点所经过的路(即改结点所在的深度-1)树的带权路径(WPL):就是指所有结点带权路径和的最小值 那到底什么叫WPL呢?举个栗子:如图所示的三颗二叉树,都含有四个叶子结点a,b,c,d,权值分别为7,5,2,4;那么它们的WPL 分别为多少呢?1 ...原创 2018-11-24 16:17:24 · 2273 阅读 · 2 评论 -
博弈论
巴什博奕题目:http://acm.hdu.edu.cn/showproblem.php?pid=2149有n个物品 ,有两个参与者A,B ,每人每次从中取[1,m]个 ,假设每人都取最优策略, 求谁最后取完物品 假设A先取 如果n=m+1,显然不管第一次A取多少个,都没办法取完,而剩下的物品B可以一次性取完,所以结果一定是B赢 因此,我们可以发现一个先取者的必胜策略,即对...原创 2018-12-03 17:49:13 · 369 阅读 · 0 评论 -
数据结构------------线性表(上篇)
线性表:由n(n>=0)个数据特性相同的元素构成的有限序列线性表中的袁旭个数n(n>=0)定义为线性表的长度,n=0时为空表非空的线性表或线性结构特点:1)存在唯一的一个数被称为“第一个”的数据元素;2)存在唯一的一个数被称为“最后一个”的数据元素;3)除第一个之外,结构中的每个数据元素均只有一个前驱(predecessor);4)除最后一个之外,结构中的每个数...原创 2018-09-19 22:39:22 · 362 阅读 · 0 评论