scutcode123 bx和妹子的遊戲

2021-07-31 13:29:08 字數 1978 閱讀 7529

這天,bxbx

和妹子在乙個有根樹上玩遊戲。

這個有根樹有n

n個節點,編號從11到n

n,其中1

1號節點是根節點。除了1

1號節點每個節點都有乙個父親節點。第i

i個節點有權值a_ia​

i​​。

定義s(u, v)s(

u,v)

為uu到vv

的簡單路徑上所有點的權值之和(包括uu和v

v)。bxb

x會隨機選乙個節點u

u,妹子隨機選乙個節點v

v,假設uu和v

v的lcalc

a為pp,bxbx

能獲得\max(s(u, p), s(v, p))

max(s(

u,p)

,s(v

,p))

的愉悅值。

現在你需要回答,考慮所有情況之下(n^2n​

2​​種情況),bxbx

所獲得的愉悅值之和。

乙個節點u

u的祖先定義為從u

u一直往父親節點走若干次能到達的節點,其中u

u是自身的祖先。兩個節點的lcalc

a(最近公共祖先)定義為既是u

u的祖先,也是v

v的祖先,並且和u

u的距離最近的乙個節點。

輸入第一行包括乙個整數t

t,表示資料組數。

對於每組資料,第一行乙個整數nn。

第二行n-1n−

1個整數,第i

i個整數表示節點i+1i+

1的父親p_p​

i+1​

​。第三行n

n個整數,第i

i個整數表示節點i的權值a_ia​

i​​。

1 \le t \le 201≤

t≤20

2 \le n \le 1000002≤

n≤10

0000

1 \le p_ \le i, 1 \leq i \leq n - 11≤

p​i+

1​​≤

i,1≤

i≤n−

11 \leq a_i \leq 100001≤

a​i​

​≤10

000

對每組資料,輸出 bx 獲得的愉悅值之和。

輸入

2

31 1

1 2 321

1 2

輸出

28

9

#include#include#include#include#include#include#include#include#include#include#include//#include#include#include#includeusing namespace std;

#define ll long long

#define pii pairconst int inf = 1e9+7;

const int n = 100000 + 5;

struct edgeedge[n];

int head[n];

int a[n];

void addedge(int k,int u,int v)

ll s[n];

ll childs[n];

ll ts[n];

void dfs(int u,int sum)

}ll f(int u)

}return ans;

}ll slove(int n)

sort(s+1,s+n+1);

for(int i=1;i<=n;++i)

return ans;

}int main()

ll sub=0;

for(int i=1;i<=n;++i)

printf("%lld\n",2*slove(n)-sub);

}return 0;

}

loop和 bx 的聯合應用

計算ffff 0 ffff b單元中的資料的和,結果儲存在dx中 8086 assume cs code code segment mov ax,0ffffh mov ds,ax mov bx,0 mov dx,0 mov cx,12 s mov al,bx mov ah,0 add dx,ax i...

彙編 5 0 BX 和loop指令

1.要完整的描述乙個記憶體單元,需要兩種資訊 1.記憶體單元的位址 2.記憶體單元的長度 型別 2.表示乙個暫存器或乙個記憶體單元中的內容。如 ax 表示ax中的內容。中的元素可以有3種型別 1.暫存器名 2.段暫存器名 3.記憶體單元的實體地址 乙個20位的資料 3.約定符號idata表示常量 用...

實驗四 bx 和loop的使用

2 assume cs code code segment mov ax,0ffffh mov ds,ax mov bx,6 mov al,bx mov ah,0 mov dx,0 mov cx,3 s add dx,ax loop s mov ax,4c00h int 21hcode ends e...