acm—数据结构
文章平均质量分 60
iwillsucceed555
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
joj2475
<br />#include<stdio.h><br />int heapsize,a[2005];<br />int x[10001],y[10001],min[2005];<br />void max_heap(int i){<br />int largest=i,temp;<br />int l=(i<<1)+1;<br />int r=l+1;<br />if(l<heapsize&&a[l]>a[i])<br /> largest=l;<br />if(r<heapsize&&a[r]>a[lar原创 2010-08-10 18:38:00 · 380 阅读 · 0 评论 -
joj1317
<br />#include <iostream><br />#include <string><br />using namespace std;<br />char stack[30];//用栈依次将右孩子入栈,实现树后序遍历序列的存放<br />int top;<br />void Recovery_Tree(string pre,string in) //重新构造二叉树<br />{<br /> int len_pre=pre.length();<br /> int index; //每次记录的是原创 2010-08-10 18:40:00 · 369 阅读 · 0 评论 -
joj1044
栈的应用原创 2010-08-10 18:44:00 · 401 阅读 · 0 评论 -
joj1141
<br />/*<br /> 基本数据结构,模拟栈元素的进出的操作,同一时刻是出栈就是入栈 <br /> 判断中转站中的元素是否跟输入的出栈的元素相同,相同的话就让元<br /> 素出中转站,不相同的话就让还没进中转栈中的元素进入中转站 <br />*/<br />#include<stdio.h><br />#define MAX 1024<br />int target[MAX],stack[MAX]; <br />int main()<br />{<br /> int n,i,A,j;<b原创 2010-08-10 18:45:00 · 421 阅读 · 0 评论 -
poj1028
<br />#include<iostream><br />#include<stack><br />#include<string><br />using namespace std;<br />int main(){<br /> string ss,aa;<br /> stack<string> f;<br /> stack<string> b;<br /> ss="http://www.acm.org/";<br /> while(cin>>aa){<br /> if(aa=="QUIT")<br原创 2010-08-10 18:47:00 · 365 阅读 · 0 评论 -
hdoj2492
<br />第一次接触线段树,所以这题是基本上是照着别人的代码写的!!!<br /> <br />思路:树状数组还不会,只好用线段树做,蛮慢的。先是条件2,可以转化为:裁判的家必须在这两个运动员的家之间,所以问题实质就是在一个序列中,有多少组n[i] < n[k] < n[j],其中 i<k<j。对每一个裁判进行枚举,则每个裁判能举办的比赛数为:le_min[i] * ri_max[i] + le_max[i] * ri_min[i]。然后就是运用2次线段树,一次从左插入数据,一次从右插入数据,计算出上面各原创 2010-09-28 22:25:00 · 442 阅读 · 0 评论 -
树状数组模板
我们也不难发现,这个k就是该节点在树中的高度,因而这个树的高度不会超过logn。 所以,当我们修改A[i]的值时,可以从C[i]往根节点一路上溯,调整这条路上的所有C[]即可, 这个操作的复杂度在最坏情况下就是树的高度即O(logn)。 另外,对于求数列的前n项和,只需找到n以前的所有最大子树,把其根节点的C加起来即可。 不难发现,这些子树的数目是n在二进制时1的个数,或者说是把n展开成2的幂方和时的项数, 因此,原创 2010-10-03 12:43:00 · 639 阅读 · 0 评论 -
poj 1195
<br />二维树状数组简单题,也就是求矩阵连续区间的和!!!<br /> <br /> <br />#include<stdio.h><br />#include<string.h><br />#define S 1025<br />int c[S][S];<br />void update(int x,int y,int add)<br />{<br /> for(int i=x;i<S;i+=i&(-i))<br /> for(int j=y;j<S;j+=j&(-j))<br /> c[i][原创 2010-10-03 21:10:00 · 461 阅读 · 0 评论 -
poj 2352
学习了线段树之后,今天开始学习树状数组,还有很多不明白的地方,在几位同学的帮助下,基本达到了,虽然不懂,但这道入门题还是能AC的。。。。。。还得在今后的学习中进一步加强对线段树和树状数组的理解和运用!!!#include #include #define M 32005 int c[M]; int ans[M]; int getsum(int k) { int t=0; while(k>0) { t+=c[k]; k-=k&(-k); } return t; } void change(int k,int原创 2010-10-02 21:02:00 · 398 阅读 · 0 评论
分享