
数据结构
王猛旗
在读研究僧
展开
-
Rails (堆栈)<数据结构>
题意:解题思路:栈的简单应用:#include#include#includeusing namespace std;int main (){ int N,data[1005],flag=1; while(~scanf("%d",&N)&&N) { while(1) { for(int i=1;i原创 2016-05-17 09:08:46 · 423 阅读 · 0 评论 -
Trie/Xor
题目链接/*有一个数组a1,a2,a3……an。找到一个连续子段[l,r],使得al ^ al+1 ^……^ ar达到最大。一般思路:维护前缀异或+暴力;for(int i=1;i<=n;i++) a[i]^=a[i-1];for(int i=1;i<=n;i++) for(int j=1;j<i;i++) ans=max(ans,a[i]^a[j]);数据量原创 2016-08-10 16:59:28 · 341 阅读 · 0 评论 -
Trie/最短的名字
题目链接/*简单trie树的应用,注意在初始化的时候要把cnt也初始化,不然,WA!下面的四分代码各有特点*///数组型,名字查询。#include<cstdio>#include<cstring>using namespace std;const int maxn=1000000;struct tire{ int wd[27]; int cnt; void原创 2016-08-10 14:33:21 · 450 阅读 · 0 评论 -
VJ16216/RMQ/线段树
题目链接/*单点更新,用RMQ维护最大值,add对c[i]修改,或加,或减。求[l,r]的和,用sum(r)-sum(l-1).即可。*/#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int max原创 2016-08-30 13:15:41 · 426 阅读 · 0 评论 -
POJ 3368/RMQ
题目链接/*给出一段序列,询问[L,R]区间内最大相同数的个数。用一个很巧妙地方法,转化成求区间内的最大值的问题。RMQ维护区间最大值。MAX处理:*/ for(int i=1;i<n;i++) { if(a[i]==a[i-1]) d[i]=d[i-1]+1; else原创 2016-08-29 21:05:47 · 532 阅读 · 0 评论 -
POJ3264/RMQ
题目链接/*询问一段区间内的元素差值最大是多少,用RMQ维护一个最大值和一个最小值,相减即可。*/#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=50000+5;int h;int dpmax[maxn][18];int dpmin[maxn][18];原创 2016-08-29 13:38:51 · 585 阅读 · 0 评论 -
POJ 2182/暴力/BIT/线段树
POJ 2182暴力/*题意:一个带有权值[1,n]的序列,给出每个数的前面比该数小的数的个数,当然比一个数前面比第一个数小的个数是0,省略不写,求真正的序列。(拗口)首先想到的是从前到后暴力枚举暴力枚举。数据量为8000,O(n^2)。*/#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#原创 2016-08-29 11:25:57 · 539 阅读 · 0 评论 -
HUD 1541/BIT(数状数组)
题目链接按从左到右,从下到上的顺序给出星星的坐标,计算出level为[0,n)的星星的个数。星星的level为该星星左下边(包括自己正下方的星星,但是不包括自己)星星的个数。BIT模板题。 £:把星星的下标转化成从1开始。 £:想到用BIT做。#include<cstdio>#include<cstring>#include<algorithm>using namespa原创 2016-08-28 15:30:49 · 468 阅读 · 0 评论 -
POJ 1308/并查集
题目链接/*判断一棵树:* 1、There is exactly one node, called the root, to which no directed edges point. * 2、Every node except the root has exactly one edge pointing to it. * 3、There is a unique sequence of d原创 2016-08-28 10:02:58 · 478 阅读 · 0 评论 -
1058FBI<二叉树,递归,后序遍历>
问题描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。 FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下: 1)T的根结点为R,其类型与串S的类型相同; 2)若串S的长度大于1,将串S从中间分开,分为等转载 2016-05-01 09:00:04 · 591 阅读 · 0 评论 -
最短路径问题/Spfa
题目链接题目描述给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。(1<n<=1000, 0<m<100000, s !=原创 2016-07-31 20:43:49 · 298 阅读 · 0 评论 -
HDU 1540<线段树,区间并>
题目连接 参考题意:维护各个点的连续的最大连续长度。思路:主要是维护一个区间的三个变量ll,f[i].l为起点向右的最大连续长度,rl:f[i].r为起点向左的最大连续长度,ml:[l,r]区间内的最大连续长度,便于合并。#include<cstdio>#include<algorithm>using namespace std;const int maxn=100000+100;原创 2016-07-27 16:46:17 · 434 阅读 · 0 评论 -
HDU 4027 <线段树,区间√>
题目连接题意给出一个区间,每次把[l,r]内的值√,维护区间和。坑:£:l会比r大,swap.£: 当f[i].sum=f[i].r-f[i].l+1;,不修改。因为保证每个数都大于等于1,当每个数都为1的时候,此区间不需要开根。//纯手工#include<cmath>#include<cstdio>#include<iostream>#include<algorithm>using原创 2016-07-27 11:18:24 · 553 阅读 · 0 评论 -
HDU 1698 <线段树,区间set>
题目连接题意:一条长为N的铜链子,每个结点的价值为1。有两种修改,l,r,z;z=2:表示把[l,r]区间内链子改为银质,价值为2.z=3:表示把[l,r]区间内链子改为金质,价值为3.思路:线段树,区间重设,求和。#include<cstdio>#include<cstring>using namespace std;const int maxn=100000+10;struct原创 2016-07-27 09:15:23 · 290 阅读 · 0 评论 -
POJ 3468<线段树,区间add>
题目连接//位运算 k<<1 相当于 k*2 k<<1|1 相当于 k*2+1/* 修改区间内的值,并且维护区间和。 详见代码*/#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int maxn=100000+10;原创 2016-07-26 21:51:20 · 324 阅读 · 0 评论 -
POJ 2082Lost Cows<>
题意:给出一个序列a[1....n],a[i]代表在0....i-1中比a[i]小的个数。求出这个序列。思路:1:暴力。#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<deque原创 2016-07-24 19:02:19 · 331 阅读 · 0 评论 -
POJ3321/Apple tree/(DFS序+线段树)
题目链接 Apple Tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9692 Accepted: 3217DescriptionWshxzt is a lovely girl. She likes apple very much. One day HX t原创 2016-08-12 19:48:45 · 427 阅读 · 0 评论