나무형 의존 가방
먼저 dfs 순 서 를 만 들 고 모든 점 의 하위 나무 와 자신의 크기 를 기록 합 니 다.모든 점 이 선택 되 거나 선택 되 지 않 을 수 있 으 며, 선택 되 어야 나무 가 고려 된다.f [i] [j] 를 설정 하면 dfs 순서 에서 i 위 에 있 는 점 이 서브 트 리 와 자신 에 게 독소 와 j 의 점 을 선택 하여 얻 을 수 있 는 최대 수익 을 나타 낸다.(아래 x 는 dfs 순서 에서 i 번 째 대표 점 을 가리킨다)
만약 j < cost [x], f [i] [j] = f [i + size [x] [j].이 점 과 그 서브 트 리 를 선택 할 수 없습니다 (+ size [x] 는 dfs 순서 에서 이 점 을 뛰 어 넘 는 서브 트 리 를 대표 합 니 다) 만약 j ≥ cost [x], f [i] [j] = max (f [i + 1] [j - c [x]] + v [x], f [i + size [x] [j]).마이너스 수익 이 발생 할 지 주의 하고 0 과 비교 해 야 할 지 여 부 를 선택 하 세 요.
#include
#include
#include
#include
using namespace std ;
bool Read ( int &x, char c = getchar(), bool flag = false ) {
for ( x = 0 ; !isdigit(c) ; c = getchar() ) if ( c == EOF ) return false ; else if ( c == '-' ) flag = true ;
for ( ; isdigit(c) ; c = getchar() ) x = 10*x + c - '0' ; if ( flag ) x = -x ;
return true ;
}
const int maxn = 5010, maxm = maxn<<1, zhf = 1<<28 ;
int ans, n, m, e, be[maxn], to[maxm], nxt[maxm], v[maxn], c[maxn], dfn[maxn], rdn[maxn], clk, size[maxn], f[maxn][maxn] ;
void add ( int x, int y ) {
to[++e] = y ;
nxt[e] = be[x] ;
be[x] = e ;
}
void dfs ( int x, int fa ) {
( dfn[x] = ++clk )[rdn] = x ;
size[x] = 1 ;
int i, u ;
for ( i = be[x] ; i ; i = nxt[i] ) {
u = to[i] ;
if ( u == fa ) continue ;
dfs(u,x) ;
size[x] += size[u] ;
}
}
int main() {
int i, j, k, x, y, z ;
Read(n) ; Read(m) ;
for ( i = 1 ; i <= n ; i ++ ) {
Read(v[i]) ;
Read(c[i]) ;
}
for ( i = 1 ; i < n ; i ++ ) {
Read(x) ; Read(y) ;
add ( x, y ) ;
add ( y, x ) ;
}
dfs(1,1) ;
for ( i = n ; i ; i -- ) {
x = rdn[i] ;
for ( j = 0 ; j <= m ; j ++ )
if ( j < c[x] ) f[i][j] = max ( f[i+size[x]][j], 0 ) ;
else f[i][j] = max ( max( f[i+1][j-c[x]]+v[x], f[i+size[x]][j] ), 0 ) ;
}
printf ( "%d
", f[1][m] ) ;
return 0 ;
}
Wearry 가 모 의 경기 에서 이 지식 을 언급 해 주 셔 서 감사합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
물체 검출의 평가 지표 IoU의 계산 방법Yolo나 SSD 등 물체 검출에서 평가 지표로 사용되는 IoU에 대해 조사했으므로 정리했습니다. IoU (Intersection over Union)는 두 영역이 얼마나 겹치는지를 나타내는 지표입니다. 두 영역의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.