自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 C/C++ 二叉堆

二叉堆是一棵满足“堆性质”的完全二叉树。以小根堆为例,其“堆性质”是指:树上每个结点的权值都小于等于其左右子节点的权值。(大根堆则反之)根据完全二叉树的性质,可在存储时令下标为x的结点的左子结点下标为2x,右子结点下标为2x+1。以小根堆为例,分别进行插入(Insert)、移除堆顶(Extract)、移除任意结点(Remove)操作。# include <bits/stdc++.h>using namespace std;const int INF = ~(1<<31)

2022-04-02 12:07:23 1375

原创 C/C++ Hash表

Hash表由hash函数(映射函数)与邻接共同实现,常用于将庞大的信息映射到一个更小的值域内进行维护。(如统计序列中不同数字出现的次数)当hash函数设计较好时,原始信息会被较均匀地分配到各个表头之后,从而使每次查找的时间复杂度近似为O(1)。最常用的hash函数:hash(x) = (x mod P) + 1(P是一个较大的质数),这样能使x从原来的值域变为1~P。例题:POJ3349 Snowflake Snow Snowflakes(有最多105片雪花,每片雪花由六个角的数值(0~107-1)组

2022-04-01 17:24:45 1390

原创 C/C++ 单调栈、单调队列

借助单调性处理问题,及时排除不可能的策略,以保持策略集合的有效性、秩序性。单调栈例题:POJ2559 直方图中的最大矩形(在一条直线上有若干个宽度为1的矩形,求包含于这些矩形的并集内部的最大的矩形的面积)。要求时间复杂度:O(N)解题思路:若矩形高度从左向右单调递增,则以每个矩形的高度乘以其到右边界的宽度得到一个面积,取这些面积中的最大值。但若在下一个位置加入一个高度低于“右边界”的矩形,那么该矩形构成的最大面积矩形的高度不会大于其自身的高度,即该矩形前面比该矩形高的矩形高度对之后的矩形的最优解

2022-03-30 23:25:38 1050

原创 C/C++ 前k小(大)数

利用基于快速排序的思想,在每次选取基准值后统计小于(大于)基准值的数的数量,将该值与k进行比较来决定是否对右(左)半段进行排序。平均时间复杂度:O(n)# include <bits/stdc++.h>using namespace std;int array[ARRAYSIZE]; // 下标1~lengthint length;int fk_k, fk_s, fk_e; // k、序列起始位置、终止位置array[]为待求序列,以下算法实现将array数组的前k(后

2022-03-19 16:22:58 729

转载 输出CSDN文章为PDF

转载自:【新】CSDN文章一键打印、输出PDF(自动阅读全文、全清爽模式)按“F12”进入开发者工具;选择“Console”;将以下代码复制到console中:(function doPrint(){ 'use strict'; var articleBox = $("div.article_content"); articleBox.removeAttr("style"); var head_str = ""; var foot_str = "";

2022-03-19 11:26:30 98

原创 C/C++ 求逆序对数

逆序对定义:对一个序列a[n],若i<j且a[i]>a[j],则a[i]与a[j]为逆序对。如:序列 3, 2, 1 的逆序对数为2+1=3。# include <bits/stdc++.h>using namespace std;TYPE array[ARRAYSIZE]; // 下标1~lengthint length; // array[]中使用的元素个数注:以下各算法均会改变原序列冒泡排序求解逆序对数即冒泡排序中交换的次数。平均时间复杂度:O(n^

2022-03-17 17:42:22 4807

原创 C/C++ 二分、倍增

二分的基础用法是在单调序列或函数中进行查找。(设array[]为一单调递增序列)// Dichotomy.cpp# include <bits/stdc++.h>using namespace std;const int INF = ~(1<<31);TYPE array[SIZE]; // 单调递增序列int length; // 为array数组中的元素个数(下标1~length)整数集合上的二分:保证最终答案处于闭区间[l, r]以内,循环以l=r结

2022-03-16 18:35:03 1728

原创 C/C++ 随机数与对拍

产生随机数C/C++C/C++// C/C++#include <iostream>#include <cstdio>#include <cstdlib>#include <ctime>using namespace std;int main() { srand((unsigned)time(NULL)); // <ctime> 使多次运行时产生不同的随机数 int r = rand(); /

2022-03-14 20:15:25 458

原创 C/C++ 多文件编程&全局变量

多文件编程&全局变量C/C++C/C++在main.cpp中使用A.cpp中定义的函数funA()。A.h// A.h#include <iostream>using namespace std;void funA();A.cpp// A.cpp#include "A.h"void funA() {cout << "This is funA() in A.cpp" << endl;}main.cpp// main.cpp#i

2022-03-14 20:09:19 1171

原创 C/C++ 快速幂

计算ab mod p。时间复杂度:O(logb)注:十进制数b在二进制下的位数为 int(log2b)+1。算法原理:十进制数b可表示为 b = ck-12k-1+ … + c121+c020 (ci=0或1,k为b的位数)所以 ab=(a2k−1)ck−1⋯(a21)c1⋅(a20)c0a^b = (a^{2^{k-1}})^{c_{k-1}}\cdots (a^{2^{1}})^{c_{1}}\cdot (a^{2^{0}})^{c_{0}}ab=(a2k−1)ck−1​⋯(a21)c1​⋅(

2022-01-13 11:32:09 186

原创 C/C++ 高精度乘法

实现十进制下100位(设置SIZE)乘法:时间复杂度:O(k1*k2) (k1表示被乘数的位数,k2表示乘数的位数)# include <bits/stdc++.h>using namespace std;# define SIZE 100int main() { char A[SIZE], B[SIZE]; int k1 = 0, k2 = 0; // length of a, b // input do scanf("%c", &A[k1++]); w

2022-01-11 16:46:48 313

原创 如何使用Dev-C++编写C源代码

打开Dev-C++;左上角:文件[F]→新建[N]→项目[P];选择Console Application确定[O]→(选择放置目录)保存[S];文件[F]→关闭[C]→()No;文件[F]→新建[N]→源代码[S]→()Yes;

2020-11-07 23:05:56 6863

原创 C/C++ 用递归实现排列组合

// 排列组合.cpp#include <iostream>#define MAXN 1000#define MAXM 1000using namespace std;int N, M, a[MAXN]; // a[]为输入的原始数组int cnt_C, cnt_P, cnt_A; // 分别计数:组合情况,全排列情况,排列组合情况bool is_A; // 是否进行排列组合void print(int arry[], int n) { // 输出函数 for (int

2020-11-07 13:53:35 1618

原创 C++运算符顺序

优先级运算符含义结合方向1::域运算符左→右2()括号,函数调用左→右[]数组下标运算符->指向成员运算符.成员运算符++自增运算符(后置)- -自减运算符(后置)3++自增运算符(前置)右→左- -自减运算符(前置)~按位取反运算符!逻辑非运算符-负号运算符+正号运算符*指针运算符&取地址运算符...

2020-09-25 21:42:10 2972

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除