数据结构
文章平均质量分 66
caoxiaoran1202
这个作者很懒,什么都没留下…
展开
-
poj 2421-Constructing Roads(经典Prime算法)
大致题意是求一颗最小生成树题目链接:http://poj.org/problem?id=2421#include#include#includeusing namespace std;int main(){ int dis[110][110],flag[110],distance; int n,q,i,j,k; while(cin>>n) { distance原创 2013-04-21 23:00:16 · 560 阅读 · 0 评论 -
Regionals 2011, Asia (KMP,字符串哈希)
题目大意:就是求满足第一个串的后k位 与 第二个串的前k位 相同的k的个数BKDR Hash Function字符串哈希做法:#include#include#include#includeusing namespace std;unsigned long long p=31; //p还可取131,1313,13131.。。unsigned long long原创 2013-09-04 14:20:06 · 380 阅读 · 0 评论 -
最长回文串模板 (Manacher's算法)o(n)复杂度
//最长回文子串#include#include#include#include#include#includeusing namespace std;#define N 1100000char s[N],str[N];//str:原串 s:处理后的串int p[N];int len;void init() //初始化,生成s{ len=strlen(str原创 2013-09-18 21:45:18 · 528 阅读 · 0 评论 -
最长公共子序列模板
#include#include#include#include#include#include#includeusing namespace std;char s1[1000];char s2[1000];int dp[1100][1100];int p[1100][1100];int len1,len2;void solve(){原创 2013-09-15 16:57:07 · 395 阅读 · 0 评论 -
数据结构模板
BFS求树的直径:vector v[110000];int vis[110000];int step[110000];int T,n,q,a,b,m;int u;int Mstep;//求树的直径void bfs(int x){ Mstep=-1;u=-1; memset(vis,0,sizeof(vis)); memset(step,原创 2013-09-01 13:56:18 · 329 阅读 · 0 评论 -
poj-2421-Constructing Roads(应用并查集)
具体参考:http://blog.csdn.net/wobuaishangdiao/article/details/8037963转载 2013-04-21 23:06:26 · 426 阅读 · 0 评论 -
hdu 3743 简单树状数组
感觉这题描述有些不明确,没有指出数字的取值范围,一开始就没有离散化,但是后来离散化后还错,才发现是long long 的问题,hdu的scanf承认int64 long long 得用cout输出#include#include#include#include#include#includeusing namespace std;#define M 100000原创 2013-08-10 21:12:43 · 423 阅读 · 0 评论 -
hdu 3333 树状数组
此题与3743相仿,但本题数据较大,需要用到离散化。如何去掉重复元素呢?采用离线算法首先将询问按右端点从小到大排序,离线处理时,记录每个元素所在位置,遇到重复元素时,从它之前出现的位置减去这个元素,这样就是的每个元素总是出现在最后。#include#include#include#include#includeusing namespace std;long l原创 2013-08-10 22:14:13 · 469 阅读 · 0 评论 -
poj 2481 树状数组
一开始根本没想到是树状数组,因为有两个端点需要处理,后来经提醒,排序后只剩下一个端点,接下来树状数组就ok了。注意:题目中下标从0开始,所以输入后都要加1,以满足树状数组下标从1开始的性质。排序后一个一个处理,前面的比后面强壮,或区间相同,处理时排除区间相同的即可。#include#include#include#include#include#include#原创 2013-08-22 20:34:48 · 389 阅读 · 0 评论 -
hdu 1892 二维树状数组
二维树状数组裸题 #include#include#include#include#include#includeusing namespace std;int c[1100][1100];int a[1100][1100];int lowbit(int x){ return x&(-x);}void init(){原创 2013-08-10 20:21:24 · 332 阅读 · 0 评论 -
poj 1195 二维树状数组
裸的二维树状数组模板题求和公式注意了。#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;int n;int c[1111][1111];int a[1111][1111]原创 2013-08-22 14:32:47 · 423 阅读 · 0 评论 -
hdu 3874 树状数组
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3874这里用到了离线算法,先将询问排序,然后用树状树组进行操作,如果一个价值没有出现过,则将其位置加上相应价值,如果出现过,则在当前位置加上该价值,而在已经出现过该价值的位置删除该价值,相当于一个移位操作,保证相同价值总出现在最后,从而保证了算法的正确性,最后用树状数组进行求和。 #in原创 2013-08-22 22:28:32 · 430 阅读 · 0 评论 -
poj 2299 树状数组
题目链接:http://poj.org/problem?id=2299题目大意:本题要用到树状数组的离散化处理,因为数据太大(1-999999999),但还是WA了两次,c[i]的范围计算错误,要用到long long . 从后向前处理,每次处理一个数,求比这个数小的个数。//poj 2299 树状数组#include#include#inc原创 2013-08-05 22:44:36 · 355 阅读 · 0 评论 -
hdu2492 (树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2492题目大意:1-n 这n个数字杂乱的排成一排,选出两个人比赛,一个人当裁判,其中裁判的标号要在两个选手之间,即:从裁判左边选一个比裁判小的标号,并从右边选一个比裁判大的标号,或从裁判左边选一个比裁判大的标号,并从右边选一个比裁判小的标号。 如果对于每个数字直接判断,肯定超时,所以考虑用树原创 2013-08-03 10:00:59 · 469 阅读 · 0 评论 -
poj 2352 树状数组
这道题是树状数组的入门题目,很简单,对于刚接触的我来说,不能算是小菜一碟,加油学习。#include#includeusing namespace std;#define Max 32005int a[Max];int c[Max];int lowbit(int i){ return i&(-i);}void insert(int k,int de原创 2013-08-01 11:00:02 · 304 阅读 · 0 评论 -
KMP算法小结
hdu1686题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686大意:求串的重复次数#include #include#include#include#include#include#includeusing namespace std;int next[11000];char p[1100];原创 2013-07-26 14:39:58 · 284 阅读 · 0 评论 -
poj 1200(字符串哈希)
一开始直接开了map,不知道要用字符串哈希。 果断TLE, 其实一共nc个字符,让每个字符对应一个0-nc的数字,则不同的长度为n的字串哈希值也不同,就是以nc为进制,不同的以数字0-nc的长度为n的数字组合唯一。#include#include#include#include#include#includeusing namespace std;char s[2700原创 2013-10-07 21:32:08 · 427 阅读 · 0 评论