CF2122F.Colorful Polygon

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个数组 a1,a2,…,ana_1, a_2, \ldots, a_n,其中 n≤8n \leq 8,并且 a1+a2+⋯+an≤100a_1 + a_2 + \cdots + a_n \leq 100。

请你构造一个简单多边形 ∗^{\text{∗}},顶点数不超过 333333,使得它恰好有

(a1+a2+⋯+an)!a1!a2!⋯an!\frac{(a_1 + a_2 + \cdots + a_n)!}{a_1! a_2! \cdots a_n!}

种不同的三角剖分 †^{\text{†}}。可以证明总是存在这样的多边形。

∗^{\text{∗}} 一个简单多边形是指没有自交且没有洞的多边形。换句话说,任意两条非相邻边没有公共点,相邻边恰好有一个公共点(即它们之间的顶点)。相邻边可以共线。

†^{\text{†}} 一个多边形的三角剖分是指选出 m−3m-3 条对角线(mm 为顶点数),这些对角线只在顶点处相交。对角线是指多边形内部连接两个顶点的线段,且仅与多边形的边在端点处重合。

输入格式

每个测试用例的第一行包含一个整数 nn(2≤n≤82 \leq n \leq 8),表示数组的元素个数。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1001 \leq a_i \leq 100),表示数组元素。

保证 a1+a2+⋯+an≤100a_1 + a_2 + \cdots + a_n \leq 100。

输出格式

第一行输出一个整数 mm(3≤m≤3333 \leq m \leq 333),表示多边形的顶点数。

接下来 mm 行,每行两个整数 xi,yix_i, y_i(−106≤xi,yi≤106-10^6 \leq x_i, y_i \leq 10^6),表示第 ii 个顶点的坐标。

多边形必须是简单多边形。顶点顺序可以是顺时针也可以是逆时针。

输入输出样例

  • 输入#1

    3
    1 1 2

    输出#1

    8
    0 0
    2 1
    4 2
    6 1
    3 5
    4 7
    0 5
    1 2
  • 输入#2

    2
    4 1

    输出#2

    5
    -2 -2
    -3 1
    0 3
    3 1
    2 -2

说明/提示

在第一个样例中,所需多边形必须有 4!1!1!2!=12\tfrac{4!}{1! 1! 2!} = 12 种三角剖分。下图展示了该多边形的所有三角剖分:

在第二个样例中,所需多边形必须有 5!4!1!=5\tfrac{5!}{4! 1!} = 5 种三角剖分。

翻译由 ChatGPT-4.1 完成。

输入解题思路,AI测评打分。不知道怎么写?

首页