博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CF 429C
阅读量:6290 次
发布时间:2019-06-22

本文共 1867 字,大约阅读时间需要 6 分钟。

 
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
4 1 1 1 4
output
YES
input
5 1 1 5 2 1
output
NO

 

中文题意:

给出一棵树中每个节点子树的大小,要求每个非叶节点至少有2个儿子,问是否能构造出这样一棵树

 

解法:

N<=24,因此可以用状压解。

首先可以证明如果叶节点<N/2,那么肯定无解

所以我们可以把非叶节点和叶节点分开处理。

我们每次其实就是要往一个非叶点里塞点,或者说给每个点找父节点

我们设状态 f[i][j][k]为已塞完前i个非叶节点,非叶节点是否被塞过(即是否已有父节点的状态为j,还有k个叶节点没有父节点

然后对于每个点,枚举塞哪些非叶节点即可

 

#include
#include
#include
#include
#include
using namespace std;bool f[14][8201][14];int zt[9011],num[9011];int a[101];int n,i,j,k,cnt,t;void Work(int x,int y,int z){ int lef,i,yf; for(i=0;i<(1<
=0&&lef<=z){ if(lef+num[i]>1)f[x][y|i][z-lef]=true; } }}int main(){ scanf("%d",&n); for(i=1;i<=n;i++){ scanf("%d",&k); if(k==1)cnt++; else a[++t]=k; } for(i=1;i

 

转载于:https://www.cnblogs.com/applejxt/p/4525437.html

你可能感兴趣的文章
Java中的锁
查看>>
节省60%费用!巧用阿里云归档存储降低基因测序成本
查看>>
《Adobe Dreamweaver CS6中文版经典教程》——1.7 创建自定义的快捷键
查看>>
linux学习笔记三: secureCRT小键盘输入数字键的时候,出现字母的解决方法:
查看>>
beego打印请求http内容
查看>>
手机自动化测试:Appium源码分析之跟踪代码分析二
查看>>
老李推荐:第8章7节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-小结
查看>>
Java语言概述
查看>>
支持 web sftp的Jumpserver 1.4.2 发布
查看>>
企业环境下MySQL5.5调优
查看>>
【阿里云MVP Meetup 第四期】产业中的“图像识别”分享与探索,干货来袭!
查看>>
集体通宵发版怎么破?阿里敏捷教练开出四道“药方”
查看>>
git常用命令
查看>>
3.07-JS合并两个JSON对象
查看>>
VUE2.0 实现移动端在固定区域内的滚动效果
查看>>
angularjs入门(一)
查看>>
环境变量PATH、cp命令、mv命令、cat命令、tac命令、more、less、head、tail
查看>>
bandit系列0--10
查看>>
文本过滤之grep,egreo及fgrep 三剑客及正则表达式
查看>>
实现Singleton模式在C#
查看>>