我无限Runtime Error(ACCESS_VIOLATION)。不知道怎么搞得/(ㄒoㄒ)/~~

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define for1(i,a,n) for(int i=(a);i<=(n);++i)
#define for2(i,a,n) for(int i=(a);i<(n);++i)
#define for3(i,a,n) for(int i=(a);i>=(n);--i)
#define for4(i,a,n) for(int i=(a);i>(n);--i)
#define CC(i,a) memset(i,a,sizeof(i));
using namespace std;
const int MAX=50010;
inline const int max(const int &a,const int &b){return a>b?a:b;}
inline const int min(const int &a,const int &b){return a<b?a:b;}
inline void swapp(int &a,int &b){int c=a;a=b;b=c;}
struct node{int to,nxt;}E[MAX<<1];
int N,point[MAX],cnt,sum[MAX<<2],up[MAX],lazy[MAX<<2],size[MAX],son[MAX],fa[MAX],tot,which[MAX],pos[MAX],deep[MAX],w[MAX];
inline void init(){CC(point,0);CC(deep,0);CC(sum,0);CC(up,0);CC(lazy,0);CC(size,0);CC(son,0);CC(fa,0);CC(which,0);CC(pos,0);CC(deep,0);CC(w,0);cnt=0;tot=0;}
inline void insect(int x,int y){E[++cnt].nxt=point[x];E[cnt].to=y;point[x]=cnt;}
inline void dfs1(int x){
int nmax=0,num=0;
size[x]=1;
for(int tmp=point[x];tmp;tmp=E[tmp].nxt)if(E[tmp].to!=fa[x]){
fa[E[tmp].to]=x;
deep[E[tmp].to]=deep[x]+1;
dfs1(E[tmp].to);
size[x]+=size[E[tmp].to];
if (size[E[tmp].to]>nmax){nmax=size[E[tmp].to];num=E[tmp].to;}
}son[x]=num;
}
inline void dfs2(int x){
pos[x]=++tot;which[tot]=x;
if (!son[x]) return;
up[son[x]]=up[x];
dfs2(son[x]);
for(int tmp=point[x];tmp;tmp=E[tmp].nxt)if((E[tmp].to!=fa[x])&&(E[tmp].to!=son[x])){
up[E[tmp].to]=E[tmp].to;
dfs2(E[tmp].to);
}
}
inline void pushup(int rt){sum[rt]=sum[rt<<1]+sum[rt<<1|1];}
inline void pushdown(int ln,int rn,int rt){
if (lazy[rt]!=0){
lazy[rt<<1]+=lazy[rt];
lazy[rt<<1|1]+=lazy[rt];
sum[rt<<1]+=ln*lazy[rt];
sum[rt<<1|1]+=rn*lazy[rt];
lazy[rt]=0;
}
}
inline void buildtree(int l,int r,int rt){
if (l==r){sum[rt]=w[which[l]];return;}
int mid=(l+r)>>1;
buildtree(l,mid,rt<<1);
buildtree(mid+1,r,rt<<1|1);
pushup(rt);
}
inline void addtree(int L,int R,int ad,int l,int r,int rt){
if ((L<=l)&&(r<=R)){lazy[rt]+=ad;sum[rt]+=ad*(r-l+1);return;}
int mid=(l+r)>>1;
pushdown(mid-l+1,r-mid,rt);
if (L<=mid) addtree(L,R,ad,l,mid,rt<<1);
if (R>mid) addtree(L,R,ad,mid+1,r,rt<<1|1);
pushup(rt);
}
inline void addd(int x,int y,int k){
while (up[x]!=up[y]){
if (deep[up[x]]<deep[up[y]])swapp(x,y);
addtree(pos[up[x]],pos[x],k,1,N,1);
x=fa[up[x]];
}if (deep[x]>deep[y])swapp(x,y);
addtree(pos[x],pos[y],k,1,N,1);
}
inline void query(int po,int l,int r,int rt){
if (l==r){printf("%d\n",sum[rt]);return;}
int mid=(l+r)>>1;
pushdown(mid-l+1,r-mid,rt);
if (po<=mid) query(po,l,mid,rt<<1);
else query(po,mid+1,r,rt<<1|1);
}
int main(){
int M,Q,x,y,c1,c2,k; char c;
while (~scanf("%d%d%d\n",&N,&M,&Q)){
init();
for1(i,1,N)scanf("%d",&w[i]);
for1(i,1,M){
scanf("%d%d\n",&x,&y);
insect(x,y);insect(y,x);
}deep[1]=1;
dfs1(1);
up[1]=1;
dfs2(1);
buildtree(1,N,1);
while(Q--){
c=getchar();
switch(c){
case 'I':
scanf("%d%d%d\n",&c1,&c2,&k);
addd(c1,c2,k);
break;
case 'D':
scanf("%d%d%d\n",&c1,&c2,&k);
addd(c1,c2,k*(-1));
break;
case 'Q':
scanf("%d\n",&k);
query(which[k],1,N,1);
break;
}
}
}return 0;
}

