poj 1987 節點距離小於等於K(樹DP)

2022-09-17 23:48:11 字數 3071 閱讀 2919

這題和poj 1741是一模一樣的

但是1741能ac的**,在這裡卻是tle,暫時沒看出**出現了問題。。

ac**:

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define mem(a,b) memset(a,b,sizeof(a))

#define pf printf

#define sf scanf

#define spf sprintf

#define pb push_back

#define debug printf("!\n")

#define maxn 40000+5

#define max(a,b) a>b?a:b

#define blank pf("\n")

#define ll long long

#define all(x) x.begin(),x.end()

#define ins(x) inserter(x,x.begin())

#define pqueue priority_queue

#define inf 0x3f3f3f3f

#define ls (rt<<1)

#define rs (rt<<1|1)

intn,m,k;

int ans,root,tot,ptr = 1

,k,son[maxn],head[maxn],f[maxn],dist[maxn],d[maxn],sum,vis[maxn];

struct nodetree[maxn<<2

];void add(int u,int v,int w)

void getroot(int x,int

fa) f[x] = max(f[x] , sum -son[x]);

if(f[x] < f[root]) root =x;

}void getdis(int x,int

fa)}

int cal(int x,int

now)

else right--;

}return

all;

}void solve(intx)}

void

init()

intmain()

sf("%d

",&k);

getroot(

1,0);

solve(root);

pf("%d\n

",ans);

}}

1741可ac,這題tle

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define mem(a,b) memset(a,b,sizeof(a))

#define pf printf

#define sf scanf

#define spf sprintf

#define pb push_back

#define debug printf("!\n")

#define maxn 40000+5

#define max(a,b) a>b?a:b

#define blank pf("\n")

#define ll long long

#define all(x) x.begin(),x.end()

#define ins(x) inserter(x,x.begin())

#define pqueue priority_queue

#define inf 0x3f3f3f3f

#define ls (rt<<1)

#define rs (rt<<1|1)

intn,m,k;

int ptr = 1

,head[maxn],vis[maxn],f[maxn],d[maxn];

intans,tot,rt,sum,son[maxn],dis[maxn],mu[maxn];

struct

node

tree[maxn

<<2

];void

init()

void add(int fa,int son,int

val)

void getroot(int root,int

fa) f[root] = max(f[root],sum-son[root]);

if(f[root]root;

}void getdis(int root,int

fa)}

int getcnt(int root,int

now)

else right--;

}return

ans;

}void solve(int

root)

}int

main()

sf("%d

",&k);

getroot(

1,0);

solve(rt);

pf("%d\n

",ans);

}return0;

}

以及:我看起來是一樣的,就是不知道tle的原因。。

poj1987 樹的點分治

題意 給你一顆n n 40000 的樹,求兩個點的距離 k的點的對數 題解 關於樹的分治,這我還是第一次遇到,決定好好總結下,以備以後再遇到這種型別的題 分治要分的均勻,而要分治一顆樹,最好的位置自然是樹的重心,由重心開始,分治子樹 這道題,對於每顆子樹,點對之間的距離分為兩種 1.過根節點 2.不...

2019 9 26節點遍歷

遍歷屬性 div container ul.list li.item p 結構 container list item 1 p li item 2 p li item vip 3 p li item 4 p li item 5 p li ul div jquery庫 jquery 3.4.1 20....

3 4 節點操作

一。元素節點的建立,新增,插入 替換,刪除 轉殖 建立節點有三種形式 1 document.createelement 元素 2 document.createtextnode 文字 3 document.createdocumentfragment document.createdocumentf...