ACM
inWTer
学生
展开
-
About KMP算法
首先需要找到一个next数组 next数组程序:void findnext(char* t,int* next){ int cnt=0; int m=strlen(t); int i=0; int j=-1; next[0]=-1; while(i<m) { while(j>=0&&t[i]!=t[j])原创 2013-09-07 08:59:07 · 532 阅读 · 0 评论 -
sscanf和sprintf的用法
ABOUTSSCANF/SPRINTF目录:SPRINTF………………………………………………………………………………………SSCANF……………………………………………………………………………………....一、SPRINTF(sprint(字符数组,格式,字符串常量);)1. 可以将变量打印到字符串里,获取数字的字符形式程序:#include#i原创 2013-09-01 12:12:21 · 677 阅读 · 0 评论 -
线段树的建立
struct Node{ int l; int r; int num;} aNode[4*N];int data[N];void build(int l,int r,int n)//l为build的第一个编号,r为build的尾,n为以第n个节点为当前的根{ int mid=(l+r)>>1; aNode[n].l=l;原创 2013-05-18 11:09:25 · 646 阅读 · 0 评论 -
qsort函数用法
头文件:#includecmp函数:1. 比较单个字符:int cmp(const void* a,const void* b){ return*(char*)a-*(char*)b;}2. 比较字符串:intcmp(const void *a,const void *b){ char* cha=(char*)a;原创 2013-08-25 18:39:18 · 679 阅读 · 0 评论 -
遍历线段树
struct Node{ int l; int r; int num;} aNode[4*N];int data[N];int query(int l,int r,int n)//为询问以n为根节点的,从l到r的一段区间的num值{ int mid=(aNode[n].l+aNode[n].r)>>1;//其中mid为全树的中点原创 2013-05-18 11:13:19 · 1010 阅读 · 0 评论 -
单点更新线段树
struct Node{ int l; int r; int num;} aNode[4*N];int data[N];void update(int nid,int d,int n)//以n为根节点的树,修改nid编号的子节点,修改的值为d{ int mid=(aNode[n].l+aNode[n].r)>>1;//建树时得出的树(以n原创 2013-05-18 11:11:54 · 663 阅读 · 0 评论 -
二叉搜索树(树状数组)
计数函数程序:int lowbit(int k){ return k&-k;}功能:可视为每个节点的编号函数加和函数程序:int sum(int x){ int ret=0; while(x>0) { ret+=c[x]; x-=lowbit(x); } return ret;}原创 2013-09-08 10:39:27 · 733 阅读 · 0 评论