等省选完再看为什么RE吧,现在还有很多东西要学,在此存一下代码。

【HDU 3966】Aragorn's Story(未完待续)的更多相关文章

  1. HDU - 3966 Aragorn's Story(树链剖分入门+线段树)

    HDU - 3966 Aragorn's Story Time Limit: 3000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & ...

  2. javascript有用小功能总结(未完待续)

    1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...

  3. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

  4. 关于DOM的一些总结(未完待续......)

    DOM 实例1:购物车实例(数量,小计和总计的变化) 这里主要是如何获取页面元素的节点: document.getElementById("...") cocument.query ...

  5. 我的SQL总结---未完待续

    我的SQL总结---未完待续 版权声明:本文为博主原创文章,未经博主允许不得转载. 总结: 主要的SQL 语句: 数据操作(select, insert, delete, update) 访问控制(g ...

  6. virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)

    virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...

  7. MVC丶 (未完待续······)

         希望你看了此小随 可以实现自己的MVC框架     也祝所有的程序员身体健康一切安好                                                     ...

  8. 一篇文章让Oracle程序猿学会MySql【未完待续】

    一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...

  9. HDU 3966 Aragorn's Story 树链剖分+树状数组 或 树链剖分+线段树

    HDU 3966 Aragorn's Story 先把树剖成链,然后用树状数组维护: 讲真,研究了好久,还是没明白 树状数组这样实现"区间更新+单点查询"的原理... 神奇... ...

  10. [python]爬代理ip v2.0(未完待续)

    爬代理ip 所有的代码都放到了我的github上面, HTTP代理常识 HTTP代理按匿名度可分为透明代理.匿名代理和高度匿名代理. 特别感谢:勤奋的小孩 在评论中指出我文章中的错误. REMOTE_ ...

随机推荐

  1. 关于comparable与comparator的用法(即自定义集合框架用法 )

    package javastudy; import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; ...

  2. python-基础案例

    范例一: 练习:元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值 ...

  3. 在Function对象上扩展method方法

    ;(function() { /** * 在Function对象上扩展method方法 * @param {String} name 扩展的方法名称 * @param {Function} callb ...

  4. 【转】【C#】【Thread】Interlocked 轻量级锁

    为什么说它是轻量级呢?因为它仅对整形数据(即int类型,long也行)进行同步. 具体使用如下表: Interlocked.Increment(ref value) 数值加一(原子性操作) Inter ...

  5. .net 4.0 自定义本地缓存策略的不同实现

    在分布式系统的开发中,为了提高系统运行性能,我们从服务器中获取的数据需要缓存在本地,以便下次使用,而不用从服务器中重复获取,有同学可能要问,为什么不使用 分布式缓存等,注意,服务器端肯定是考虑到扩展, ...

  6. Linux下用信号量实现对共享内存的访问保护

    转自:http://www.cppblog.com/zjl-1026-2001/archive/2010/03/03/108768.html 最近一直在研究多进程间通过共享内存来实现通信的事情,以便高 ...

  7. 测试驱动开发实践 - Test-Driven Development(转)

    一.前言 不知道大家有没听过“测试先行的开发”这一说法,作为一种开发实践,在过去进行开发时,一般是先开发用户界面或者是类,然后再在此基础上编写测试. 但在TDD中,首先是进行测试用例的编写,然后再进行 ...

  8. VBA的一些使用心得

    VBA的知识比较零散,因此开一贴记录一下使用VBA时的一些方法和心得.主要针对Excel,参考在这里 1. Collection Class 大部分情况下,Collection Class是比数组(A ...

  9. android studio导jar包找不到类的解决方法

    今天更新了universal-image-loader-1.9.5.jar文件,studio死活找不到其中相关的类,上网百度试了很多办法,总算解决了,具体方法跟一篇老外的帖子的差不多,这里分享下. 解 ...

  10. UIAccessibilityElement

    UIaccessibilityElement类封装的项目信息对一些特殊的人可见,默认情况下是不可访问的.例如,一个图标或文字图像不会自动访问,因为它没有继承的UIView(或UIControl).一个 ...