2017.6.4 入门组 NO.6——树
来源:互联网 发布:什么是移动云计算 编辑:程序博客网 时间:2024/05/22 12:35
80%:做不出100%,先来个80分水法 首先将x,y之间有边的记录两个,存在a数组里,一个是x,y,另一个是y,x 然后将这个a数组排序,将a[i,1]按升序排序。 Then 就可以求出每一个点与多少个点有边,求出每一个点的"子点"的区间,用l和r数组存 再用dfs求出以1作根,每一个点的father是谁 预处理Over 如果为1,新建一个数组k来存它们的变化; 如果为2,就从这个点往回推,如果为偶数次就+k[j],如果为奇数次就-k[j],j=father[j]
80%代码:
var a:array[0..200000,1..2]of longint; father,l,r,k,d:array[0..100000]of longint; v:array[0..100000]of boolean; n,m,i,j,z,y,x,w:longint;procedure qsort(l,r:longint);var i,j,mid:longint;begin if l>=r then exit; i:=l; j:=r; mid:=a[(l+r) div 2,1]; repeat while a[i,1]<mid do inc(i); while a[j,1]>mid do dec(j); if i<=j then begin a[0]:=a[i];a[i]:=a[j];a[j]:=a[0]; inc(i);dec(j); end; until i>j; qsort(i,r); qsort(l,j);end;procedure find_father(x:longint);var i:longint;begin v[x]:=false; for i:=l[x] to r[x] do if v[a[i,2]]=true then begin father[a[i,2]]:=x; find_father(a[i,2]); end;end;begin readln(n,m); for i:=1 to n do read(d[i]); readln; for i:=1 to n-1 do begin readln(x,y); a[i*2-1,1]:=x; a[i*2-1,2]:=y; a[i*2,1]:=y; a[i*2,2]:=x; end; qsort(1,(n-1)*2); for i:=1 to (n-1)*2 do begin if a[i,1]<>a[i-1,1] then l[a[i,1]]:=i; if a[i,1]<>a[i+1,1] then r[a[i,1]]:=i; end; fillchar(v,sizeof(v),true); find_father(1); for i:=1 to m do begin read(x); if x=1 then begin readln(j,y); k[j]:=k[j]+y; end; if x=2 then begin readln(w); j:=w;y:=0;z:=d[w]; while j<>0 do begin y:=1-y; if y=0 then z:=z-k[j] else z:=z+k[j]; j:=father[j]; end; writeln(z); end; end;end.
阅读全文
1 0
- 2017.6.4 入门组 NO.6——树
- 2017.6.4 入门组 NO.4——猜数
- 2017.6.4 入门组 NO.2——睡眠
- 2017.6.4 入门组 NO.3——字符串
- 2017.6.4 入门组 NO.5——序列
- 2017.6.4 入门组 NO.1——k好数
- 2017.6.4 入门组 NO.7——K上升段
- NOJ1091Black Vienna——人工智能?No...No...No...二分+枚举
- Scala入门No.1
- 2016蓝桥杯B组——NO.6
- 2016蓝桥杯B组——NO.4
- Xamarin.Forms入门困扰与解决方式-No.4
- Xamarin.Forms入门困扰与解决方式-No.4
- (入门no.4)非递归Fibonaccci数列
- Java入门到精通——调错篇之Eclipse No Java virtual machine was found after searching the following locations
- C#从入门到精通(No.1)—C#简介、C# 强大的编程功能以及环境的搭建
- 【Espruino】NO.02 快速入门
- 项目0—NO.1
- C++静态库与动态库
- 获取照片的uri
- SSH项目整合练习中遇到的问题QAQ
- 【MyBatis】动态SQL
- TensorFlow 资源汇总
- 2017.6.4 入门组 NO.6——树
- 程序中的奇葩事迹
- 表单校验
- 正整数分解质因数
- 排序之直接插入排序(初体验)
- B-1010
- 两数之和
- HDU
- jQuery