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. IntelliJ IDEA 安装 Julia 插件

    打开 IntelliJ IDEA 点击 Configure 选择 Plugins 然后点击 Browse repositories 搜索 Julia,然后点击 Install 进行安装 安装完重启一下 ...

  2. C# IP地址去掉端口号

    string Ip1 = "192.168.0.199:7777"; string Ip2 = Ip1.Remove(Ip1.IndexOf(':'));

  3. 3.solr学习速成之索引添加 查询 删除

    solrserver.java public class solrServer { private solrServer(){}; final static String SOLR_URL = &qu ...

  4. Halcon学习之文本操作

    1.          新建文本文件open_file ( : : FileName, FileType : FileHandle ) 创建 ( 'output' or 'append' )或者打开  ...

  5. WebRTC相关的基础知识点

    这里主要用来记录自己整理的和webRTC相关的一些基本的知识点,后续整理的一些基础和零碎的知识点都会更新在这里.内容大部分来自于webRTC官网.w3c以及一些前辈们的博客中的文章和相关书籍等. 20 ...

  6. Python 的mock模拟测试介绍

    如何不靠耐心测试 可能我们正在写一个社交软件并且想测试一下"发布到Facebook的功能",但是我们不希望每次运行测试集的时候都发布到Facebook上. Python的unitt ...

  7. InputStreamReader和BufferedReader的区别

    .InputStream.OutputStream 处理字节流的抽象类 InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等. OutputSt ...

  8. 21-从零玩转JavaWeb-多态详解

    配套视频详解 多态思想 eclipse快捷键设置 多态的好处 多态方法调用 instanceof关键字 多态中字段注意点 一.什么是多态   既然子类是一种特殊的父类   那么我们可不可以认为   狗 ...

  9. Properties & Method

    [Properties] 1.lazy property,通过@property来定义, lazy property的属性直到使用的时候才初始化: 2.Computed Properties: 2.对 ...

  10. Flask 上下文(Context)原理解析

    :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { border: 0; m ...