芝士就是力量
bengshakalakaka
这个作者很懒,什么都没留下…
展开
-
康托展开以及逆展开
定义:康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的问题:给出一个数字n,再给出n的全排列的一个排列,问该排列在全排列中排第几位,也就是次序是多少,例如:n=3,则123在3!排列中位列第一,132位列第二算法分析:公式:解读:a[i]指的是第i位数字后面比它小的数字的数目举例...原创 2018-01-21 20:53:06 · 338 阅读 · 0 评论 -
memset初始化问题
memset填充方式是以1字节为单位对内存进行填充,对于数组进行初始化int a[2]; memset(a,0,sizeof(a)); for(int i=0; i<2; i++) { cout<<a[i]<<' '; } cout<<endl; memset(a,-1,sizeof(a));...原创 2018-03-13 19:22:37 · 1456 阅读 · 0 评论 -
最大连续字段和
HDU1231#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<cmath>#include<map>#include<stack>#include<vector&g转载 2018-04-15 20:55:06 · 600 阅读 · 0 评论 -
数论 逆元
纯逆元题目如下,便于理解:A/BTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7541 Accepted Submission(s): 5996Problem Description要求(A/B)%9973,但由于A很大,我们只给出...原创 2018-04-12 19:49:48 · 401 阅读 · 0 评论 -
卢卡斯定理
原网址:点击打开链接1#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<stack>#include<queue>#include<map&g转载 2018-04-19 20:40:57 · 236 阅读 · 0 评论 -
汉密尔顿图与欧拉图
汉密尔顿图:定义:哈密顿通路(回路)与哈密顿图 (Hamilton图) 通过图G的每个结点一次,且仅一次的通路(回路),就是哈密顿通路(回路)。存在哈密顿回路的图就是哈密顿图,引申出来一个TSP问题求解的是给定一个有向图或者无向图求解这个图中的最小汉密尔顿图 Granny's Bike发布时间: 2017年6月19日 00:27 时间限制: 1000ms 内存限制: 128...原创 2018-05-01 11:05:10 · 3639 阅读 · 0 评论 -
拓扑排序
#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<cmath>#include<map>#include<stack>#include<vector>#includ原创 2018-04-24 11:22:25 · 188 阅读 · 0 评论 -
尺取法(小白书)
SubsequenceTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 18784 Accepted: 8036DescriptionA sequence of N positive integers (10 < N < 100 000), each of them less than or equal 10000, a...原创 2018-04-25 15:08:14 · 300 阅读 · 0 评论 -
背包问题(动态规划)
01背包问题有n个重量和价值分别为wi,vi的物品,从这些物品中挑选出总重量不插过W的物品,求所有挑选方案中价值总和的最大值限制条件1<=n<=1001<=wi,vi<=1001<=W<=10000常规通法DFS#include<cstdio>#include<iostream>#include<algorithm>#i...原创 2018-04-26 18:34:12 · 297 阅读 · 0 评论 -
C++程序运行时间
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<vector>#include<ctime>using namespace std;int main(){ clock_t start, finish...原创 2018-09-15 15:21:23 · 1088 阅读 · 0 评论 -
线性方程求根
C++版1.二分法#include<cstdio>#include<iostream>#include<cmath>#include<algorithm>#include<string>using namespace std;int num[100+5];//多项式系数int n;double ep;doub...原创 2018-10-05 19:18:03 · 321 阅读 · 0 评论 -
牛顿插值法
C++代码#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>using namespace std;double x[100];double y[100];double f[100];double...原创 2018-10-12 19:59:03 · 895 阅读 · 0 评论 -
计算任意多边形面积
HDU 2036 改革春风吹满地Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 43662 Accepted Submission(s): 22421 Problem Description“ 改革春风吹满地,...原创 2018-10-12 21:40:08 · 1693 阅读 · 0 评论 -
彻底搞懂错排公式
问题:现有10本书按照顺序摆放,现要求重新排列,使得新的书的顺序中每一本书都不在原来的位置,求有多少种排列方式?这个问题推广一下,就是错排问题,是组合数学中的问题之一。考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。 n个元素的错排数记为D(n)。 研究一个排列错排个数的问题,叫做错排问题或称为更列问题OK,现在详细分析这个问题...原创 2018-10-26 21:46:09 · 19017 阅读 · 40 评论 -
n皇后问题
#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#include<algorithm>using namespace std;int res[100];int n;//节点数目int sum;//定义k为当前节点,k+1即为下一节点i...原创 2018-11-10 15:04:55 · 211 阅读 · 0 评论 -
BFS与DFS用法与区别
1.BFS是用来搜索最短径路的解是比较合适的,比如求最少步数的解,最少交换次数的解,因为BFS搜索过程中遇到的解一定是离根最近的,所以遇到一个解,一定就是最优解,此时搜索算法可以终止。这个时候不适宜使用DFS,因为DFS搜索到的解不一定是离根最近的,只有全局搜索完毕,才能从所有解中找出离根的最近的解。(当然这个DFS的不足,可以使用迭代加深搜索ID-DFS去弥补)2.空间优劣上,DFS是有优...转载 2019-01-24 23:22:31 · 2818 阅读 · 0 评论 -
卡特兰数及应用
卡特兰数(Catalan Number)是一连串整数序列,其通项公式为Catalan(n)=C2nnn+1 Catalan(n)=\frac{C_{2n}^{n}}{n+1} Catalan(n)=n+1C2nn**前几项为(从0开始):**加粗样式1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900...原创 2019-03-17 16:14:22 · 421 阅读 · 0 评论 -
迷宫问题
迷宫问题Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 28425 Accepted: 16402Description定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0...原创 2018-03-04 21:17:35 · 202 阅读 · 0 评论 -
贪心
1.区间调度问题n项工作,每项工作都在s[i]时开始,在e[i]时结束,对于每项目工作都可以选择是否参加,如果选择了参与,那么自始至终都必须全程参与,参加工作时间段不能重叠,求最多能参加多少数量工作样例:n=5s=1,2,4,6,8 e=3,5,7,9,10result=3思路:在可选择的工作中,每次都选取结束时间最早的工作#include<cstdio>#include<i...原创 2018-03-11 21:49:30 · 236 阅读 · 0 评论 -
快速幂
传统的的求幂的计算方法例如2的13次方,程序需要进行一步步运算2*2*2*2。。。。。*2,我们会发现这样在时间线上计算机会推的很远,导致时间复杂度较高,不适合大数据量的运算,所以引入快速幂的概念,设想一下,假设我们先对这个公式进行拆分,计算每一部分的2*2=4,那么公式可以转化为4*4*4*4*4*4*2(后面剩余一个2),同样再往上计算4*4=16,使得公式变为16*16*16*2,在每一小部...原创 2017-08-22 22:48:10 · 286 阅读 · 0 评论 -
Prim算法
思想:选定一个顶点,向外搜索与其他顶点相连的边的最小权值,将搜索到的顶点加入初始顶点集合,构成生成树,利用lowcost数组存储最小生成树到其他未加入生成树的点的距离,再次遍历,重复上述,直到所有点都被找到偷了我们数据结构老师的一张图,以此来进行详解,我们以一个二维数组map来存储各点之间的距离,随意选择一个顶点出发遍历(最小生成树是为了求将图中所有顶点联通的最小距离,所以总路径长度即结果原创 2017-05-21 19:39:26 · 369 阅读 · 0 评论 -
最小生成树Prim算法
#define MAX 1<<20#define M 1005int lowcost[M];//当前生成树u的集合到其他各顶点的边最短的集合//lowcost初始为出发点到其他点的距离,不断更新为二叉树int vis[M];//标记节点是否进入生成树,1为进入,0为无struct stu{ int N;//顶点个数 int e;//边的个数 int map[M]转载 2017-05-18 14:58:32 · 212 阅读 · 0 评论 -
大数计算
大数乘法#include#include#include#include#include#define inf 1<<20using namespace std;int result[1000+5];char a[1000+5];char b[1000+5];int main(){ int len1; int len2; int m,n;原创 2017-11-24 10:23:48 · 205 阅读 · 0 评论 -
next_permutation
博主网址:点击打开链接STL提供了两个用来计算排列组合关系的算法,分别是next_permutation和prev_permutation。首先我们必须了解什么是“下一个”排列组合,什么是“前一个”排列组合。考虑三个字符所组成的序列{a,b,c}。 这个序列有六个可能的排列组合:abc,acb,bac,bca,cab,cba。这些排列组合根据less-than操作符做字典转载 2017-11-12 21:44:07 · 13377 阅读 · 1 评论 -
最短路
迪杰斯特拉算法 迪杰斯特拉算法,说出来你们可能不信,去年开始接触,直到写这篇博文时才初步明白,唉,惭愧惭愧,我这脑子也没谁了,就一道HDU 2066还是在我看了一位仁兄的解题思路后才明白的,其实只有代码,,,, 但是我觉得却增加了我对该算法的理解,现在就借这位仁兄的所写谈谈我对迪杰斯特拉算法的理解吧。现附上这位仁兄的网址点击打开链接,同时感谢师哥们的讲解,哈哈哈。...原创 2017-03-17 00:04:16 · 776 阅读 · 0 评论 -
最小生成树之Kruskal算法
HDU 1233 还是畅通工程//感谢师哥指导#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>using namespace std;int n,m;int x,y;int ans;int abw...转载 2017-03-03 20:20:13 · 291 阅读 · 0 评论 -
判断一个点是否在三角形内部
在博主的程序中存在小bug,不过博主的讲解是不错的点击打开链接#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<stack>#include<queue>#incl转载 2018-02-11 13:04:37 · 882 阅读 · 0 评论 -
ACM输入
char a[100]while(gets(a)!='\0')#includeusing namespace std;char a[100+5];int main(){ int n; scanf("%d",&n); getchar(); while(n--) { gets(a); } return 0;}j原创 2018-01-21 20:03:42 · 393 阅读 · 0 评论 -
二分查找
#include#include#include#include#includeusing namespace std;int a[100000+5];int m;int text(int zz){ int low=1,high=m; int hh; while(low<=high) { hh=(low+high)/2;原创 2017-05-24 18:17:51 · 419 阅读 · 0 评论 -
组合数
希望大家有更好的方案可以交流一下,在下还是弱弱一枚,有不足之处请指教/*下面是组合数*/long long int text(int a,int b){ if(b<a-b)//选择更加靠近a的数字,可以使乘积较小,避免超出范围 { b=a-b; } long long ans=1; for(int i=a;i>=b+1;i--...原创 2017-02-28 19:42:28 · 468 阅读 · 0 评论 -
斐波那契数列
#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#define INF 1000005using namespace std;long long memo[INF]={1,2};long long fi...原创 2018-02-06 15:12:18 · 153 阅读 · 0 评论 -
STL相关
//vector的输入输出以及用sort实现快速排序#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<vector>#define N 10000using namespace std;struct stu{ ...原创 2017-05-12 21:57:43 · 745 阅读 · 0 评论 -
插入排序and归并排序
原网址#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<stack>#include<queue>#include<map>using转载 2018-02-20 20:33:17 · 265 阅读 · 0 评论 -
数论(素数以及计算方程)
判断一个数是否为质数/素数 原网址:点击打开链接bool isPrime(int num){ if(num==2||num==3)return 1; if(num%6!=1&&num%6!=5)return 0; int temp=sqrt(num); for(int i=5;i<=temp;i+=6) { if(...原创 2018-01-13 20:30:32 · 434 阅读 · 0 评论 -
KMP算法
/** 整体思路* 第一步,利用一个next数组,储存求出的模式串的回溯方案* 第二步,常规BF算法更改,将匹配失败之后的模式串指针利用next[j]求出* 第三步,常规运算*/#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>usi...原创 2017-04-17 21:13:26 · 319 阅读 · 0 评论 -
Github创建并上传新项目
经过了岁月的沧桑以及历史的沉淀,博主的第一个github项目成功啦,第一次在github上传项目,有点不是很懂,所以在此记录一下首先,点开github主界面,进入repositories界面,点击创建一个新项目填写相关信息如图所示,我们创建了一个新的项目下面演示如何上传一个项目到新创建的这个库,首先点击右侧按钮复制项目链接之后在就是本地操作了,首先需要安装git,这个自己百度啦,...原创 2019-07-01 19:31:12 · 372 阅读 · 0 评论