看到这题很开心啊,有印象跟以前做过的很像,貌似最近就做过一个,以时间戳为区间来建立树状数组,然后一开始我以为题意是,给x点加val,它以下的所有节点都加-val;所以一开始就以 加 和 减 建立了两个树状数组,最后 减去就是答案,写完发现跟案例对不上啊,读了题目也没发现读错了,对于那句话 我理解错了,后来看了 这个:
http://blog.csdn.net/keshuai19940722/article/details/18967661
仔细看看处理部分,我还以为分奇偶性有规律呢,后来才发现读错题目了,原来是x点加val,与它直接相连的子节点加上-val,它的子节点的子节点又加上val,以此类推。。。哈哈。。哭
跟以前那类题目做法相同,对于这棵树,进行dfs,同时记录当前层数距离跟的关系,用奇偶数来表示,然后再以各个节点被dfs的时间戳 来建立区间 让树状数组映射上去,最后奇偶分开,加的在一个树状数组里,减去的在另一个里面,然后 最后求单点值的时候 就是自己这个点 所属的 距离根节点的关系,也就是自己应该加上的值,再减去对应的另一个树状数组里的应该减去的值,然后 一开始 各个节点本身具有的值 并没有加进树状数组里,还得加上原本具有的值,这样就是答案了
然后又用线段树做了一下,也是以时间戳来搞,同时记录这个节点距离根的奇偶性,然后也是建立两颗线段树,一个记录奇数处理,一个记录偶数处理,结果不知哪里写错了,又改了很久,不行又重新写了一下,真是学啥忘啥。。。
树状数组的:
int n;int m;int c[2][200000 * 2 + 55];typedef struct Node { int l,r,val; int now;};Node node[200000 + 55];vector<int> G[200000 + 55];int cnt;void init() { memset(c,0,sizeof(c)); for(int i=0;i>n>>m) { for(int i=1;i>node[i].val; int tmp = n - 1; while(tmp--) { int u,v; scanf("%d %d",&u,&v); G[u].push_back(v); G[v].push_back(u); } return false; } return true;}int lowbit(int x) { return x&(-x);}void add(int i,int val,int *aa) { while(i 0) { sum += aa[i]; i -= lowbit(i); } return sum;}void dfs(int u,int pre,int tot) { node[u].l = cnt++; node[u].now = tot; for(int i=0;i<g int v="G[u][i];" if pre dfs node cnt cal while type cin>>type; if(type == 1) { int x,y; cin>>x>>y; //int tmp = node[x].now; //int aa = node[x].l; //int bb = node[x].r; add(node[x].l,y,c[node[x].now]); add(node[x].r + 1,-y,c[node[x].now]); } else { int x; cin>>x; //int aa = (get_sum(node[x].l,c[node[x].d]) /*- get_sum(node[x].l - 1,c[node[x].d])*/); //int bb = (get_sum(node[x].l,c[node[x].d^1])/* - get_sum(node[x].l - 1,c[node[x].d^1])*/); //int cc = 0; int ans = get_sum(node[x].l,c[node[x].now]) - get_sum(node[x].l,c[node[x].now^1]); ans += node[x].val; cout <br> <br> <p></p> <p>线段树的:</p> <p></p> <pre name="code" class="sycode">const int N = 200000 + 55;int n;int m;int nnum[N + 55];int le[N + 55],ri[N + 55],belong[N + 55];int head[N + 55];typedef struct Node { int l,r; ll sum; int lazy;};Node tree_even[N * 4 + 55],tree_odd[N * 4 + 55];typedef struct NODE { int fro,to; int nex;};NODE edge[2 * N + 55];int tot;int cnt;void add(int u,int v) { edge[tot].fro = u; edge[tot].to = v; edge[tot].nex = head[u]; head[u] = tot++;}void dfs(int u,int pre,int d) { le[u] = ++cnt; for(int i=head[u];i!=-1;i=edge[i].nex) { int v = edge[i].to; if(v == pre)continue; dfs(v,u,d^1); } belong[le[u]] = d; ri[le[u]] = cnt;}void push_up(int id,Node *tree) { tree[id].sum = tree[id>1; build(l,mid,id>1; if(r mid)update(l,r,id>1; ll ret = 0ll; if(r mid)ret += query(l,r,id>n>>m) { for(int i=1;i>nnum[i]; for(int i=1;i<n int u cin>>u>>v; add(u,v); add(v,u); } return false; } return true;}void cal() { dfs(1,-1,1); build(1,n,1,tree_even); build(1,n,1,tree_odd); while(m--) { int type; cin>>type; if(type == 1) { int x,y; cin>>x>>y; int left = le[x]; int right = ri[left]; if(belong[left]&1) update(left,right,1,y,tree_odd); else update(left,right,1,y,tree_even); } else { int x; cin>>x; int left = le[x]; ll ans; if(belong[left]&1) ans = query(left,left,1,tree_odd) - query(left,left,1,tree_even); else ans = query(left,left,1,tree_even) - query(left,left,1,tree_odd); ans += nnum[x]; cout <br> <br> <p></p> </n>

Theroottaginanhtmldocumentis.itservesasthetop-levellement thatenCapsulateslotherContent, 프로퍼 디코 언어 구조에있는 BrowserParsing을 보장합니다.

이 기사는 HTML 태그가 요소를 정의하는 데 사용되는 구문 마커이고 요소는 태그 및 내용을 포함한 완전한 단위라고 설명합니다. 그들은 웹 페이지를 구조화하기 위해 협력합니다. character count : 159

이 기사는 & lt; Head & gt의 역할에 대해 설명합니다. & lt; Body & Gt; HTML의 태그, 사용자 경험에 미치는 영향 및 SEO 영향. 적절한 구조화는 웹 사이트 기능 및 검색 엔진 최적화를 향상시킵니다.

이 기사는 HTML 태그, 등의 차이점과 시맨틱 대 프리젠 테이션 사용 및 SEO 및 접근성에 미치는 영향에 중점을 둡니다.

기사는 UTF-8에 중점을 둔 HTML에서 문자 인코딩 지정에 대해 논의합니다. 주요 이슈 : 올바른 텍스트 표시 보장, 멍청한 문자 방지 및 SEO 및 접근성 향상.

이 기사는 웹 컨텐츠를 구조화하고 스타일링하는 데 사용되는 다양한 HTML 서식 태그에 대해 논의하여 텍스트 모양에 미치는 영향과 접근성 및 SEO에 대한 시맨틱 태그의 중요성을 강조합니다.

이 기사는 고유성, 목적, CSS 구문 및 특이성에 중점을 둔 HTML의 'ID'와 '클래스'속성의 차이점에 대해 설명합니다. 웹 페이지 스타일링 및 기능에 어떤 영향을 미치는지 설명하고 모범 사례를 제공합니다.

이 기사는 스타일링 및 JavaScript 조작을위한 요소 그룹에서 HTML '클래스'속성의 역할을 고유 한 'ID'속성과 대조합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

WebStorm Mac 버전
유용한 JavaScript 개발 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
