算法与数据结构
Mr.路痴
静享此刻,强风吹拂
展开
-
排序(堆排序,快排,归并,希尔)
1.堆排序#include <bits/stdc++.h>using namespace std;void Adjust_Heap( int A[], int k , int n ) { //调整大顶堆 for ( ; k*2 <= n ; k *= 2 ) { int t = 2*k; if( t < n && A[t] < A[t+1] ) t ++; // t<n确保有右孩子 i原创 2020-12-20 22:19:51 · 219 阅读 · 0 评论 -
单链表的排序(插入,选择,冒泡)
1.插入排序链表的创建等系列操作代码详见单链表实现void Insert_Sort(LinkList &L) { // 插入排序,变更结点连接 Node *p = L->next, *head; // p指针指向每次要插入的结点,head指针用于找到插入的位置 Node *temp = p->next; // temp指针 指向 p指针后继结点,避免断链 p->next = NULL; // 构造一个结点的有序表原创 2020-12-20 12:27:00 · 970 阅读 · 1 评论 -
升序输出长度为5的01串(C++ bitset 用法)
升序输出长度为5的01串题目描述:对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。解法:直接暴力:用五个for循环模拟输出即可;数组模拟十进制转换二进制;#include <bits/stdc++.h>using namespace s...原创 2019-05-18 21:05:03 · 2266 阅读 · 0 评论 -
Codeforces Round #576 (Div. 1)B. Welfare State(思维/线段树)
题目:Welfare State题意:一个数组,两种操作,然后输出最终数组,两种操作是:1 p x: 表示将第 p 个数改为x;2 x: 表示将所有小于 x 的数改成 x;题解:首先用线段树肯定可以做,就是 (区间更新 + 单点更新 )。但这里我们先换个想法考虑这题:题目要求只输出最终序列,那么对于一个数来说,对他有影响的只有他的最后一次 1 操作之后的 2 操作,因为之前不管怎...原创 2019-09-25 10:45:04 · 366 阅读 · 0 评论 -
Codeforces Round #587 (Div. 3)E2. Numerical Sequence (hard version)(二分)
题目:E2. Numerical Sequence (hard version)题意:一串数11212312341234512345612345671234567812345678912345678910……有q ( q < 500 )次询问,每个询问一个k ( k <= 1e18) ,求该串数第 k 位是什么数字?解题:求的是第k位数而不是第k个数,9之后数不止一位;这...原创 2019-09-23 14:53:15 · 674 阅读 · 0 评论 -
金明的预算方案(01背包)
题目:点击跳转输入:1000 5800 2 0400 5 1300 5 1400 3 0500 2 0输出:2200解题:初看这道题,数据就 m<60, 感觉dfs就能直接搜索过,结果TLE,仔细再想一想会发现时间复杂度达到了O(m^m)。TLE代码:#include <bits/stdc++.h>using namespace std;...原创 2019-09-21 16:27:46 · 274 阅读 · 0 评论 -
区间求不重复值的和(树状数组求解)
题目:Galahad解题思路:关键是要先把询问的几个区间先存起来,将其按照区间的右端点从小到大排序,这样当去掉某一区间内的重复值时就不会影响其他区间,因为其他区间的右端点要么比它小,要么比它大,比它小的不会受影响(因为树状数组向上更新),比他大的恰好也要去重。去重时就利用map。#include <bits/stdc++.h>using namespace std;type...原创 2019-09-19 10:57:09 · 367 阅读 · 0 评论 -
线性表之单链表
线性表之单链表c语言实现#include<stdio.h>#include<malloc.h>#include<time.h>#define OK 1#define ERROR 0typedef int ElemType;typedef int Status;typedef struct node{ ElemType data; ...原创 2018-11-15 01:15:24 · 547 阅读 · 1 评论 -
栈的实现(c语言)
#include&lt;stdio.h&gt;#include&lt;malloc.h&gt;#include&lt;stdlib.h&gt;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#define STACK_INIT_SIZE 100#define STACKINCRE...原创 2018-11-16 00:14:24 · 267 阅读 · 0 评论 -
二叉树的递归遍历
二叉树的递归遍历简单递归遍历二叉树.#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#define OK 1#define ERROR 0#define OVERFLOW -1#define TRUE 1#define FALSE 0#define SIZEINIT 10#define INCRESIZE 5typedef i...原创 2019-01-10 18:53:21 · 4282 阅读 · 3 评论 -
括号匹配问题(栈的运用)
栈的运用以及STL stack的用法题目描述:在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$“标注,不能匹配的右括号用”?"标注。题意:字符串匹配,如果 ‘(’ 有 ‘)’ 与...原创 2019-05-18 22:32:17 · 1067 阅读 · 0 评论