답안 #282312

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
282312 2020-08-24T09:38:53 Z infinite_iq Magic Tree (CEOI19_magictree) C++14
47 / 100
2000 ms 794104 KB
#define fast ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#include <bits/stdc++.h>
using namespace std;
#define sqr 340
#define mp make_pair
#define mid (l+r)/2
#define le node * 2 
#define ri node * 2 + 1 
#define pb push_back
#define ppb pop_back
#define fi first
#define se second
#define lb lower_bound
#define ub upper_bound
#define ins insert
#define era erase
#define C continue
#define mem(dp,i) memset(dp,i,sizeof(dp))
#define mset multiset
#define all(x) x.begin(), x.end()
#define gc getchar_unlocked
typedef long long ll;
typedef short int si;
typedef long double ld;
typedef pair<int,int> pi;
typedef pair<ll,ll> pll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<pi> vpi;
typedef vector<pll> vpll;
typedef pair<double,ll>pdi;
const ll inf=1e18;
const ll mod=998244353;
const ld Pi=acos(-1) ;
ll n , m , k ;
vll v [100009] ;
pll fruit [100009] ;
ll dp [100009][1001] ;
unordered_map < int , int > id ;
void dfs ( int node ) {
        for ( auto u : v [node] ) {
                dfs ( u ) ;
                for ( int i = 0 ; i < k ; i ++ ) {
                        dp [node][i] += dp [u][i] ;
                }
        }
        dp [node][fruit[node] .se] += fruit[node] .fi ;
        for ( int i = 1 ; i < k ; i ++ ) {
                dp [node][i] = max ( dp [node][i] , dp [node][i-1] ) ;
        }
}
int main () {
        cin >> n >> m >> k ;
        for ( int i = 2 ; i <= n ; i ++ ) {
                int a , b = i ;
                cin >> a ;
                a -- , b -- ;
                v [a] .pb ( b ) ;
        }
        set < int > s ;
        for ( int i = 0 ; i < m ; i ++ ) {
                int node , day , w ;
                cin >> node >> day >> w ;
                node -- , day -- ;
                fruit [node] = { w , day } ;
                s .ins ( day ) ;
        }
        int N = 0 ;
        for ( auto u : s ) {
                id [u] = N ++ ;
        }
        for ( int i = 0 ; i < n ; i ++ ) {
                if ( fruit [i] .fi ) {
                        fruit [i] .se = id [fruit[i].se] ;
                }
        }
        k = N ;
        dfs ( 0 ) ;
        cout << dp [0][k-1] << endl ;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2688 KB Output is correct
2 Correct 2 ms 2816 KB Output is correct
3 Correct 2 ms 2816 KB Output is correct
4 Correct 2 ms 2688 KB Output is correct
5 Correct 2 ms 2688 KB Output is correct
6 Correct 2 ms 2816 KB Output is correct
7 Correct 2 ms 2816 KB Output is correct
8 Correct 2 ms 2816 KB Output is correct
9 Correct 2 ms 2816 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2144 ms 769952 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 9856 KB Output is correct
2 Correct 9 ms 9984 KB Output is correct
3 Correct 9 ms 9856 KB Output is correct
4 Execution timed out 2104 ms 69860 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 457 ms 410104 KB Output is correct
2 Correct 462 ms 409592 KB Output is correct
3 Correct 426 ms 414072 KB Output is correct
4 Correct 386 ms 409016 KB Output is correct
5 Correct 410 ms 419448 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2688 KB Output is correct
2 Correct 2 ms 2816 KB Output is correct
3 Correct 2 ms 2816 KB Output is correct
4 Correct 2 ms 2688 KB Output is correct
5 Correct 2 ms 2688 KB Output is correct
6 Correct 2 ms 2816 KB Output is correct
7 Correct 2 ms 2816 KB Output is correct
8 Correct 2 ms 2816 KB Output is correct
9 Correct 2 ms 2816 KB Output is correct
10 Correct 431 ms 423544 KB Output is correct
11 Correct 410 ms 415736 KB Output is correct
12 Correct 396 ms 427640 KB Output is correct
13 Correct 340 ms 421992 KB Output is correct
14 Correct 379 ms 433016 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 191 ms 160248 KB Output is correct
2 Correct 924 ms 790112 KB Output is correct
3 Correct 923 ms 790392 KB Output is correct
4 Correct 1039 ms 790524 KB Output is correct
5 Correct 1020 ms 788892 KB Output is correct
6 Correct 1051 ms 791584 KB Output is correct
7 Correct 961 ms 794104 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2688 KB Output is correct
2 Correct 2 ms 2816 KB Output is correct
3 Correct 2 ms 2816 KB Output is correct
4 Correct 2 ms 2688 KB Output is correct
5 Correct 2 ms 2688 KB Output is correct
6 Correct 2 ms 2816 KB Output is correct
7 Correct 2 ms 2816 KB Output is correct
8 Correct 2 ms 2816 KB Output is correct
9 Correct 2 ms 2816 KB Output is correct
10 Correct 9 ms 9856 KB Output is correct
11 Correct 9 ms 9984 KB Output is correct
12 Correct 9 ms 9856 KB Output is correct
13 Execution timed out 2104 ms 69860 KB Time limit exceeded
14 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2688 KB Output is correct
2 Correct 2 ms 2816 KB Output is correct
3 Correct 2 ms 2816 KB Output is correct
4 Correct 2 ms 2688 KB Output is correct
5 Correct 2 ms 2688 KB Output is correct
6 Correct 2 ms 2816 KB Output is correct
7 Correct 2 ms 2816 KB Output is correct
8 Correct 2 ms 2816 KB Output is correct
9 Correct 2 ms 2816 KB Output is correct
10 Execution timed out 2144 ms 769952 KB Time limit exceeded
11 Halted 0 ms 0 KB -