算法
斗地主7891
总是想得多,却做得少。
展开
-
二分查找,二分上界,二分下界
#include#include#includeusing namespace std;const int masn=1e6+10;int x[masn],y[masn];//区间左闭右开,从0或1开始都可以int binary_sorce(int t,int l,int r) { int mid; while(l<r) { mid=(l+r)>>1;原创 2016-10-16 20:14:13 · 562 阅读 · 0 评论 -
kmp算法计算模式串的next值
//next数组中的值val有两种情况://1、val=-1;此时意味着主串和子串的下标都需要加1;//2、val={0,1...k-1}中的任意值,k为正在比较的第k个字符,也就是说当他们不相等时,需要回溯到val继续比较;void get_next(char *p,int n) { int i=0,k; k=next[0]=-1;//k表示当前i字符的next值,利用i求i原创 2016-11-18 19:22:27 · 2757 阅读 · 0 评论 -
codeM 初赛b轮 子串
给出一个正整数n,我们把1..n在k进制下的表示连起来记为s(n,k),例如s(16,16)=123456789ABCDEF10, s(5,2)=11011100101。现在对于给定的n和字符串t,我们想知道是否存在一个k(2 ≤ k ≤ 16),使得t是s(n,k)的子串。 输入描述:第一行一个整数n(1 ≤ n ≤ 50,000)。第二行一个字符串t(长度 ≤ 1,000,000原创 2017-06-25 20:36:57 · 391 阅读 · 0 评论 -
快排 qsort
#includeusing namespace std;const int MAX_N = 1e3+10;int vis[MAX_N];int my_qsort(int l,int r){ int temp = vis[l]; while(l < r) { while(l = temp)//由于我们选择的是最左边的数值作为参考,那么相当于他所在的位原创 2017-07-08 11:45:53 · 286 阅读 · 0 评论 -
非010串
如果一个01字符串满足不存在010这样的子串,那么称它为非010串。求长度为n的非010串的个数。(对1e9+7取模)Input一个数n,表示长度。(nOutput长度为n的非010串的个数。(对1e9+7取模)Input示例3Output示例7解释:000001011100101110111#include#include原创 2016-09-30 10:03:59 · 1008 阅读 · 0 评论 -
快排思想 求第(前)k大数
#includeusing namespace std;const int MAX_N = 1e5+10;int vis[MAX_N];int ans;int solve(int l,int r){ int p = vis[l]; while(l<r) { while(l=p) r--; swap(vis[r原创 2017-07-26 09:39:54 · 416 阅读 · 0 评论 -
根据先序 中序构造二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回实现代码/** * Definition for binary tree * struct TreeNode { * int val; *原创 2017-09-16 07:20:37 · 529 阅读 · 0 评论