- 博客(10)
- 收藏
- 关注
原创 线段树模板一
DescriptionInputOutput输出包含若干行整数,即为所有操作 2 的结果。#include<stdio.h>#define num 100001typedef struct node { int L, R; struct node* left, * right; long long sum; long long inc;}Node;Node tree[2 * num];//这里结构体用的指针所以开两倍叶子节点就行了,如果用直接用数组角标就应该开四倍
2020-11-15 14:52:10
132
原创 伸展树splaying代码
以下为伸展树的splaying操作代码(未含建树、插入、删除)#include<stdio.h>typedef struct node { struct node *parent,*lchild,*rchild; int val;}tree;typedef tree* Tree;void zig(Tree &root, Tree node)//逆时针单步旋转{ if (node == NULL) return; /*记录下node的父亲和祖父结点*/ Tree
2020-11-14 11:10:10
179
原创 有趣的数_oj记录
试题名称: 有趣的数时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。 3. 最高位数字不为0。 因此,符合我们定义的最小的有趣的数是2013。除此以外,4位的有趣的数还有两个:2031和2301。 请计算恰好有n位的有趣的数的个数。由于答案可能非常大,只需要输出答案除以1000000
2020-11-07 12:59:26
200
转载 快速模幂算法分享
http://10.12.162.1:5881/topic/3/rsa%E8%A7%A3%E5%AF%86%E8%BF%87%E7%A8%8B%E7%9A%84%E5%8A%A0%E9%80%9F%E6%96%B9%E6%B3%95
2020-09-24 10:35:20
282
原创 快排 芜湖~
#include <stdio.h>#include <stdlib.h>void swap(int *array,int i,int j){ int temp = array[i]; array[i] = array[j]; array[j] = temp;}void quicksort(int *array,int a,int b){ int i = a,j = b+1; while(1) { do
2020-08-01 14:59:29
184
2
原创 洛谷P1058 立体图题解
纯属自己写完题后的总结,中间借鉴了很多博客的做法。题目:P2018 立体图本题乍一看好像无从下手,其实理清逻辑关系后还是较为简单。1.用一个数组单独存储单个方块。2.创建一个输出数组(即一块画布),先创建的尽量大一点,等下再根据输入的数据计算实际需要使用的大小。3.将方块从后到前,从左到右,从下到上存入‘画布’,这样就直接解决了重叠、遮挡的问题。4.每一个位置的方块我们用一个点来表示其位置,我看到的一个大佬用的左下角顶点,故我也用左下角。根据这个位置点在画布上再画出完整的方块,画图顺序按照3中所
2020-07-29 16:16:36
405
原创 树状数组的原理及其应用(HH的项链)
树状数组主要用于查询和计算前缀和,时间复杂度为O(nlogn),普通的数组的时间复杂度O(n^2)在大数据下是不可以接受的,所以树状数组是一个非常良好的数据结构。接下来是树状数组三种重要且基本操作的函数,具体原理很多博客上都有,B站上也有讲解视频:1.lowbits函数:int lowbit(int n){return n&(-n);//树状数组核心操作×1}2.add函数:void add(int n,int now){while(n<=N){tree[n]+=no
2020-07-27 15:47:09
202
原创 归并排序(递归实现)
归并排序(递归实现)归并排序应该是稳定性排序中时间效率最高的算法归并排序概述图:如图,首先将一组序列递归拆分(分解)成多组,每组中只含一个元素。之后再归并(merging函数即为归并过程)。#include <stdio.h>#include <stdlib.h>#define maxsize 10 //排序序列长度void merging(int *left,int leftsize,int right,int rightsize) //归并函数{int
2020-07-17 15:41:26
523
原创 堆排(大顶堆C语言)
堆排(大顶堆C语言)借鉴的别人的代码自己做了一些注释便于理解#include <stdio.h>#include <stdlib.h>//这是一个大顶堆,实现从小到大排序 !!堆顶序号从1开始编号!!void swap(int k[] ,int i ,int j){int temp = k[i];k[i] = k[j];k[j] = temp;} //交换堆顶和最后一个节点的数据(具体使用时i = 1,即第一个节点下标,j就是最后一个节点的下标)vo
2020-07-15 16:27:27
410
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人