
王道
Yuki.Lemon
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【王道】计算某年月日是星期几(C++)
【思路】1.注意预处理-空间换时间(保存预处理所得数据所需的内存来换取实时处理所需要的时间消耗)2.预处理1-5000年中每一天与0年1月1日的天数之差(把原区间问题统一到起点确定的区间问题上去)(哈希)(将数据本身与数据存储地址联系起来)3.若输入20190101,连续八位表示 用scanf("%4d%2d%2d",&y,&m,&d);4.凡是涉及此类需要...原创 2019-09-03 20:02:48 · 713 阅读 · 0 评论 -
【王道】C++迭代器、vector用法
#include<iostream>#include<cstring>#include<vector>#include<math.h>std::vector<int> v;using namespace std;int main(int argc, char const *argv[]){ v.push_back(1);...原创 2019-09-06 21:56:01 · 232 阅读 · 0 评论 -
【王道】畅通工程 并查集
【题意】第一行输入n个城市m条道路,接下来m行对应m条道路。当n为0时结束输入。输出最少还需要建多少条道路使城镇连通#include<iostream>#include<cstring>#include<vector>#include<math.h>#include<algorithm>using namespace ...原创 2019-09-07 15:07:53 · 185 阅读 · 0 评论 -
【王道】最小生成树、并查集
【题意】输入n村庄,接下来输入n*(n-1)/2条路以及路的权值。输出最小生成树的长度#include<iostream>#include<cstring>#include<vector>#include<math.h>#include<algorithm>using namespace std;int tree[101...原创 2019-09-07 16:06:56 · 251 阅读 · 0 评论 -
【王道】Floyd算法/Dijkstra算法求最短路径0x3f3f3f3f
【最短路径之Floyd】1.Floyd算法适合全源最短路问题,它要求被解图的大小不大于200个结点;2.当图使用邻接矩阵表示时更为方便3.注意当两个结点间有多余一条边时,选择长度最小的边权值存入邻接矩阵#include<iostream>#include<cstring>#include<vector>#include<math....原创 2019-09-07 16:48:52 · 470 阅读 · 0 评论 -
【王道】拓扑排序
【拓扑排序】有向无环图,存在结点间的先后关系1.选择一个入度为0的点,作为序列的第一个结点。当该结点被选为序列的第一个顶点后,将该点从图中删去,同时删除以该结点为弧尾的所有边,得到一个新图。2.若在所有结点尚未被删去时就已经找不到入度为0的结点时,说明剩余的结点形成一个环路,拓扑排序失败,原图不存在拓扑序列。3.用队列实现 Q.front() Q.size() Q.pop()...原创 2019-09-07 21:37:56 · 606 阅读 · 0 评论 -
【王道】广度优先搜索
【题意】一个立方体迷宫,a,b,c为其长宽高,输入每个坐标的状态,0表示路,1表示墙。一个人从(0,0,0)位置出发,往相邻6个方位走一步会花1分钟,问该人能否在t分钟内走出迷宫,不能的话输出-1,能的话输出时间【思路】用队列实现广度优先搜索【限制】当遍历的到点在场外/是墙/已经过时,直接跳过不作处理【输入输出】输入:133420011100110...原创 2019-09-08 11:03:40 · 320 阅读 · 0 评论 -
【王道】倒可乐、广度优先算法
【题意】可乐体积s=n+m,n和m是另外两个杯子的体积,只能用可乐瓶和这两个杯子来回倾倒,而且上面没有刻度。问至少需要倒几次才能实现可乐的平分,如果不能实现,输出"NO".输入为0 0 0时结束。【广度优先搜索总结】1.状态。我们要确定求解问题中的状态2.状态扩展方式3.有效状态4.队列5.标记6.有效状态数7.最优【输入输出】7 4 3NO4 1 ...原创 2019-09-08 14:47:47 · 337 阅读 · 0 评论 -
【王道】汉诺塔3(递归)
【题意】在一块铜板上有三个杆,最左边的杆上自上而下有从小到大的64个圆盘。现将这64个圆盘全部迁移到右边的杆上,条件是一次只能移一个盘,而且不允许直接从最左边的盘到最右边(每次移动一定要移到中间杆或者从中间移出),也不允许大盘在小盘的上面。现在有N个圆盘,求至少移动多少次能把盘子从左边移到最右边?【递归】递归方式和递归出口是递归函数的两个重要的要素,只要明确了这两个要素,递归函数就比较容易...原创 2019-09-08 15:10:37 · 276 阅读 · 0 评论 -
【王道】素数环、回溯枚举(C++)
【题意】输入n,输出从1-n能组成的素数环#include<iostream>#include<cstring>#include<vector>#include<math.h>#include<algorithm>#include<queue>using namespace std;#define max...原创 2019-09-08 16:15:18 · 350 阅读 · 0 评论 -
【王道】装信封、错排公式(C++)(动态规划)
【题意】N封信,全部装错信封,一共有几种装错的方式?【错排公式】F[n]=(n-1)*F[n-1]+(n-1)*F[n-2]【思路】考虑n封信全部装错的情况,把n封信从1到n编号,考虑n号信封里装的是k号信封的信,而n号信封里的信装在m号信封里。根据k与m是否相等来分成两种情况讨论。1.若k不等于m,有(n-1)*f[n-1]种2.若k等于m,有(n-1)*f[n-2]种#i...原创 2019-09-08 21:09:38 · 2149 阅读 · 0 评论 -
【王道】对n的阶乘分解素因数(C++)
【题意】输入n,输出n的阶乘的素因数【样例】输入n=10输出素数+个数2:8 3:4 5:2 7:1#include<iostream>#include<cstring>#include<math.h>using namespace std;int prime[100000];int mark[100000];int pr...原创 2019-09-06 21:25:15 · 846 阅读 · 0 评论 -
【王道】高精度加法(C++)(大数运算)
【高精度加法】a,b在1000位以内【思路】构建bigint结构体,重载加法运算#include<iostream>#include<cstring>using namespace std;struct bigint{ int digit[1000]; int size;//记录一共有几位数 void ini() { memset(digit,...原创 2019-09-06 21:01:57 · 307 阅读 · 0 评论 -
【王道】今年暑假不AC(C++)
【题目大意】节目总数n,接着输入每个节目的开始和结束时间,输出能看的尽量多的节目数目【思路】按照节目结束时间排序,第一个节目一定是结束时间最早的,以此类推。#include<iostream>#include<string.h>#include<algorithm>using namespace std;struct s{ int b,e...原创 2019-09-04 16:41:04 · 519 阅读 · 0 评论 -
【王道】左右括号匹配(栈)(C++)
【堆栈】1.管理方式:栈由编译器自动分配和释放,而堆需要程序员来手动分配和释放,若忘记delete,容易产生内存泄漏2.分配方式:堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由alloca函数进行分配,但是栈的动态分配和堆是不同的,栈的动态分配是由编译器进行释放,而堆的动态分配是手动释放的。3.从这里...原创 2019-09-04 17:12:53 · 478 阅读 · 0 评论 -
【王道】实现简单加减乘除计算器(C++)
【题意】输入一个只包含+ - * / 的非负整数计算表达式,计算该表达式的值【思路】1.设立两个堆栈,一个用来保存运算符,另一个用来保存数字2.从左至右遍历字符串,若运算符栈栈顶运算符优先级小与该运算符或者此时运算符栈为空,则将该运算符压入堆栈3.若运算符栈栈顶运算符优先级大于该运算符,则弹出该栈顶运算符,再从数字栈中依次弹出两个栈顶数字,进行计算,并把结果压入数字栈,重复比较此时...原创 2019-09-05 11:21:19 · 3891 阅读 · 2 评论 -
【王道】哈夫曼树(C++)
【题意】哈夫曼树,第一行输入一个n,表示叶节点的个数。需要用这些叶节点生成哈夫曼树,根据哈夫曼树的概念,这些节点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。【样例输入输出】输入51 2 2 5 9输出37【基础】1.在一棵树中,从任意一个结点到达另一个结点的通路被称为路径,该路径上所需经过的边的个数被称为该路径的长度。2.若树中结点带有表...原创 2019-09-05 16:47:32 · 789 阅读 · 0 评论 -
【王道】给出前序和中序遍历结果,输出后序遍历结果(C++)
【题意】给出前序和中序遍历的结果,输出后序遍历结果【样例输入输出】输入FDXEAGXDEFAG输出XEDGAF#include<iostream>#include<stack>#include<string.h>#include<iomanip>#include<map>#include<que...原创 2019-09-05 17:53:27 · 1022 阅读 · 0 评论 -
【王道】构建二叉搜索树(二叉排序树)(C++)
【题意】输入n,接下来输入n个数字,由中n个数字构建二叉排序树(二叉搜索树),并输出其前中后序遍历结果。【样例输入输出】输入51 6 5 9 8输出165981568965981【注意】输入可能有重复元素,但是输出的二叉遍历序列中重复元素不用输出#include<iostream>#include<stack>#include<s...原创 2019-09-05 20:28:13 · 1415 阅读 · 0 评论 -
【王道】判断两序列是否为同一二叉搜索树序列(C++)
【题意】开始一个数n,表示有n个需要判断,n=0时输入结束,接下去一行是一个序列,没有重复数字,根据这个序列可以构造一棵二叉搜索树。接下来的n行有n个序列,判断每个序列是否与第一个序列组成同一个二叉搜索树【思路】为每一个序列构建二叉搜索树,然后判断其前序、中序遍历结果是否与第一个一样,一样的话就是同一个二叉搜索树。当然也可以选择中序和后序遍历结果,但必须包含中序遍历。【注意】只有包...原创 2019-09-05 21:03:45 · 1324 阅读 · 0 评论 -
【王道】进制转换(C++)
【题意】输入两个不超过整型定义的非负10进制整数A和B,输出A+B的m(1<m<10)进制数【输入格式】给出m和A,B的值,m=0时结束【输出格式】输出A+B的m进制【样例输入输出】8 1300 482 1 70输出25041000【注意】1.虽然输入都在int范围内,但是两个int相加有可能超出int范围2.用do while保证至少会...原创 2019-09-06 15:22:06 · 223 阅读 · 0 评论 -
【王道】素数筛法 求素数(C++)
【题意】素数筛法#include<iostream>#include<cstring>using namespace std;int prime[100001];int primesize;int mark[100001];void pd(){ int i,j; for(int i=2;i<=100000;i++) { if(mark[i...原创 2019-09-06 16:27:30 · 357 阅读 · 0 评论 -
【王道】二分求幂(C++)
#include<iostream>#include<cstring>using namespace std;int main(int argc, char const *argv[]){ int a,b; while(cin>>a) { cin>>b; int ans=1; while(b) { if(b%2)...原创 2019-09-06 16:56:02 · 227 阅读 · 0 评论 -
【王道】最长递增子序列(LIS)最长公共子序列(LCS)
【思路】动态规划【LIS】#include<iostream>#include<cstring>#include<vector>#include<math.h>#include<algorithm>#include<queue>using namespace std;#define maxi 0x3f3...原创 2019-09-08 21:24:52 · 262 阅读 · 0 评论