自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 两种基础hash

数字哈希模拟散列表1.拉链法#include<iostream>#include<memory.h>using namespace std;const int N = 1e5 + 3;//大于1e5的最小质数int haxi[N]; int val[N], ne[N], idx;//拉链(链表)void insert(int x){ int k = (x % N + N) % N; //将负数haxi为正数 //haxi[k]表示下标k的头结点 v.

2022-02-21 22:10:49 240

原创 简单堆排序

#include<iostream>using namespace std;const int N = 1e5 + 10;int n, m;int heap[N]; //堆int large; //堆大小void down(int k) //若k结点变大了,则做下降调整{ int t = k; if (2 * k <= large&&heap[2 * k]<heap[t])t = 2 * k; if (2 * k + 1 &...

2022-02-17 21:20:13 245

原创 关于高精度

1.高精度加法将数(长度1e6)倒叙存入vector中(方便进位运算)#include<iostream>#include<vector>#include<string>using namespace std;vector<int> add(vector<int> &a, vector<int> &b){ vector<int> c; int temp = 0; for (int i

2022-02-07 10:44:11 102

原创 关于整数二分 浮点二分

1.整数二分二分思想即对有单调性(有些可以不单调)的数列经过有限次二分,找到左右两部分的边界例如 求上述数列 ‘4’ 第一次、最后一次出现的下标,就要分别用到二分_R、二分_Lint check(int x){ //x是否在目标区间 //}int bin_search_R(int l, int r){ while (l < r) { int mid = l + r >> 1; if (check(mid))r = mid; else

2022-02-06 12:50:39 327

原创 关于几个排序(C++)

1.快速排序#include<iostream>using namespace std;const int N = 1e6 + 10;int arr[N];void quick_sort(int l, int r, int arr[])//快速排序{ if (l >= r)return; int x = arr[l + r >> 1], i = l - 1, j = r + 1; while (i < j) { do i++; while (a

2021-12-03 20:16:14 1145

原创 POJ 3299 Humidex

这题靠仔细就可ac#include<iostream>#include<cstdio>#include<string>#include<memory>#include<algorithm>#include<iomanip>#include<cstring>#include<math.h>using namespace std;char a, b;double x = 0, y = 0.

2021-11-18 21:17:03 584

原创 POJ 2159 Ancient Cipher

大意:一串全为大写字母的字符串,通过字符一一按照固定长度映射,再按一定顺序排列进行加密。判断第一串是否由第二串加密得来思路:既然字符是乱序,无需考虑顺序,统计出现次数,排序即可#include<iostream>#include<cstdio>#include<string>#include<memory>#include<algorithm>#include<iomanip>#include<cstrin.

2021-11-18 21:15:42 66

原创 POJ 2739 Sum of Consecutive Prime Numbers

DescriptionSome positive integers can be represented by a sum of one or more consecutive prime numbers. How many such representations does a given positive integer have? For example, the integer 53 has two representations 5 + 7 + 11 + 13 + 17 and 53. The

2021-11-18 21:09:34 137

原创 先中求后序 建立二叉树

class TNode{public: char data; TNode* left, *right; TNode() :left(0), right(0){}};// 先中 转后序TNode* preintopost(char *pre, char *in, int len){ if (len <= 0)return NULL; TNode *N = new TNode(); N->data = pre[1]; int i = 1; for (; pre...

2021-10-18 21:44:49 50

原创 二叉树的基本操作

const int maxn = (int)1e3 + 5;template<class T>class Myque{private: T data[maxn]; int f, r;public: Myque() :f(0), r(0){} bool empty(){ return f == r; } T front(){ return data[f]; } void pop(){ f = (f + 1) % maxn; } void push(T t){ data[r.

2021-10-15 10:54:56 85

原创 中缀表达式转后缀表达式

// 1.利用map将不同字符串按其优先顺序映射为不同等级「并且保证“(”为最低等级」//// 如:map<string> M;//// M[“+”]=1;M[“*”]=2;// 2.遇到“”,入栈// 3.遇到“”,循环输出栈元素,直到遇到“”,并将“”出栈(但不输出)// 4.遇到digit,输出// 5.遇到运算符,循环输出栈中>=此运算符的元素// 6.读取结束后,将栈清空(输出)#include <iostream>#include <a.

2021-10-12 15:57:00 102

原创 KMP(next)模板

为方便计算,统一从下标1开始。class mystring{public: char ch[maxsize]; int length;};void get_next(char *nextt,mystring &T){ int i = 1, j = 0; nextt[1] = 0; //初始化 while (i < T.length) { if (j == 0 || T.ch[i] == T.ch[j]) { i++, j++; nextt[i] = j

2021-10-11 18:33:29 78

原创 UVA-839 Not so Mobile

#include <iostream>#include <algorithm>#include <string>#include <vector>#include <map>#include <queue>#include <sstream>#define Status int#define OK 1#define ERROR 0using namespace std;Status Judge(int.

2021-09-06 09:10:21 57

原创 UVA-548 Tree

1.递归构造树通过找该树的后序遍历数组的末位来确定根节点,然后再暴力搜寻根节点在中序遍历数组中的位置,根节点以左的就是这棵树的左子树,根节点以右的就是这棵树的右子树,再以这两棵子树的后序遍历数组和中序遍历数组向下递归,如此反复2.DFS深度搜索树#include <iostream>#include <algorithm>#include <string>#include <vector>#include <map>#in.

2021-09-05 19:12:48 51

原创 UVA-122 Trees on the level

思路(反思):1. 读取串 拆分创建树(最后别忘记释放内存(我偷懒了))2. 利用队列 实现树的层序遍历:根进队 队为空退出 否则出队 输出data域 并将出对元素的左右结点(如果有)依次入队3. 两种情况为 "not complete" 其一 树的某结点(未被赋值)为空 其二 某结点被多次赋值(不论是否相等)4. 注意输出格式 最后一个结点数据后无空格#include <iostream>#include <algorithm>#include <s

2021-09-05 13:36:12 71

原创 UVA-679 Dropping Balls

思路:1.只要确定在该子树中的小球下落次序 就可以确定小球往左走还是往右走2.第I个落下的小球 若为奇数 则往左走 且相对于左子树的下落次序为(I+1)/2若为偶数 则往右走 且相对于右子树的下落次序为I/2#include <iostream>using namespace std;int main() { int T=0; cin>>T; T++; while(T--) { int D=0,I=0;

2021-09-02 09:08:50 112

原创 UVA-12657 Boxes in a Line

思路:1.计算过大的数时 一定要注意溢出 此题longlong即可2.交换两个相邻的数时 容易出错 要分开讨论3.reverse时 其实不需要很实在地去反转(反转超时!) 用一个f记号表示状态即可 但是要注意reverse前后order1和order2操作是相反的#include<iostream>#include<stack>#include<queue>#include<map>#include<memory.h&gt...

2021-09-01 22:26:28 80

转载 UVA-11988 Broken Keyboard

思路:这题开始我自己创建单链表 超时 啧啧啧 可能是我太菜了 参考了笔者的答案(不愧是大牛)他使用的静态链表 轻松解决 就是代码有点难读#include<iostream>#include<stack>#include<queue>#include<map>#include<memory.h>#include<cstdlib>#include<cstdio>#include<algorith..

2021-09-01 20:05:25 80

原创 UVA-442 Matrix Chain Multiplication

#include<iostream>#include<stack>#include<queue>#include<map>#include<memory.h>#include<cstdlib>#include<cstdio>#include<algorithm>#include<iomanip>#include<string>#include<string.h&.

2021-08-31 18:34:42 66

原创 UVA-514 Rails

#include<iostream>#include<stack>#include<queue>#include<map>#include<memory.h>#include<cstdlib>#include<cstdio>#include<algorithm>#include<iomanip>using namespace std;const int maxn = 1010;.

2021-08-31 18:28:13 57

原创 C++ 常用读取字符串方法

string str; cin >> str; // 遇空格结束 // >> abc def // << abc //cin.get() 读取一个字符 char ch; cin.get(ch);// >c 或ch=cin.get(); cout << ch; // <c //cin.get( , ) char arr[20]; cin.get(arr, 10);//(老版串,可读取的最大字符个数(空..

2021-08-25 22:51:26 3387 1

原创 UVA-230 Borrowers

思路:本题最需要注意的一个问题是 迭代器删除时 会失效规避方法for (vector<int>::iterator i = vector.begin();i != vector.end();i++) // 这里报错 { .... i = vector.erase(i); .... }代码:#include<iostream>#include<algorithm>#include<cmath>#i...

2021-08-24 18:19:16 85

原创 UVA-12100 Printer Queue

思路:利用表示优先级的倒叙数组 和 含有优先级和编号的队列解决代码:#include<iostream>#include<algorithm>#include<cmath>#include<iomanip>#include<string>#include<cassert>#include<cctype>#include<memory.h>#include<cstdio>.

2021-08-24 15:33:58 86

原创 UVA-1595 Symmetry

代码:#include<iostream>#include<algorithm>#include<cmath>#include<iomanip>#include<string>#include<cassert>#include<cctype>#include<memory.h>#include<cstdio>#include<sstream>#include&lt

2021-08-24 11:23:06 80

原创 UVA-10391 Compound Words

工具:// string::substr string str="We think in generalities, but we live in details."; string str2 = str.substr (3,5); // "think" size_t pos = str.find("live"); // "live" 的位置(下标)pos->‘l’ string str3 = str.substr(pos); // 从下标p.

2021-08-24 10:54:07 59

原创 UVA-10763 Foreign Exchange

这道题 利用set的优势 可以快速解决#include<iostream>#include<algorithm>#include<cmath>#include<iomanip>#include<string>#include<cassert>#include<cctype>#include<memory.h>#include<cstdio>#include<sstrea.

2021-08-24 07:12:24 77

原创 UVA-10935 Throwing cards away I

#include<iostream>#include<algorithm>#include<cmath>#include<iomanip>#include<string>#include<cassert>#include<cctype>#include<memory.h>#include<cstdio>#include<sstream>#include<vect.

2021-08-23 23:19:17 119

原创 UVA-1594 Ducci Sequence

#include<iostream>#include<algorithm>#include<cmath>#include<iomanip>#include<string>#include<cassert>#include<cctype>#include<memory.h>#include<cstdio>#include<sstream>#include<vect.

2021-08-23 22:07:10 94

原创 UVA-1593 Alignment of Code

Knowledge:stringstream stringstream ssm; string t; ssm << "adf"; //输入字符串流 ssm << "123"; cout << ssm.str(); //adf123 ssm.clear(); getline(cin, t); //abc 123 \\666 jjjjj ssm << t; while (ssm >> t) //字符串流拆分.

2021-08-23 21:46:59 61

原创 UVA-1592 Database

map::countmap<char,int> mymap; char c; mymap ['a']=101; c='a'; mymap.count(c) //存在'a'的某个映射返回 1 c='b'; mymap.count(c) //不存在'b'的某个映射返回 0getline (string) string a, b; getline(cin,a,'*'); //遇到指定字符停止 getline(cin,b,'*');

2021-08-23 18:11:31 55

原创 UVA-400 Unix ls

Knowledge:格式化输出cout<<setw(5)<<setfill('0')<<a<<b;//输出5位,右对齐,不足补0 //setw(int n)只是对直接跟在<<后的输出数据起作用,而在之后的<<需要在之前再一次使用setw//setfill(char x)//dec 以十进制形式输出整数 常用//hex 以十六进制形式输出整数//oct 以八进制形式输出整数//fixed

2021-08-23 10:32:32 62

原创 UVA-136 Ugly Numbers

丑数 就是只能被2、3、5整除 不能被其他素数整除的数从小到大排列有:1,2,3,4,5,6,8,9,10,12,15......求第1500个丑数。分析最简单(笨)的方法 1到无穷大遍历 符合条件的存入数组中 不过这样暴力太麻烦其中有个比较简单的方法 可以想象 这些数都是可以被2、3、5整除 所以 丑数都是由2、3、5与较小的丑数相乘而来,因此 除了1 我们取最小的丑数2 3 5 为基准 其他丑数 一定是2x||3x||5x 从小到大 巧妙利用STL容器set 存储一定范围内的丑数 .

2021-08-22 21:48:34 92

原创 3.2 队列

3.2.1 队列的定义//此处 牺牲一个位置 来区分队列的 判空 和 满列bool QueueFull(SqQueue &Q)//队满{ return (Q.rear + 1) % MaxSize == Q.front;}3.2.2 顺序队列1)定义#define MaxSize 10 //定义 队列 元素最大数typedef struct SqQueue{ int data[MaxSize]; int front, rear; //队列 头...

2021-08-11 18:27:33 54

原创 3.1 栈

3.1.1 栈的定义3.1.2 栈的顺序存储1)顺栈 定义#define MaxSize 10 //定义 栈 元素最大数typedef struct Stack{ int data[MaxSize]; //静态数组 存放元素 int top; //栈顶下表(指针)}SqStack;2)栈的初始化void InitStack(SqStack &S) //初始化栈 { S.top = -1; }3)栈的判空bool Empty(Sq...

2021-08-09 21:23:48 66

原创 2.3 线性表的链式表示

2.3.1 单链表的定义typedef struct //定义 单链表节点 类型:结构体{ int data; //数据域 struct LNode *next; //指针域}LNode,*LinkList; //LNode:强调节点 LinkList:强调链表链表又分为 有头节点,无头结点 头指针始终指向链表第一个节点无头结点:(无头结点 写代.

2021-08-06 12:32:07 160

空空如也

空空如也

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

TA关注的人

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