Codeforces Round #245 (Div. 2)D(树的性质+状压+dfs)_html/css_WEB-ITnose

WBOY
풀어 주다: 2016-06-24 11:52:42
원래의
1237명이 탐색했습니다.

E. Guess the Tree

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Iahub and Iahubina went to a picnic in a forest full of trees. Less than 5 minutes passed before Iahub remembered of trees from programming. Moreover, he invented a new problem and Iahubina has to solve it, otherwise Iahub won't give her the food.

Iahub asks Iahubina: can you build a rooted tree, such that

  • each internal node (a node with at least one son) has at least two sons;
  • node i has ci nodes in its subtree?
  • Iahubina has to guess the tree. Being a smart girl, she realized that it's possible no tree can follow Iahub's restrictions. In this way, Iahub will eat all the food. You need to help Iahubina: determine if there's at least one tree following Iahub's restrictions. The required tree must contain n nodes.

    Input

    The first line of the input contains integer n (1?≤?n?≤?24). Next line contains n positive integers: the i-th number represents ci (1?≤?ci?≤?n).

    Output

    Output on the first line "YES" (without quotes) if there exist at least one tree following Iahub's restrictions, otherwise output "NO" (without quotes).

    Sample test(s)

    input

    41 1 1 4
    로그인 후 복사

    output

    YES
    로그인 후 복사

    input

    51 1 5 2 1
    로그인 후 복사

    output

    NO
    로그인 후 복사

    题意:RT


    思路:首先注意,根据每个点至少有两个孩子这个性质可以知道,为1的点的数量一定会>=n/2


                所以24个点的状态就减少为12个点的状态,敲好可以状压


                只考虑不为1的点,先按降序排序,然后一个一个选孩子,如果已经轮到i来选孩子,先检查它自己有没有被前面的点选为孩子,


                如果没有选,则不需要继续了,因为它不可能有父亲了


               如果选了,则继续为i选2个或以上的孩子,选过的点标记一下就可以了


               整个过程用递归算就可以了


    원천:php.cn
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