......数据结构
文章平均质量分 73
Hivoodoo
这个作者很懒,什么都没留下…
展开
-
萌萌的单调栈 : poj2796 , poj2559 ,
#include #include #include #define LL long longusing namespace std;const int maxn = (int)1e6+5;LL sum[maxn]={0};struct node{ int l,r,n;}stk[maxn];int tp;node mn(int a,int b,int c){原创 2014-08-18 21:01:45 · 629 阅读 · 0 评论 -
SCU 4438 Censor(KMP / HASH)
过滤敏感词其实就是找子串 就是记录答案的时候不一样用一个类似于栈的容器记录已经匹配过的就行了 遇到匹配成功的出栈n个就行了KMP 为了出栈后能继续之前的匹配 多一个数组记录栈中当前元素的失配位置 - -KMP:#include using namespace std;const int MAXN = 5e6+10;struct KMP{ int f原创 2015-10-01 16:04:55 · 1320 阅读 · 0 评论 -
poj2828 经典线段树应用 逆序插入
之前用纸正#include #include #include #define lson num<<1#define rson num<<1|1#define gl l,(l+r)>>1,lson#define gr ((l+r)>>1)+1,r,rsonusing namespace std;const int maxn = 200原创 2014-09-06 17:35:56 · 714 阅读 · 0 评论 -
POJ2777
这题坑就坑在区间上从A到B更新询问可能出现A>B原创 2014-08-07 13:14:12 · 482 阅读 · 0 评论 -
hdu1166
///ST#include #include const int MAXN = 50005;int save[MAXN];struct ST{ int left,right,mid,val;}node[3*MAXN];void make(int l,int r,int num){ node[num].left = l ; node[num].right原创 2014-07-07 14:31:45 · 587 阅读 · 0 评论 -
Acdream 1019 Palindrome 树状数组 + 字符串hash
Acdream 1019 Palindrome这道题也算是卡了很久了 - -最近才发现有些细节没考虑到。思路是用两颗树状数组维护HASH前缀和 (一正一反两个反向)坑1:线段树不是MLE就是TLE坑2:在查出两个串后 多项式的幂是不一样的(s[3] * 1331 ^ 3 + s[4] * 1331 ^ 4 + s[5] * 1331 ^ 5 和 s[3] * 1331 ^原创 2015-10-03 13:16:12 · 491 阅读 · 0 评论 -
Aizu 2450 Do use segment tree (树链剖分)
Aizu 2450 Do use segment tree树链剖分 + 线段树区间更新,就是用线段树求区间最大连续子序列和。求区间最大连续子序列和 的 区间更新 都很好实现。要注意的是最后询问的时候多个区间合并的顺序和正反的问题(就是后面swap那儿)一开始线段树初始化那儿写残了调了好久 - ---------孙大大的板子好长啊 - -原创 2015-10-02 19:46:24 · 701 阅读 · 0 评论 -
Codeforces Round #271 (Div. 2) F - Ant colony 线段树 + GCD
Codeforces Round #271 (Div. 2) F - Ant colony题意:给定一个序列 有M个提问每次提问求 给定区间中有多少个数 不能整除区间中其他的数 至少有一次.思路:题意转化一下就是求区间中有多少个数能整除其他数.其实这个数就是区间的gcd 于是我们只要在求出区间中这个数的个数即可.对于后者 学习到一个新方法 记原创 2015-10-08 21:16:51 · 613 阅读 · 0 评论 -
UESTC 87 Easy Problem With Numbers 线段树区间更新 逆元 分解质因数
UESTC 87 Easy Problem With Numbers线段树 逆元 分解质因数原创 2015-10-09 16:12:54 · 787 阅读 · 0 评论 -
HDU 4902 Nice boat 线段树 区间更新
HDU 4902 Nice boat题意:一个序列, 两种操作. 1. 把一个区间全部更改为x2. 把一个区间比x大的数全部修改为gcd(ai,x)思路:lazy tagpushDown的原则是把该节点所有tag都推到子节点所以分情况讨论一下即可 最后到叶节点直接更新数列#include #define lson num<<1#define原创 2015-10-09 15:28:08 · 498 阅读 · 0 评论 -
SPOJ QTREE Query on a tree 树链剖分
新的树链剖分模板实验原创 2015-10-15 20:16:56 · 798 阅读 · 0 评论 -
哈夫曼编码
哈夫曼编码:哈夫曼是一种用于原创 2014-10-03 17:26:24 · 852 阅读 · 0 评论 -
poj2528(线段树+离散化)
#include #include #include #include #define gl l,(l+r)>>1,num<<1#define gr ((l+r)>>1)+1,r,num<<1|1const int MAXN = 20005;using namespace std;int pa[10005][2],save[MAXN];short dis[10000005];原创 2014-08-01 10:06:05 · 1079 阅读 · 0 评论 -
poj1182 并查集经典题 Weighted Union-Find Sets
没注意只有一个case 不知道怎么就错了 - -原创 2014-09-03 20:01:42 · 917 阅读 · 0 评论 -
hdu5444 Elven Postman(SBT)
就是一颗SBT的插入 插入的时候路径。最后询问的时候输出该路径即可。比赛的时候读错题了 以为已经输出过的节点不能再输出了 浪费了很多时间。写了个BFS - -为了省编码时间最后改成求路径也是BFS搞的 - -好菜啊TAT#include using namespace std;const int MAXN=2000;struct Node{ N原创 2015-09-14 16:25:10 · 474 阅读 · 0 评论 -
hdu5443 The Water Problem(线段树)
求区间最大值 写了一颗线段树比赛的时候第一眼就看见了这个 - -但是手速太慢了还是写了8分多钟#include #define lson num<<1#define rson num<<1|1#define gl l,m,lson#define gr m+1,r,rson#define PARA int l=1,int r=n,int num=1usin原创 2015-09-14 16:20:20 · 483 阅读 · 0 评论 -
spoj 3267 DQUIRY主席树
主席树的应用 若该位置的数出现过就把该版本的之前的位置-1 再把该版本的该位置+1,否则直接+1查询的时候 有点像zkw线段树那种 - -(哎呀..遭不住了啊..手真是贱啊..总是写错..花了一个小时debug真是菜啊TAT)#include #include #include #define lson st[num].ls#define rson st[n原创 2015-03-12 20:57:19 · 956 阅读 · 0 评论 -
hdu2665/poj2104;poj2761 区间第k小 函数式线段树
题目骗了啊!!什么 kth big number啊!! 明明是区间第k小啊!!-----------------------------------------THE 函数式 线段树 赶紧补基础 - -#include #include #include #define lson st[num].ls#define rson st[num].rsusing n原创 2015-03-11 18:17:44 · 572 阅读 · 0 评论 -
HDU 5122 树状数组应用
HDU 51222014北京站 J题题意: 给你一个1~N序列 随机选一个数 sort(向上交换 直到要交换的数比他大)问: 最好的情况要sort几次 才能变为升序列大的 在后面的 肯定要先换 不然就会档着后面的数所以用树状数组逆序插入 插入之前先查找 如果出现了比他小的数就ans++#include #include #inc原创 2014-11-30 17:05:56 · 574 阅读 · 0 评论 -
SPOJ 1716 GSS3 zkw线段树
这个线段树写起来还算简单和之前原创 2014-10-31 14:44:40 · 956 阅读 · 0 评论 -
SPOJ 1043 GSS1 zkw线段树
上海赛之前复习+提升一下..zkw原创 2014-10-26 16:36:54 · 818 阅读 · 0 评论 -
hdu4267
#include #include const int MAXN = 50005;int lowbit(int x){ return x&(-x);}int c[MAXN][11][11],n,a[MAXN];void modi(int pos,int val,int k,int mod){ while(pos>0) { c[pos]原创 2014-07-15 10:10:15 · 784 阅读 · 0 评论 -
poj1151 线段树X扫描线X离散
一开始为了节省时间设了-1遇到0就不往下搜原创 2014-08-10 10:52:08 · 728 阅读 · 0 评论 -
hdu5454 Excited Database (线段树)
hdu5454 Excited Database线段树区间更新 关键是想到和怎么用比赛是想的二维线段树之类的 苦于不知道怎么斜着更新所以就弃了题解上说的维护a[i]*i 和a[i] 其实是这样的:对于一个矩形的X+Y的值2 3 43 4 54 5 65 6 7x+y 2 3 4 56 7个数 1 2 3 32 1递增原创 2015-09-24 16:22:42 · 1106 阅读 · 0 评论