Description

​ 给出一个数组a,要求构造一颗树,使节点x距离最远的点的距离为\(a_x\)。

Input

​ 第一行一个正整数NN(2≤N≤1002≤N≤100)

​ 接下来一行,有NN个正整数,描述序列a1,a2,...,aNa1,a2,...,aN(1≤ai≤N−11≤ai≤N−1)

Output

​ 如果对于输入的序列存在这样的树,则输出"Possible",否则输出"Impossible"。二者皆不含引号。

Sample Input

#Sample Input 1
5
3 2 2 3 3 #Sample Input 2
3
1 1 2 #Sample Input 3
10
1 2 2 2 2 2 2 2 2 2 #Sample Input 4
10
1 1 2 2 2 2 2 2 2 2 #Sample Input 5
6
1 1 1 1 1 5 #Sample Input 6
5
4 3 2 3 4

Sample Output

#Sample Output 1
Possible #Sample Output 2
Impossible #Sample Output 3
Possible #Sample Output 4
Impossible #Sample Output 5
Impossible #Sample Output 6
Possible

HINT

​ 对于第一组样例,有如下美妙树:

​ 黑边表示原树边,而红边表示的是距离每一个点最远的点是谁。

Sol

显然只要能把直径构造出来,那么剩下的点无论如何也能构造出来,首先判断最小的\(a_i\)能否达到\(直径长度\lceil\frac{直径长度}{2}\rceil\),然后我们枚举直径长度到\(直径长度\lceil\frac{直径长度}{2}\rceil\)的所有长度,如果不到两个那么就不可行,否则可行。注意如果直径长度是偶数的话\(直径长度\lceil\frac{直径长度}{2}\rceil\)有一个就可以了。

Code

#include <bits/stdc++.h>
using namespace std;
int a[105],b[105],n,mid,g;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]),b[a[i]]++;
sort(a+1,a+n+1,greater<int>());mid=(a[1]+1)>>1,g=(a[1]&1)+1;
if(a[n]<mid||b[mid]!=g) return puts("Impossible"),0;
for(int i=a[1];i>mid;i--) if(b[i]<2) return puts("Impossible"),0;
puts("Possible");
}

[AGC005C]Tree Restoring 构造的更多相关文章

  1. Tree Restoring

    Tree Restoring Time limit : 2sec / Memory limit : 256MB Score : 700 points Problem Statement Aoki lo ...

  2. ZOJ 3965 Binary Tree Restoring

    Binary Tree Restoring 思路: 递归 比较a序列和b序列中表示同一个子树的一段区间,不断递归 代码: #include<bits/stdc++.h> using nam ...

  3. zoj 3965 Binary Tree Restoring(搜索)

    Binary Tree Restoring Time Limit: 1 Second      Memory Limit: 65536 KB      Special Judge Given two ...

  4. C#结合Jquery LigerUI Tree插件构造树

    Jquery LigerUI Tree是Jquery LigerUI()的插件之一,使用它可以快速的构建树形菜单.呵呵 废话不说了,直入正题,下面介绍C#结合ligerui 构造树形菜单的两种方法 1 ...

  5. VK Cup 2016 - Round 1 (Div. 2 Edition) C. Bear and Forgotten Tree 3 构造

    C. Bear and Forgotten Tree 3 题目连接: http://www.codeforces.com/contest/658/problem/C Description A tre ...

  6. 2017浙江省赛 H - Binary Tree Restoring ZOJ - 3965

    地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3965 题目: iven two depth-first-search ...

  7. AtCoder - 2061 Tree Restoring

    Problem Statement Aoki loves numerical sequences and trees. One day, Takahashi gave him an integer s ...

  8. codeforce 1311E. Construct the Binary Tree (构造,就是个模拟)

    ACM思维题训练集合 You are given two integers n and d. You need to construct a rooted binary tree consisting ...

  9. Huffman Tree 简单构造

    //函数:构造Huffman树HT[2*n-1] #define MAXVALUE 9999//假设权值不超过9999 #define MAXLEAF 30 #define MAXNODE MAXLE ...

随机推荐

  1. transfrom-runtime文档

    transfrom-runtime文档 babel只会默认对句法进行转换,而那些方法,api不会转换,要转就要使用polyfill和transform,这里介绍transform,关于polyfill ...

  2. 7.solr学习速成之facet

    Facet 介绍   Facet 是 solr 的高级搜索功能之一 ,可以给用户提供更友好的搜索体验,在搜索关键字的同时 , 能够按照 Facet 的字段进行分组并统计.        比如你上淘宝, ...

  3. PHP操作Redis(一) PHP连接Redis,含Redis密码验证、指定某一Redis数据库

    台服务器上都快开启200个redis实例了,看着就崩溃了.这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开. 那么,redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实 ...

  4. leetcode216

    public class Solution { public IList<IList<int>> CombinationSum3(int k, int n) { , , , , ...

  5. day16-作业 后台管理

    二话不说开撸作业 作业要求: 后台管理平台 ,编辑表格:1. 非编辑模式:可对每行进行选择: 反选: 取消选择2. 编辑模式:进入编辑模式时如果行被选中,则被选中的行万变为可编辑状态,未选中的不改变退 ...

  6. PHP的Enum(枚举)的实现

    转载请保留原文地址:http://www.cnblogs.com/zsxfbj/p/php_enum.html PHP其实有Enum类库的,需要安装perl扩展,所以不是php的标准扩展,因此代码的实 ...

  7. android 拍照+拍照button 以及返回按钮布局

    公司最近做一个项目拍照总是崩溃,所以决定自己写一个拍照的方法,在网上调研一番,写了一个简单demo,现共享如下 主要CameraActivity CameraActivity package com. ...

  8. elasticsearch配置小记(转)

    原文  http://bigbo.github.io/pages/2015/04/10/elasticsearch_config/ 基于 elasticsearch 1.4.4 版本.安装方式为RPM ...

  9. 【HDU5857】Median

    题意 给出一个长度为n的有序序列.给出m个询问,每个询问包括四个正整数l1,r1,l2,r2你用l1tor1的和l2tor2的元素来组成一个新的序列,然后找出这个序列的中位数. 分析 这是当时Spri ...

  10. selenium2 用Yaml文件进行元素管理 (五)

    比如界面有一个按钮,id号是test.如果进行对象化的话,就是test.click就可以了.不用每次都要去创建test对象.如果id号变了,我们也只需要改一下test的名称就行了. 使用Yaml需要用 ...